From f5f7c246c27e710bc09b055f909f591cb0876d9f Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Thu, 13 Aug 2026 07:36:01 -0400 Subject: [PATCH 1/8] Add reusable documentation toolkit --- .github/workflows/deploy.yml | 4 +- .github/workflows/preview.yml | 12 +- .github/workflows/publish.yml | 37 +- README.md | 27 +- e2e/package-lock.json | 24 + e2e/package.json | 3 +- e2e/playwright.config.ts | 6 +- e2e/tests/docs.spec.ts | 612 ++- sln/FSharp.ViewEngine.slnx | 1 + sln/src/Benchmarks/Workloads.fs | 14 + sln/src/Build/PackageVerification.fs | 118 +- sln/src/Build/Program.fs | 49 +- sln/src/Docs.Tests/Program.fs | 200 +- sln/src/Docs/Docs.fsproj | 5 + sln/src/Docs/input.css | 1026 +++++ sln/src/Docs/src/Common/Handler.fs | 27 +- sln/src/Docs/src/Common/Model.fs | 6 +- sln/src/Docs/src/Common/SourceRegion.fs | 51 + sln/src/Docs/src/Common/View.fs | 591 +-- sln/src/Docs/src/Pages/Alpine.fs | 46 +- sln/src/Docs/src/Pages/Changelog.fs | 14 + sln/src/Docs/src/Pages/CoreGuides.fs | 206 + sln/src/Docs/src/Pages/Custom.fs | 2 +- sln/src/Docs/src/Pages/Datastar.fs | 45 +- sln/src/Docs/src/Pages/Home.fs | 70 +- sln/src/Docs/src/Pages/Htmx.fs | 44 +- sln/src/Docs/src/Pages/Installation.fs | 4 +- sln/src/Docs/src/Pages/Registry.fs | 28 +- sln/src/Docs/src/Pages/Showcase.fs | 541 +++ sln/src/Docs/src/Pages/Svg.fs | 233 +- sln/src/Docs/src/Pages/TailwindElements.fs | 141 +- sln/src/Docs/src/Pages/Usage.fs | 37 +- sln/src/Docs/wwwroot/css/output.css | 2 +- .../wwwroot/css/prism-tomorrow.1.29.0.min.css | 1 + sln/src/Docs/wwwroot/fonts/OFL.txt | 93 + .../fonts/noto-sans-latin-italic.woff2 | Bin 0 -> 39604 bytes .../Docs/wwwroot/fonts/noto-sans-latin.woff2 | Bin 0 -> 35856 bytes .../wwwroot/fonts/noto-sans-mono-latin.woff2 | Bin 0 -> 32072 bytes .../wwwroot/scripts/mermaid.11.16.0.min.js | 3587 +++++++++++++++++ .../scripts/prism-fsharp.1.29.0.min.js | 1 + .../wwwroot/scripts/prism-sql.1.29.0.min.js | 1 + .../Docs/wwwroot/scripts/prism.1.29.0.min.js | 1 + sln/src/Docs/wwwroot/social-card.png | Bin 0 -> 696366 bytes .../FSharp.ViewEngine.Docs/ApiReference.fs | 198 + sln/src/FSharp.ViewEngine.Docs/Builders.fs | 114 + .../FSharp.ViewEngine.Docs/DefaultStyles.fs | 22 + .../FSharp.ViewEngine.Docs/DirectedGraph.fs | 58 + sln/src/FSharp.ViewEngine.Docs/Document.fs | 164 + .../FSharp.ViewEngine.Docs.fsproj | 43 + sln/src/FSharp.ViewEngine.Docs/Navigation.fs | 176 + sln/src/FSharp.ViewEngine.Docs/README.md | 234 ++ sln/src/FSharp.ViewEngine.Docs/Registry.fs | 63 + sln/src/FSharp.ViewEngine.Docs/Search.fs | 92 + .../FSharp.ViewEngine.Docs/SequenceDiagram.fs | 141 + sln/src/FSharp.ViewEngine.Docs/Story.fs | 53 + sln/src/FSharp.ViewEngine.Docs/Target.fs | 56 + .../FSharp.ViewEngine.Docs/ValidationIssue.fs | 12 + sln/src/FSharp.ViewEngine.Docs/View.fs | 928 +++++ sln/src/FSharp.ViewEngine.Docs/Wireframe.fs | 166 + sln/src/FSharp.ViewEngine/Core.fs | 43 + sln/src/FSharp.ViewEngine/Html.fs | 12 + sln/src/Tests/CoreTests.fs | 17 + sln/src/Tests/DocsTests.fs | 446 ++ sln/src/Tests/Program.fs | 1 + sln/src/Tests/Tests.fsproj | 2 + 65 files changed, 10254 insertions(+), 697 deletions(-) create mode 100644 sln/src/Docs/src/Common/SourceRegion.fs create mode 100644 sln/src/Docs/src/Pages/CoreGuides.fs create mode 100644 sln/src/Docs/src/Pages/Showcase.fs create mode 100644 sln/src/Docs/wwwroot/css/prism-tomorrow.1.29.0.min.css create mode 100644 sln/src/Docs/wwwroot/fonts/OFL.txt create mode 100644 sln/src/Docs/wwwroot/fonts/noto-sans-latin-italic.woff2 create mode 100644 sln/src/Docs/wwwroot/fonts/noto-sans-latin.woff2 create mode 100644 sln/src/Docs/wwwroot/fonts/noto-sans-mono-latin.woff2 create mode 100644 sln/src/Docs/wwwroot/scripts/mermaid.11.16.0.min.js create mode 100644 sln/src/Docs/wwwroot/scripts/prism-fsharp.1.29.0.min.js create mode 100644 sln/src/Docs/wwwroot/scripts/prism-sql.1.29.0.min.js create mode 100644 sln/src/Docs/wwwroot/scripts/prism.1.29.0.min.js create mode 100644 sln/src/Docs/wwwroot/social-card.png create mode 100644 sln/src/FSharp.ViewEngine.Docs/ApiReference.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/Builders.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/DefaultStyles.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/DirectedGraph.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/Document.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/FSharp.ViewEngine.Docs.fsproj create mode 100644 sln/src/FSharp.ViewEngine.Docs/Navigation.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/README.md create mode 100644 sln/src/FSharp.ViewEngine.Docs/Registry.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/Search.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/SequenceDiagram.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/Story.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/Target.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/ValidationIssue.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/View.fs create mode 100644 sln/src/FSharp.ViewEngine.Docs/Wireframe.fs create mode 100644 sln/src/Tests/DocsTests.fs diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e594429..2f2f128 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -127,8 +127,8 @@ jobs: - name: Install E2E packages run: npm ci working-directory: ./e2e - - name: Install Firefox - run: npx playwright install --with-deps firefox + - name: Install Playwright browsers + run: npx playwright install --with-deps chromium firefox webkit working-directory: ./e2e - name: Wait for deployed Docs release env: diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index b34a25c..f2018bc 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -31,11 +31,13 @@ jobs: run: ./fake.sh Test working-directory: ./sln - name: Pack - run: dotnet pack src/FSharp.ViewEngine/FSharp.ViewEngine.fsproj --configuration Release --no-restore --output "$RUNNER_TEMP/package" /p:PackageVersion=0.0.0-preview + run: | + dotnet pack src/FSharp.ViewEngine/FSharp.ViewEngine.fsproj --configuration Release --no-restore --output "$RUNNER_TEMP/package" /p:PackageVersion=0.0.0-preview + dotnet pack src/FSharp.ViewEngine.Docs/FSharp.ViewEngine.Docs.fsproj --configuration Release --no-restore --output "$RUNNER_TEMP/package" /p:PackageVersion=0.0.0-preview working-directory: ./sln - name: Verify package compatibility env: - PACKAGE_PATH: ${{ runner.temp }}/package/FSharp.ViewEngine.0.0.0-preview.nupkg + PACKAGE_DIRECTORY: ${{ runner.temp }}/package run: ./fake.sh VerifyPackage --single-target working-directory: ./sln @@ -54,11 +56,11 @@ jobs: - name: Install E2E packages run: npm ci working-directory: ./e2e - - name: Install Firefox - run: npx playwright install --with-deps firefox + - name: Install Playwright browsers + run: npx playwright install --with-deps chromium firefox webkit working-directory: ./e2e - name: Test production Docs image - run: npm test -- --project=firefox + run: npm test working-directory: ./e2e - name: Upload E2E diagnostics if: failure() diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0926560..2dbfdd6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -128,29 +128,40 @@ jobs: organization: meiermade requested-token-type: urn:pulumi:token-type:access_token:personal scope: user:meiermade - - name: Publish verified package + - name: Publish verified packages env: - PACKAGE_PATH: ${{ runner.temp }}/package/FSharp.ViewEngine.${{ needs.package.outputs.version }}.nupkg + PACKAGE_DIRECTORY: ${{ runner.temp }}/package run: | pulumi env run fsharpviewengine/nuget -- \ - bash -euo pipefail -c \ - "dotnet nuget push \"$PACKAGE_PATH\" --source https://api.nuget.org/v3/index.json --api-key \"\$NUGET_API_KEY\" --skip-duplicate" + bash -euo pipefail -c ' + for package in "$PACKAGE_DIRECTORY"/*.nupkg; do + dotnet nuget push "$package" --source https://api.nuget.org/v3/index.json --api-key "$NUGET_API_KEY" --skip-duplicate + done + ' - name: Wait for NuGet availability env: VERSION: ${{ needs.package.outputs.version }} run: | - package_url="https://api.nuget.org/v3-flatcontainer/fsharp.viewengine/$VERSION/fsharp.viewengine.$VERSION.nupkg" + packages=(fsharp.viewengine fsharp.viewengine.docs) - for _ in $(seq 1 60); do - if curl --fail --silent --show-error --output /dev/null "$package_url"; then - echo "FSharp.ViewEngine $VERSION is available from NuGet." - exit 0 + for package in "${packages[@]}"; do + package_url="https://api.nuget.org/v3-flatcontainer/$package/$VERSION/$package.$VERSION.nupkg" + available=false + + for _ in $(seq 1 60); do + if curl --fail --silent --show-error --output /dev/null "$package_url"; then + echo "$package $VERSION is available from NuGet." + available=true + break + fi + sleep 10 + done + + if [[ "$available" != true ]]; then + echo "$package $VERSION was not available from NuGet after 10 minutes." >&2 + exit 1 fi - sleep 10 done - - echo "FSharp.ViewEngine $VERSION was not available from NuGet after 10 minutes." >&2 - exit 1 - name: Create GitHub Release env: GH_TOKEN: ${{ github.token }} diff --git a/README.md b/README.md index c2dc1f2..3352305 100644 --- a/README.md +++ b/README.md @@ -28,13 +28,38 @@ Documentation site built using FSharp.ViewEngine available at [https://fsharpvie Add the core view engine package with your preferred CLI. ```shell -dotnet package add FSharp.ViewEngine +dotnet add package FSharp.ViewEngine ``` ```shell dotnet paket add FSharp.ViewEngine ``` +For documentation sites, API references, and executable software specifications, install the separate add-on package: + +```shell +dotnet add package FSharp.ViewEngine.Docs +``` + +`FSharp.ViewEngine.Docs` provides article, reference, and canvas layouts; configurable navigation; accessible code/preview examples; API documentation components; diagrams; product frames; typed destinations; and structural validation. See its [package documentation](./sln/src/FSharp.ViewEngine.Docs/README.md). + +## Core rendering helpers + +`Render.toString` serializes a fragment; `Render.toHtmlDocString` prepends the HTML5 doctype for a complete document. Additional targets support existing `StringBuilder` and `TextWriter` instances plus UTF-8 bytes: + +```fsharp +let siblings = + Html.fragment [ + span { "One" } + Html.comment "Trusted build marker" + span { "Two" } + ] + +let bytes = Render.toUtf8Bytes siblings +``` + +`Html.comment` rejects invalid HTML comment values containing `--` or ending with `-`. `Html.raw`, `Html.js`, custom markup names, and executable expression attributes remain trusted developer-controlled boundaries. + ## Runtime compatibility The package ships a single `net8.0` compatibility asset and is tested on supported .NET 8, .NET 9, and .NET 10 runtimes. NuGet automatically selects the `net8.0` asset for compatible newer runtimes. diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 7e6fc12..9278a14 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -6,9 +6,23 @@ "": { "name": "fsharp-viewengine-e2e", "devDependencies": { + "@axe-core/playwright": "4.13.0", "@playwright/test": "1.62.1" } }, + "node_modules/@axe-core/playwright": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.13.0.tgz", + "integrity": "sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "axe-core": "~4.13.0" + }, + "peerDependencies": { + "playwright-core": ">= 1.0.0" + } + }, "node_modules/@playwright/test": { "version": "1.62.1", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz", @@ -25,6 +39,16 @@ "node": ">=20" } }, + "node_modules/axe-core": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.13.0.tgz", + "integrity": "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", diff --git a/e2e/package.json b/e2e/package.json index e6b1548..d62db07 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -4,9 +4,10 @@ "type": "module", "scripts": { "test": "playwright test", - "test:published": "E2E_START_LOCAL=0 playwright test --project=firefox --retries=0" + "test:published": "E2E_START_LOCAL=0 playwright test --retries=0" }, "devDependencies": { + "@axe-core/playwright": "4.13.0", "@playwright/test": "1.62.1" } } diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index 6b88e23..2d29636 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -23,7 +23,11 @@ export default defineConfig({ video: 'retain-on-failure', screenshot: 'only-on-failure', }, - projects: [{ name: 'firefox', use: { ...devices['Desktop Firefox'] } }], + projects: [ + { name: 'chromium', use: { ...devices['Desktop Chrome'] } }, + { name: 'firefox', use: { ...devices['Desktop Firefox'] } }, + { name: 'webkit', use: { ...devices['Desktop Safari'] } }, + ], webServer: startLocal ? { command: 'bash scripts/start-local.sh', diff --git a/e2e/tests/docs.spec.ts b/e2e/tests/docs.spec.ts index 725f2e3..af6ae6e 100644 --- a/e2e/tests/docs.spec.ts +++ b/e2e/tests/docs.spec.ts @@ -1,19 +1,36 @@ +import AxeBuilder from '@axe-core/playwright' import { expect, test, type Page } from '@playwright/test' const productionOrigin = 'https://fsharpviewengine.meiermade.com' const routes = [ - { path: '/', heading: 'FSharp.ViewEngine' }, - { path: '/installation', heading: 'Installation' }, - { path: '/custom', heading: 'Custom Elements & Attributes' }, - { path: '/usage', heading: 'Usage' }, - { path: '/extensions/alpine', heading: 'Alpine.js' }, - { path: '/extensions/datastar', heading: 'Datastar' }, - { path: '/extensions/htmx', heading: 'HTMX' }, - { path: '/extensions/svg', heading: 'SVG' }, - { path: '/extensions/tailwind-elements', heading: 'Tailwind Plus Elements' }, - { path: '/benchmarks', heading: 'Benchmarks' }, - { path: '/changelog', heading: 'Changelog' }, + { path: '/', heading: 'FSharp.ViewEngine', layout: 'article' }, + { path: '/installation', heading: 'Installation', layout: 'article' }, + { path: '/getting-started/first-view', heading: 'Build your first view', layout: 'article' }, + { path: '/guides/elements-and-attributes', heading: 'Elements and attributes', layout: 'article' }, + { path: '/guides/composition-and-control-flow', heading: 'Composition and control flow', layout: 'article' }, + { path: '/guides/rendering', heading: 'Rendering', layout: 'article' }, + { path: '/guides/encoding-and-trusted-content', heading: 'Encoding and trusted content', layout: 'article' }, + { path: '/guides/accessibility', heading: 'Accessibility', layout: 'article' }, + { path: '/custom', heading: 'Custom Elements & Attributes', layout: 'article' }, + { path: '/usage', heading: 'Giraffe', layout: 'article' }, + { path: '/extensions/alpine', heading: 'Alpine.js', layout: 'article' }, + { path: '/extensions/datastar', heading: 'Datastar', layout: 'article' }, + { path: '/extensions/htmx', heading: 'HTMX', layout: 'article' }, + { path: '/extensions/svg', heading: 'SVG', layout: 'article' }, + { path: '/extensions/tailwind-elements', heading: 'Tailwind Plus Elements', layout: 'article' }, + { path: '/docs', heading: 'FSharp.ViewEngine.Docs', layout: 'article' }, + { path: '/docs/components/layouts', heading: 'Layouts', layout: 'article' }, + { path: '/docs/components/content', heading: 'Content', layout: 'article' }, + { path: '/docs/components/navigation', heading: 'Navigation', layout: 'article' }, + { path: '/docs/components/interactive-examples', heading: 'Interactive examples', layout: 'article' }, + { path: '/docs/components/api-reference', heading: 'API reference components', layout: 'article' }, + { path: '/docs/components/diagrams', heading: 'Diagrams', layout: 'article' }, + { path: '/docs/page-examples/documentation-site', heading: 'Documentation site', layout: 'article' }, + { path: '/docs/page-examples/api-reference', heading: 'API reference page', layout: 'article' }, + { path: '/docs/page-examples/executable-specification', heading: 'Executable specification page', layout: 'article' }, + { path: '/benchmarks', heading: 'Benchmarks', layout: 'article' }, + { path: '/changelog', heading: 'Changelog', layout: 'article' }, ] function captureBrowserErrors(page: Page) { @@ -33,11 +50,12 @@ test.describe('public documentation routes', () => { expect(response?.status(), `${route.path} status`).toBe(200) const serverHtml = await response!.text() - expect(serverHtml, `${route.path} server-rendered article`).toContain('
') + expect(serverHtml, `${route.path} server-rendered main content`).toContain('') - await expect(page.getByRole('heading', { level: 1, name: route.heading, exact: true })).toBeVisible() - await expect(page.locator('article')).toBeVisible() - const canonicalURL = route.path === '/' ? productionOrigin : `${productionOrigin}${route.path}` + await expect(page.getByRole('heading', { level: 1, name: route.heading, exact: true })).toHaveCount(1) + await expect(page.locator('main.spec-main')).toBeVisible() + await expect(page.locator(`.docs-${route.layout}-layout`)).toBeVisible() + const canonicalURL = route.path === '/' ? `${productionOrigin}/` : `${productionOrigin}${route.path}` await expect(page.locator('link[rel="canonical"]')).toHaveAttribute('href', canonicalURL) expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) expect(browserErrors, `${route.path} browser errors`).toEqual([]) @@ -45,6 +63,77 @@ test.describe('public documentation routes', () => { } }) +test('legacy Docs catalog routes remain aliases with canonical destinations', async ({ page }) => { + const aliases = [ + ['/docs/components', '/docs/components/layouts'], + ['/docs-components', '/docs/components/layouts'], + ['/docs/examples/api-reference', '/docs/page-examples/api-reference'], + ['/api-reference/render-to-string', '/docs/page-examples/api-reference'], + ['/docs/examples/executable-specification', '/docs/page-examples/executable-specification'], + ['/specification/render-a-view', '/docs/page-examples/executable-specification'], + ] as const + + for (const [alias, canonicalPath] of aliases) { + const response = await page.goto(alias, { waitUntil: 'domcontentloaded' }) + expect(response?.status(), alias).toBe(200) + await expect(page.locator('link[rel="canonical"]')).toHaveAttribute('href', `${productionOrigin}${canonicalPath}`) + } +}) + +test('canonical routes expose valid same-origin links, assets, and lazy previews', async ({ page, request }) => { + const checked = new Map() + + for (const route of routes) { + await page.goto(route.path, { waitUntil: 'domcontentloaded' }) + const references = await page.locator('a[href], img[src], script[src], link[href], iframe[data-docs-preview-src]').evaluateAll(elements => + elements.map(element => + element.getAttribute('href') ?? element.getAttribute('src') ?? element.getAttribute('data-docs-preview-src') ?? '', + ), + ) + + for (const reference of references) { + if (!reference || reference.startsWith('#') || reference.startsWith('mailto:') || reference.startsWith('tel:')) continue + const url = new URL(reference, page.url()) + if (url.origin !== new URL(page.url()).origin) continue + url.hash = '' + const path = `${url.pathname}${url.search}` + if (checked.has(path)) continue + const response = await request.get(path) + checked.set(path, response.status()) + expect(response.status(), `${route.path} -> ${path}`).toBeLessThan(400) + } + } + + expect(checked.size).toBeGreaterThan(routes.length) +}) + +test.describe('automated accessibility checks', () => { + const scan = async (page: Page, context: string) => { + const results = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']) + .analyze() + expect(results.violations, context).toEqual([]) + } + + test('representative article and catalog routes pass WCAG A/AA scans', async ({ page }) => { + for (const route of ['/', '/getting-started/first-view', '/docs/components/content']) { + await page.goto(route, { waitUntil: 'domcontentloaded' }) + await scan(page, route) + } + }) + + test('search and mobile navigation open states pass WCAG A/AA scans', async ({ page }) => { + await page.goto('/', { waitUntil: 'domcontentloaded' }) + await page.getByRole('button', { name: 'Search documentation' }).click() + await scan(page, 'search dialog') + await page.keyboard.press('Escape') + + await page.setViewportSize({ width: 390, height: 844 }) + await page.getByRole('button', { name: 'Open navigation' }).click() + await scan(page, 'mobile navigation') + }) +}) + test('health and pinned application assets are available', async ({ request }) => { const health = await request.get('/health') expect(health.status()).toBe(200) @@ -64,37 +153,463 @@ test('health and pinned application assets are available', async ({ request }) = expect(css.status()).toBe(200) expect(await css.text()).toContain('tailwindcss v4.3.3') - const datastar = await request.get('/scripts/datastar.1.0.2.js') - expect(datastar.status()).toBe(200) - expect(await datastar.text()).toContain('Datastar v1.0.2') + const assets = [ + ['/scripts/datastar.1.0.2.js', 'Datastar v1.0.2'], + ['/scripts/mermaid.11.16.0.min.js', 'mermaid'], + ['/scripts/prism.1.29.0.min.js', 'Prism'], + ['/scripts/prism-fsharp.1.29.0.min.js', 'fsharp'], + ['/css/prism-tomorrow.1.29.0.min.css', 'code[class*=language-]'], + ['/fonts/noto-sans-latin.woff2', 'wOF2'], + ['/fonts/noto-sans-mono-latin.woff2', 'wOF2'], + ] as const + + for (const [path, marker] of assets) { + const response = await request.get(path) + expect(response.status(), path).toBe(200) + expect((await response.text()).toLowerCase(), path).toContain(marker.toLowerCase()) + } +}) + +test('search filters pages and headings with keyboard access', async ({ page }) => { + await page.goto('/', { waitUntil: 'domcontentloaded' }) + await page.keyboard.press(process.platform === 'darwin' ? 'Meta+K' : 'Control+K') + + const dialog = page.getByRole('dialog', { name: 'Search documentation' }) + await expect(dialog).toBeVisible() + const input = dialog.getByRole('searchbox') + await expect(input).toBeFocused() + await input.fill('Rendering') + const visible = dialog.locator('[data-docs-search-entry]:visible') + await expect(visible).not.toHaveCount(0) + await expect(visible.first()).toHaveAttribute('href', /guides\/rendering/) +}) + +test('getting started shows the product logo and Tailwind Sky accents', async ({ page }) => { + await page.goto('/', { waitUntil: 'domcontentloaded' }) + const logo = page.locator('.docs-home-logo img') + await expect(logo).toBeVisible() + await expect(logo).toHaveAttribute('src', '/logo.svg') + await expect(page.getByRole('heading', { level: 1, name: 'FSharp.ViewEngine' })).toHaveCount(1) + const accent = await page.locator('html').evaluate(element => getComputedStyle(element).getPropertyValue('--spec-accent-500').trim()) + expect(accent).toBe('#0ea5e9') +}) + +test('repository action and code typography stay compact', async ({ page }) => { + await page.goto('/', { waitUntil: 'domcontentloaded' }) + + const repository = page.getByRole('link', { name: 'View repository on GitHub' }) + await expect(repository).toBeVisible() + await expect(repository.locator('svg')).toHaveCount(1) + await expect(repository).not.toContainText('Repository') + + const paragraph = page.locator('.spec-paragraph').first() + await expect(paragraph).toBeVisible() + expect(await paragraph.evaluate(element => getComputedStyle(element).fontSize)).toBe('16px') + expect(await paragraph.evaluate(element => getComputedStyle(element).fontFamily)).toContain('Noto Sans') - const alpine = await request.get('/scripts/alpinejs.3.15.12.min.js') - expect(alpine.status()).toBe(404) + const code = page.locator('.spec-code code').first() + await expect(code).toBeVisible() + expect(await code.evaluate(element => getComputedStyle(element).fontSize)).toBe('13px') + expect(await code.evaluate(element => getComputedStyle(element).fontFamily)).toContain('Noto Sans Mono') + expect(Number.parseFloat(await code.evaluate(element => getComputedStyle(element).lineHeight))).toBeCloseTo(20.15, 1) }) -test('mobile navigation opens, closes, and does not overflow', async ({ page }) => { +test('color mode selector supports persistence, keyboard navigation, and system changes', async ({ page }) => { + await page.emulateMedia({ colorScheme: 'light' }) + await page.goto('/docs/components/layouts', { waitUntil: 'domcontentloaded' }) + await page.evaluate(() => localStorage.removeItem('fsharp-viewengine-docs-navigation-color-mode')) + await page.reload({ waitUntil: 'domcontentloaded' }) + + const trigger = page.getByRole('button', { name: 'Choose color theme' }) + await trigger.click() + const menu = page.getByRole('menu', { name: 'Color theme' }) + await expect(menu).toBeVisible() + await expect(page.getByRole('menuitemradio', { name: 'System' })).toHaveAttribute('aria-checked', 'true') + + await page.getByRole('menuitemradio', { name: 'Dark' }).click() + await expect(page.locator('html')).toHaveClass(/dark/) + expect(await page.evaluate(() => localStorage.getItem('fsharp-viewengine-docs-navigation-color-mode'))).toBe('dark') + await expect(trigger).toBeFocused() + + await page.locator('#nav-installation').click() + await expect(page).toHaveURL('/installation') + await expect(page.getByRole('heading', { level: 1, name: 'Installation' })).toBeVisible() + await expect(page.locator('html')).toHaveClass(/dark/) + + await page.reload({ waitUntil: 'domcontentloaded' }) + await expect(page.locator('html')).toHaveClass(/dark/) + + await trigger.press('ArrowDown') + const system = page.getByRole('menuitemradio', { name: 'System' }) + const light = page.getByRole('menuitemradio', { name: 'Light' }) + await expect(system).toBeFocused() + await system.press('ArrowDown') + await expect(light).toBeFocused() + await light.press('Enter') + await expect(page.locator('html')).not.toHaveClass(/dark/) + + await trigger.click() + await system.click() + await page.emulateMedia({ colorScheme: 'dark' }) + await expect(page.locator('html')).toHaveClass(/dark/) + await page.emulateMedia({ colorScheme: 'light' }) + await expect(page.locator('html')).not.toHaveClass(/dark/) +}) + +test('mobile navigation manages modal focus and does not overflow', async ({ page }) => { await page.setViewportSize({ width: 390, height: 844 }) await page.goto('/', { waitUntil: 'domcontentloaded' }) - const drawer = page.locator('[data-show="$mobileNavOpen"]') + const drawer = page.locator('#side-nav') + const opener = page.getByRole('button', { name: 'Open navigation' }) + const close = page.getByRole('button', { name: 'Close navigation', exact: true }) await expect(drawer).toBeHidden() - await page.getByRole('button', { name: 'Open navigation' }).click() + await opener.click() await expect(drawer).toBeVisible() + await expect(close).toBeFocused() + await expect(page.locator('#page-content')).toHaveAttribute('inert', '') + + await close.press('Shift+Tab') + await expect(drawer.locator('#nav-project')).toBeFocused() + await page.keyboard.press('Tab') + await expect(close).toBeFocused() + await page.keyboard.press('Escape') await expect(drawer).toBeHidden() + await expect(opener).toBeFocused() + await expect(page.locator('#page-content')).not.toHaveAttribute('inert', '') - await page.getByRole('button', { name: 'Open navigation' }).click() - await expect(drawer).toBeVisible() - await page.locator('#mobile-navigation-backdrop').click({ position: { x: 380, y: 400 } }) + await opener.click() + await page.locator('.spec-overlay').click({ position: { x: 380, y: 400 } }) await expect(drawer).toBeHidden() + await expect(opener).toBeFocused() - await page.getByRole('button', { name: 'Open navigation' }).click() - await page.getByRole('button', { name: 'Close navigation' }).click() + await opener.click() + await close.click() await expect(drawer).toBeHidden() + await expect(opener).toBeFocused() expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) }) +test('desktop table of contents tracks the visible section and survives Docs navigation', async ({ page }) => { + await page.setViewportSize({ width: 1440, height: 1000 }) + await page.goto('/custom', { waitUntil: 'domcontentloaded' }) + + const main = page.locator('.spec-main') + const target = page.locator('#shoelace-example') + await main.evaluate(element => element.scrollTo({ top: element.scrollHeight, behavior: 'instant' })) + await expect(page.locator('.spec-toc a[href="#shoelace-example"]')).toHaveAttribute('aria-current', 'location') + + await page.locator('#nav-accessibility').click() + await expect(page).toHaveURL('/guides/accessibility') + await expect(page.locator('.spec-toc a[href="#overview"]')).toHaveAttribute('aria-current', 'location') +}) + +test('mobile table of contents is a compact keyboard-operable disclosure', async ({ page }) => { + await page.setViewportSize({ width: 390, height: 844 }) + await page.goto('/custom', { waitUntil: 'domcontentloaded' }) + + const toc = page.getByRole('group', { name: 'On this page' }) + const summary = toc.locator('summary') + await expect(toc).toBeVisible() + await expect(toc).not.toHaveAttribute('open', '') + await summary.press('Enter') + await expect(toc).toHaveAttribute('open', '') + await toc.getByRole('link', { name: 'Shoelace Example' }).click() + await expect(page).toHaveURL('/custom#shoelace-example') + await expect(toc).not.toHaveAttribute('open', '') + await expect(page.locator('#shoelace-example')).toBeFocused() + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) +}) + +test('on-this-page links scroll the nested documentation viewport', async ({ page }) => { + await page.setViewportSize({ width: 1440, height: 1000 }) + await page.goto('/custom', { waitUntil: 'domcontentloaded' }) + + const main = page.locator('.spec-main') + const target = page.locator('#shoelace-example') + await page.locator('.spec-toc a[href="#shoelace-example"]').click() + + await expect(page).toHaveURL('/custom#shoelace-example') + await expect.poll(() => main.evaluate(element => element.scrollTop)).toBeGreaterThan(0) + await expect.poll(async () => (await target.boundingBox())!.y).toBeLessThan(1000) +}) + +test('Docs navigation scrolls content to top and highlights morphed code', async ({ page }) => { + await page.goto('/extensions/svg', { waitUntil: 'domcontentloaded' }) + const main = page.locator('.spec-main') + await main.evaluate(element => element.scrollTo({ top: element.scrollHeight })) + expect(await main.evaluate(element => element.scrollTop)).toBeGreaterThan(0) + + await page.locator('#nav-core-concepts').click() + await page.locator('#nav-custom').click() + await expect(page).toHaveURL('/custom') + await expect(page.getByRole('heading', { level: 1, name: 'Custom Elements & Attributes' })).toBeVisible() + await expect.poll(() => main.evaluate(element => element.scrollTop)).toBe(0) + await expect(page.locator('.spec-code .token.keyword').first()).toBeVisible() +}) + +test('code blocks copy their literal source', async ({ page }) => { + await page.goto('/getting-started/first-view', { waitUntil: 'domcontentloaded' }) + await page.evaluate(() => { + Object.defineProperty(navigator, 'clipboard', { configurable: true, value: { writeText: async (value: string) => { (window as any).__copiedSource = value } } }) + }) + const block = page.locator('.docs-copyable-code').first() + await block.getByRole('button', { name: 'Copy code' }).click() + await expect(block.getByRole('button', { name: 'Copy code' })).toContainText('Copied') + expect(await page.evaluate(() => (window as any).__copiedSource)).toContain('let greeting') +}) + +test('code and preview examples support pointer and keyboard tabs', async ({ page }) => { + await page.goto('/extensions/svg', { waitUntil: 'domcontentloaded' }) + const example = page.locator('[data-docs-example="true"]').first() + const preview = example.getByRole('tab', { name: 'Preview' }) + const code = example.getByRole('tab', { name: 'Code' }) + + await expect(code).toHaveAttribute('aria-selected', 'true') + expect((await code.boundingBox())!.x).toBeLessThan((await preview.boundingBox())!.x) + await expect(example.getByRole('tabpanel', { name: 'Code' })).toBeVisible() + await expect(example.locator('.token.keyword').first()).toBeVisible() + await preview.click() + await expect(example.getByRole('tabpanel', { name: 'Preview' })).toBeVisible() + await preview.press('ArrowLeft') + await expect(code).toBeFocused() + await expect(code).toHaveAttribute('aria-selected', 'true') +}) + +test('inline prose links are visually identifiable and article pagers continue the learning path', async ({ page }) => { + await page.goto('/', { waitUntil: 'domcontentloaded' }) + const installation = page.getByRole('link', { name: 'Installation', exact: true }).last() + await expect(installation).toHaveCSS('text-decoration-line', 'underline') + await expect(installation).toHaveCSS('font-weight', '600') + + await page.goto('/docs', { waitUntil: 'domcontentloaded' }) + await expect(page.getByText('This documentation site is built with FSharp.ViewEngine.Docs', { exact: false })).toBeVisible() + const pager = page.getByRole('navigation', { name: 'Page navigation' }) + await expect(page.getByRole('link', { name: 'Browse components' })).toHaveAttribute('href', '/docs/components/layouts') + await expect(page.getByRole('link', { name: 'Browse page examples' })).toHaveAttribute('href', '/docs/page-examples/documentation-site') + const next = pager.getByRole('link', { name: /Next Layouts/ }) + await expect(next).toBeVisible() + await next.click() + await expect(page).toHaveURL('/docs/components/layouts') + await expect(page.getByRole('heading', { level: 1, name: 'Layouts' })).toBeVisible() +}) + +test('Tailwind Plus Elements previews render and operate the actual custom elements', async ({ page }) => { + const browserErrors = captureBrowserErrors(page) + await page.goto('/extensions/svg', { waitUntil: 'domcontentloaded' }) + await page.locator('#nav-tailwind-elements').click() + await expect(page).toHaveURL('/extensions/tailwind-elements') + await page.waitForFunction(() => Boolean(customElements.get('el-autocomplete'))) + + const ids = ['autocomplete', 'command-palette', 'copy-button', 'dialog', 'disclosure', 'dropdown-menu', 'popover', 'select', 'tabs'] + for (const id of ids) { + const example = page.locator(`[data-docs-example="true"]:has(#tailwind-elements-${id}-tab-preview)`) + await example.getByRole('tab', { name: 'Preview' }).click() + await expect(example.getByRole('tabpanel', { name: 'Preview' })).toBeVisible() + } + + const autocomplete = page.locator('[data-docs-example="true"]:has(#tailwind-elements-autocomplete-tab-preview)') + const autocompleteSurface = autocomplete.locator('[data-example-surface="true"]') + const options = autocomplete.locator('el-options') + await expect(autocompleteSurface).toHaveCSS('background-color', 'rgb(250, 250, 250)') + await expect(options).toBeHidden() + await autocomplete.getByRole('button', { name: 'Show people' }).click() + await expect(options).toBeVisible() + await expect(options).toHaveAttribute('role', 'listbox') + + const disclosure = page.locator('[data-docs-example="true"]:has(#tailwind-elements-disclosure-tab-preview)') + const disclosureButton = disclosure.getByRole('button', { name: 'What does the answer mean?' }) + await disclosureButton.click() + await expect(disclosure.locator('el-disclosure')).toBeVisible() + await expect(disclosureButton.locator('svg')).toHaveCSS('transform', 'matrix(-1, 0, 0, -1, 0, 0)') + + const popover = page.locator('[data-docs-example="true"]:has(#tailwind-elements-popover-tab-preview)') + const popoverButton = popover.getByRole('button', { name: 'Account' }) + await popoverButton.click() + const popoverPanel = popover.locator('el-popover') + await expect(popoverPanel).toBeVisible() + const popoverButtonBox = await popoverButton.boundingBox() + const popoverPanelBox = await popoverPanel.boundingBox() + expect(popoverButtonBox).not.toBeNull() + expect(popoverPanelBox).not.toBeNull() + expect(popoverPanelBox!.x).toBeGreaterThanOrEqual(popoverButtonBox!.x - 1) + expect(popoverPanelBox!.y).toBeGreaterThan(popoverButtonBox!.y) + await page.keyboard.press('Escape') + + const dialogExample = page.locator('[data-docs-example="true"]:has(#tailwind-elements-dialog-tab-preview)') + await dialogExample.getByRole('button', { name: 'Delete profile' }).click() + const dialogPanel = page.locator('#preview-delete-profile el-dialog-panel') + await expect(dialogPanel).toBeVisible() + await expect(dialogPanel).not.toHaveAttribute('data-closed', '') + await expect(dialogPanel).toHaveCSS('opacity', '1') + const dialogPanelBox = await dialogPanel.boundingBox() + expect(dialogPanelBox).not.toBeNull() + expect(dialogPanelBox!.x).toBeGreaterThan(100) + expect(dialogPanelBox!.y).toBeGreaterThan(100) + await page.keyboard.press('Escape') + + const tabs = page.locator('[data-docs-example="true"]:has(#tailwind-elements-tabs-tab-preview)') + const accountTab = tabs.getByRole('tab', { name: 'Account' }) + const securityTab = tabs.getByRole('tab', { name: 'Security' }) + await securityTab.click() + await expect(tabs.getByRole('tabpanel', { name: 'Security' })).toBeVisible() + await expect(accountTab).toHaveCSS('border-bottom-color', 'rgba(0, 0, 0, 0)') + await expect(securityTab).toHaveCSS('border-bottom-color', 'rgb(14, 165, 233)') + + await page.evaluate(() => document.documentElement.classList.add('dark')) + await expect(autocompleteSurface).toHaveCSS('background-color', 'rgb(17, 17, 17)') + await expect(autocomplete.locator('input')).toHaveCSS('background-color', 'rgb(31, 31, 31)') + expect(browserErrors).toEqual([]) +}) + +test('visual SVG examples provide rendered previews', async ({ page }) => { + await page.goto('/extensions/svg', { waitUntil: 'domcontentloaded' }) + await expect(page.locator('[data-docs-example="true"]')).toHaveCount(3) + + for (const id of ['svg-icon-example', 'svg-chart-example', 'svg-resources-example']) { + const example = page.locator(`[data-docs-example="true"]:has(#${id}-tab-preview)`) + await example.getByRole('tab', { name: 'Preview' }).click() + await expect(example.getByRole('tabpanel', { name: 'Preview' }).locator('svg')).toBeVisible() + } +}) + +test('diagram previews rerender after their hidden panel becomes visible', async ({ page }) => { + await page.goto('/docs/components/diagrams', { waitUntil: 'domcontentloaded' }) + const example = page.locator('[data-docs-example="true"]:has(#docs-mermaid-example-tab-preview)') + await example.getByRole('tab', { name: 'Preview' }).click() + const preview = example.locator('iframe').contentFrame() + const diagram = preview.locator('.mermaid svg') + await expect(diagram).toBeVisible() + await expect.poll(() => diagram.getAttribute('viewBox')).not.toBe('-8 -8 16 16') + expect((await diagram.boundingBox())!.width).toBeGreaterThan(200) +}) + +test('documentation remains readable when text is resized to 200 percent', async ({ page }) => { + await page.setViewportSize({ width: 1280, height: 800 }) + await page.goto('/docs', { waitUntil: 'domcontentloaded' }) + await page.locator('html').evaluate(element => { element.style.fontSize = '200%' }) + + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) + const bounds = await page.evaluate(() => { + const main = document.querySelector('main')!.getBoundingClientRect() + const heading = document.querySelector('h1')!.getBoundingClientRect() + return { mainLeft: main.left, mainRight: main.right, headingLeft: heading.left, headingRight: heading.right } + }) + expect(bounds.headingLeft).toBeGreaterThanOrEqual(bounds.mainLeft) + expect(bounds.headingRight).toBeLessThanOrEqual(bounds.mainRight) +}) + +test('Docs catalog navigation updates articles without a full-page browser error', async ({ page }) => { + const browserErrors = captureBrowserErrors(page) + await page.goto('/docs/page-examples/api-reference', { waitUntil: 'domcontentloaded' }) + await expect(page.locator('#nav-fsharp-viewengine-docs')).toHaveAttribute('aria-expanded', 'true') + await expect(page.locator('#nav-children-fsharp-viewengine-docs > li > #nav-components')).toBeVisible() + await expect(page.locator('#nav-children-fsharp-viewengine-docs > li > #nav-page-examples')).toBeVisible() + await page.locator('#nav-components').click() + await page.locator('#nav-docs-layouts').click() + await expect(page).toHaveURL('/docs/components/layouts') + await expect(page.getByRole('heading', { level: 1, name: 'Layouts' })).toBeVisible() + await expect(page.locator('.docs-article-layout')).toBeVisible() + expect(browserErrors).toEqual([]) +}) + +test('Docs catalog host documents retain one page heading and unique IDs', async ({ page }) => { + const catalogRoutes = routes.filter(route => route.path.startsWith('/docs/components/') || route.path.startsWith('/docs/page-examples/')) + + for (const route of catalogRoutes) { + await page.goto(route.path, { waitUntil: 'domcontentloaded' }) + await expect(page.locator('#page-content h1')).toHaveCount(1) + const duplicateIds = await page.evaluate(() => { + const counts = new Map() + for (const element of document.querySelectorAll('[id]')) { + counts.set(element.id, (counts.get(element.id) ?? 0) + 1) + } + return Array.from(counts.entries()).filter(([, count]) => count > 1) + }) + expect(duplicateIds, route.path).toEqual([]) + } +}) + +test('Docs component and page-example catalogs use source-first code and preview examples', async ({ page }) => { + const browserErrors = captureBrowserErrors(page) + const catalogRoutes = routes.filter(route => route.path.startsWith('/docs/components/') || route.path.startsWith('/docs/page-examples/')) + + for (const route of catalogRoutes) { + await page.goto(route.path, { waitUntil: 'domcontentloaded' }) + const examples = page.locator('[data-docs-example="true"]') + expect(await examples.count(), route.path).toBeGreaterThan(0) + for (const example of await examples.all()) { + await expect(example.getByRole('tab', { name: 'Code' })).toHaveAttribute('aria-selected', 'true') + await example.getByRole('tab', { name: 'Preview' }).click() + await expect(example.getByRole('tabpanel', { name: 'Preview' })).toBeVisible() + } + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth), route.path).toBe(true) + } + expect(browserErrors).toEqual([]) +}) + +test('catalog code is extracted from the same compiled definition as its preview', async ({ page }) => { + await page.goto('/docs/components/interactive-examples', { waitUntil: 'domcontentloaded' }) + const example = page.locator('[data-docs-example="true"]:has(#docs-state-tabs-example-tab-preview)') + const source = await example.getByRole('tabpanel', { name: 'Code' }).innerText() + expect(source).toContain('docsStateTabs "component-workflow-states"') + expect(source).toContain('productScreen "ready"') + expect(source).not.toContain('docsStateTabs "workflow-states"') + + await example.getByRole('tab', { name: 'Preview' }).click() + const preview = example.locator('iframe').contentFrame() + await expect(preview.locator('#component-workflow-states-tab-ready')).toBeVisible() + await expect(preview.locator('input[value="accountSummary"]')).toBeVisible() +}) + +test('benchmark comparison remains legible in light and dark themes', async ({ page }) => { + for (const theme of ['light', 'dark'] as const) { + await page.addInitScript(selected => localStorage.setItem('fsharp-viewengine-docs-navigation-color-mode', selected), theme) + await page.goto('/benchmarks', { waitUntil: 'domcontentloaded' }) + const chart = page.locator('.docs-comparison-chart') + await expect(chart).toBeVisible() + await expect(chart.getByText('Mean duration · Lower is better')).toBeVisible() + const colors = await chart.evaluate(element => { + const style = getComputedStyle(element) + const text = element.querySelector('.docs-comparison-labels strong')! + return { background: style.backgroundColor, text: getComputedStyle(text).color } + }) + expect(colors.background).not.toBe(colors.text) + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) + } +}) + +test('API reference page example renders endpoint and request-response composition', async ({ page }) => { + await page.goto('/docs/page-examples/api-reference', { waitUntil: 'domcontentloaded' }) + const example = page.locator('[data-docs-example="true"]').first() + await example.getByRole('tab', { name: 'Preview' }).click() + const preview = example.locator('iframe').contentFrame() + await expect(preview.locator('[data-http-method="POST"]')).toBeVisible() + await expect(preview.locator('.docs-code-panel')).toHaveCount(2) + + await page.setViewportSize({ width: 390, height: 844 }) + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) +}) + +test('specification page example state tabs support pointer and keyboard navigation', async ({ page }) => { + await page.goto('/docs/page-examples/executable-specification', { waitUntil: 'domcontentloaded' }) + const example = page.locator('[data-docs-example="true"]').first() + await example.getByRole('tab', { name: 'Preview' }).click() + const preview = example.locator('iframe').contentFrame() + const ready = preview.getByRole('tab', { name: 'Ready' }) + const validation = preview.getByRole('tab', { name: 'Validation' }) + + await validation.click() + await expect(validation).toHaveAttribute('aria-selected', 'true') + await expect(preview.getByRole('tabpanel', { name: 'Validation' })).toBeVisible() + + await validation.press('ArrowLeft') + await expect(ready).toBeFocused() + await expect(ready).toHaveAttribute('aria-selected', 'true') +}) + test('benchmark tables remain readable without page overflow on mobile', async ({ page }) => { await page.setViewportSize({ width: 390, height: 844 }) await page.goto('/benchmarks', { waitUntil: 'domcontentloaded' }) @@ -103,29 +618,36 @@ test('benchmark tables remain readable without page overflow on mobile', async ( await expect(comparison).toBeVisible() await expect(comparison).toContainText('FSharp.ViewEngine') await expect(comparison).toContainText('1.35× as long') - await expect(comparison.locator('[style^="width:"]')).toHaveCount(4) + await expect(comparison.locator('.docs-comparison-bar')).toHaveCount(4) await expect(page.getByRole('table')).toHaveCount(7) expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) }) -test('theme selection persists across navigation', async ({ page }) => { - await page.goto('/', { waitUntil: 'domcontentloaded' }) - const themeButton = page.getByRole('button', { name: 'Choose color theme' }) - const darkButton = page.getByRole('button', { name: 'Dark', exact: true }) - - await themeButton.click() - await expect(darkButton).toBeVisible() - await page.getByRole('heading', { level: 1, name: 'FSharp.ViewEngine' }).click() - await expect(darkButton).toBeHidden() - - await themeButton.click() - await darkButton.click() +test('sitemap, robots, and social metadata expose canonical public discovery', async ({ request, page }) => { + const sitemap = await request.get('/sitemap.xml') + expect(sitemap.status()).toBe(200) + expect(sitemap.headers()['content-type']).toContain('application/xml') + const sitemapXml = await sitemap.text() + for (const route of routes) { + const canonicalURL = route.path === '/' ? `${productionOrigin}/` : `${productionOrigin}${route.path}` + expect(sitemapXml, route.path).toContain(`${canonicalURL}`) + } + expect(sitemapXml).not.toContain('/docs/components') + expect(sitemapXml).not.toContain('/docs/previews/') - await expect(page.locator('html')).toHaveClass(/dark/) - expect(await page.evaluate(() => localStorage.getItem('theme'))).toBe('dark') + const robots = await request.get('/robots.txt') + expect(robots.status()).toBe(200) + expect(await robots.text()).toBe(`User-agent: *\nAllow: /\nSitemap: ${productionOrigin}/sitemap.xml\n`) - await page.goto('/installation', { waitUntil: 'domcontentloaded' }) - await expect(page.locator('html')).toHaveClass(/dark/) + await page.goto('/getting-started/first-view', { waitUntil: 'domcontentloaded' }) + await expect(page.locator('meta[property="og:url"]')).toHaveAttribute('content', `${productionOrigin}/getting-started/first-view`) + await expect(page.locator('meta[property="og:type"]')).toHaveAttribute('content', 'website') + await expect(page.locator('meta[property="og:image"]')).toHaveAttribute('content', `${productionOrigin}/social-card.png`) + await expect(page.locator('meta[property="og:image:alt"]')).toHaveAttribute('content', 'Build your first view') + await expect(page.locator('meta[name="twitter:card"]')).toHaveAttribute('content', 'summary_large_image') + const image = await request.get('/social-card.png') + expect(image.status()).toBe(200) + expect(image.headers()['content-type']).toContain('image/png') }) test('removed Tailwind documentation route returns 404', async ({ request }) => { diff --git a/sln/FSharp.ViewEngine.slnx b/sln/FSharp.ViewEngine.slnx index 5161675..3a9bdc9 100644 --- a/sln/FSharp.ViewEngine.slnx +++ b/sln/FSharp.ViewEngine.slnx @@ -5,6 +5,7 @@ + diff --git a/sln/src/Benchmarks/Workloads.fs b/sln/src/Benchmarks/Workloads.fs index b5c0139..a79dbb8 100644 --- a/sln/src/Benchmarks/Workloads.fs +++ b/sln/src/Benchmarks/Workloads.fs @@ -189,6 +189,20 @@ type CollectionBenchmarks() = [] member _.Sequence() = Collections.fromSequence () |> Render.toString +[] +type CorePrimitiveBenchmarks() = + let nodes = [ span { "One" }; span { "Two" }; span { "Three" } ] + let fragment = Html.fragment nodes + + [] + member _.ParentLoop() = div { for node in nodes do node } |> Render.toString + + [] + member _.Fragment() = fragment |> Render.toString + + [] + member _.Utf8Bytes() = fragment |> Render.toUtf8Bytes + [] type BuildAndRenderWorkloads() = [] diff --git a/sln/src/Build/PackageVerification.fs b/sln/src/Build/PackageVerification.fs index 5399d7c..49876ef 100644 --- a/sln/src/Build/PackageVerification.fs +++ b/sln/src/Build/PackageVerification.fs @@ -33,11 +33,11 @@ let private entryText (entry:ZipArchiveEntry) = use reader = new StreamReader(stream) reader.ReadToEnd() -let private verifyPackageContents (archive:ZipArchive) = - let frameworks = entryFrameworks "FSharp.ViewEngine.dll" archive +let private verifyPackageContents assemblyName (archive:ZipArchive) = + let frameworks = entryFrameworks $"{assemblyName}.dll" archive if frameworks <> "net8.0" then let found = if String.IsNullOrEmpty frameworks then "none" else frameworks - fail $"Expected only lib/net8.0, found: {found}" + fail $"Expected only lib/net8.0 for {assemblyName}, found: {found}" if archive.Entries |> Seq.exists (fun entry -> entry.FullName.EndsWith(".pdb", StringComparison.OrdinalIgnoreCase)) then fail "The main package must not contain PDB files" @@ -98,19 +98,19 @@ let private sourceLinkMappings (pdbEntry:ZipArchiveEntry) = Array.empty) |> Seq.toList -let private verifySymbols repositoryCommit symbolsPackagePath = +let private verifySymbols assemblyName repositoryCommit symbolsPackagePath = if not (File.Exists symbolsPackagePath) then fail $"Missing symbol package: {symbolsPackagePath}" use symbolsArchive = ZipFile.OpenRead symbolsPackagePath - let frameworks = entryFrameworks "FSharp.ViewEngine.pdb" symbolsArchive + let frameworks = entryFrameworks $"{assemblyName}.pdb" symbolsArchive if frameworks <> "net8.0" then let found = if String.IsNullOrEmpty frameworks then "none" else frameworks - fail $"Expected only lib/net8.0 symbols, found: {found}" + fail $"Expected only lib/net8.0 symbols for {assemblyName}, found: {found}" let pdbEntry = symbolsArchive.Entries - |> Seq.filter (fun entry -> entry.FullName = "lib/net8.0/FSharp.ViewEngine.pdb") + |> Seq.filter (fun entry -> entry.FullName = $"lib/net8.0/{assemblyName}.pdb") |> exactlyOne "portable PDB entry" let sourceUrl = $"https://raw.githubusercontent.com/meiermade/FSharp.ViewEngine/{repositoryCommit}/" @@ -130,15 +130,15 @@ let rec private containsProperty expectedName (element:JsonElement) = | JsonValueKind.Array -> element.EnumerateArray() |> Seq.exists (containsProperty expectedName) | _ -> false -let private verifySelectedAsset framework projectDirectory = +let private verifySelectedAsset assemblyName framework projectDirectory = let assetsPath = Path.Combine(projectDirectory, "obj", "project.assets.json") use document = JsonDocument.Parse(File.ReadAllText assetsPath) - if not (containsProperty "lib/net8.0/FSharp.ViewEngine.dll" document.RootElement) then - fail $"{framework} did not select the net8.0 compatibility asset" + if not (containsProperty $"lib/net8.0/{assemblyName}.dll" document.RootElement) then + fail $"{framework} did not select the net8.0 compatibility asset for {assemblyName}" -let private packageVersion (packagePath:string) = - let matched = Regex.Match(Path.GetFileName packagePath, "^FSharp\\.ViewEngine\\.(.+)\\.nupkg$") +let private packageVersion packageId (packagePath:string) = + let matched = Regex.Match(Path.GetFileName packagePath, $"^{Regex.Escape packageId}\\.(.+)\\.nupkg$") if matched.Success then matched.Groups[1].Value else fail $"Unexpected package name: {Path.GetFileName packagePath}" @@ -151,7 +151,7 @@ let private testFrameworks () = Regex.Split(configured.Trim(), "\\s+") |> Array.filter (String.IsNullOrWhiteSpace >> not) -let private consumerProgram = +let private viewEngineConsumerProgram = """open FSharp.ViewEngine open type Html @@ -162,29 +162,107 @@ if actual <> "
ok
" then printfn "FSharp.ViewEngine package works on %s" System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription """ +let private docsConsumerProgram = + """open FSharp.ViewEngine +open FSharp.ViewEngine.Docs +open type Html + +type Destination = Home | Guide + +let person = SequenceDiagram.participant "Person" "Person" +let app = SequenceDiagram.participant "App" "Application" +let diagram = SequenceDiagram.sequence [ person; app ] [ SequenceDiagram.call person app "Use product" ] + +let navigation = + [ Nav.page "home" "Overview" "/" Home + Nav.group "guides" "Guides" true [ Nav.page "guide" "Guide" "/guide" Guide ] ] + +match Navigation.validate navigation with +| [] -> () +| issues -> failwith $"unexpected navigation issues: {issues}" + +let site: DocsSite = + { name = "Package smoke" + baseUrl = None + description = None + repository = None + brandMark = span { "S" } + homeId = "home" + navigation = navigation + storageKey = "package-smoke" + defaultColorMode = DocsColorMode.System + theme = DocsTheme.amber + assets = DocsAssets.defaults + search = [] } + +let page = + docsArticle "guide" "Guide" "Package verification" [ + docsSection "example" "Example" [ + docsCustom (docsExample "smoke-example" "Smoke example" "fsharp" "div { \"ok\" }" (div { "ok" })) ] + docsSection "diagram" "Diagram" [ docsSequence diagram ] ] + |> docsWithPager (docsPager (Some(docsPageLink "Home" "/")) None) + +let actual = docsDocument site page |> Render.toString +if not (actual.Contains "class=\"spec-shell\"") || not (actual.Contains "data-docs-example=\"true\"") || not (actual.Contains "aria-label=\"Page navigation\"") || not (actual.Contains "Person->>App: Use product") then + failwith "documentation document did not render expected components" + +let graph: DirectedGraph = + { nodes = [ Home; Guide ] + roots = [ Home ] + edges = [ Home, Guide ] } + +match DirectedGraph.validate graph with +| [] -> () +| issues -> failwith $"unexpected graph issues: {issues}" + +printfn "FSharp.ViewEngine.Docs package works on %s" System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription +""" + +type private PackageDefinition = + { packageId:string + assemblyName:string + consumerProgram:string } + +let private packageDefinition (packagePath:string) = + let fileName = Path.GetFileName packagePath + + if fileName.StartsWith("FSharp.ViewEngine.Docs.", StringComparison.Ordinal) then + { packageId = "FSharp.ViewEngine.Docs" + assemblyName = "FSharp.ViewEngine.Docs" + consumerProgram = docsConsumerProgram } + elif fileName.StartsWith("FSharp.ViewEngine.", StringComparison.Ordinal) then + { packageId = "FSharp.ViewEngine" + assemblyName = "FSharp.ViewEngine" + consumerProgram = viewEngineConsumerProgram } + else + fail $"Unexpected package name: {fileName}" + let verify runDotnet packagePath = let packagePath = Path.GetFullPath packagePath let packageDirectory = Path.GetDirectoryName packagePath - let version = packageVersion packagePath + let definition = packageDefinition packagePath + let version = packageVersion definition.packageId packagePath let symbolsPackagePath = Path.ChangeExtension(packagePath, ".snupkg") use packageArchive = ZipFile.OpenRead packagePath - verifyPackageContents packageArchive + verifyPackageContents definition.assemblyName packageArchive let repositoryCommit = repositoryMetadata packageArchive - verifySymbols repositoryCommit symbolsPackagePath + verifySymbols definition.assemblyName repositoryCommit symbolsPackagePath let workDirectory = Path.Combine(Path.GetTempPath(), $"fsharp-viewengine-package.{Guid.NewGuid():N}") Directory.CreateDirectory workDirectory |> ignore try + let packagesDirectory = Path.Combine(workDirectory, "packages") + for framework in testFrameworks () do let projectDirectory = Path.Combine(workDirectory, framework) runDotnet workDirectory [ "new"; "console"; "--language"; "F#"; "--framework"; framework; "--output"; projectDirectory; "--no-restore" ] - File.WriteAllText(Path.Combine(projectDirectory, "Program.fs"), consumerProgram) + File.WriteAllText(Path.Combine(projectDirectory, "Program.fs"), definition.consumerProgram) - runDotnet projectDirectory [ "add"; "package"; "FSharp.ViewEngine"; "--version"; version; "--source"; packageDirectory; "--no-restore" ] - runDotnet projectDirectory [ "restore"; "--source"; packageDirectory; "--source"; "https://api.nuget.org/v3/index.json" ] - verifySelectedAsset framework projectDirectory + runDotnet projectDirectory [ "add"; "package"; definition.packageId; "--version"; version; "--source"; packageDirectory; "--no-restore" ] + runDotnet projectDirectory [ "restore"; "--packages"; packagesDirectory; "--source"; packageDirectory; "--source"; "https://api.nuget.org/v3/index.json" ] + verifySelectedAsset definition.assemblyName framework projectDirectory runDotnet projectDirectory [ "run"; "--framework"; framework; "--no-restore" ] finally if Directory.Exists workDirectory then Directory.Delete(workDirectory, true) diff --git a/sln/src/Build/Program.fs b/sln/src/Build/Program.fs index 9a52be0..45cccb1 100644 --- a/sln/src/Build/Program.fs +++ b/sln/src/Build/Program.fs @@ -88,28 +88,45 @@ Target.create "Test" <| fun _ -> |> Async.RunSynchronously Target.create "Pack" (fun _ -> - let project = srcDir "FSharp.ViewEngine" "FSharp.ViewEngine.fsproj" - Trace.trace $"Packing {project}" let version = getVersion() - dotnet rootDir ["pack"; project; "--configuration"; "Release"; "--output"; nugetsDir; $"/p:PackageVersion={version}"] - |> Async.RunSynchronously + let projects = + [ srcDir "FSharp.ViewEngine" "FSharp.ViewEngine.fsproj" + srcDir "FSharp.ViewEngine.Docs" "FSharp.ViewEngine.Docs.fsproj" ] + + for project in projects do + Trace.trace $"Packing {project}" + dotnet rootDir ["pack"; project; "--configuration"; "Release"; "--output"; nugetsDir; $"/p:PackageVersion={version}"] + |> Async.RunSynchronously ) Target.create "VerifyPackage" (fun _ -> - let package = + let packages = match Environment.environVarOrNone "PACKAGE_PATH" with - | Some package -> Path.getFullName package + | Some package -> [ Path.getFullName package ] | None -> - let nugets = !! $"{nugetsDir}/*.nupkg" |> Seq.toList - match nugets with - | [ package ] -> package - | _ -> failwith $"Expected exactly one package, found {nugets.Length}" - - if not (File.exists package) then failwith $"Package does not exist: {package}" - - PackageVerification.verify - (fun workDir args -> dotnet workDir args |> Async.RunSynchronously) - package + let packageDirectory = Environment.environVarOrDefault "PACKAGE_DIRECTORY" nugetsDir + let packages = !! $"{packageDirectory}/*.nupkg" |> Seq.sort |> Seq.toList + let expectedPackageIds = Set [ "FSharp.ViewEngine"; "FSharp.ViewEngine.Docs" ] + let packageIds = + packages + |> List.map (System.IO.Path.GetFileName >> fun fileName -> + if fileName.StartsWith("FSharp.ViewEngine.Docs.", System.StringComparison.Ordinal) then "FSharp.ViewEngine.Docs" + elif fileName.StartsWith("FSharp.ViewEngine.", System.StringComparison.Ordinal) then "FSharp.ViewEngine" + else fileName) + |> Set.ofList + + if packages.Length <> expectedPackageIds.Count || packageIds <> expectedPackageIds then + let found = packages |> List.map System.IO.Path.GetFileName |> String.concat ", " + failwith $"Expected FSharp.ViewEngine and FSharp.ViewEngine.Docs packages, found: {found}" + + packages + + for package in packages do + if not (File.exists package) then failwith $"Package does not exist: {package}" + + PackageVerification.verify + (fun workDir args -> dotnet workDir args |> Async.RunSynchronously) + package ) Target.create "PushNugets" (fun _ -> diff --git a/sln/src/Docs.Tests/Program.fs b/sln/src/Docs.Tests/Program.fs index d076c30..7668deb 100644 --- a/sln/src/Docs.Tests/Program.fs +++ b/sln/src/Docs.Tests/Program.fs @@ -10,6 +10,12 @@ let private expectedPaths = set [ "/" "/installation" + "/getting-started/first-view" + "/guides/elements-and-attributes" + "/guides/composition-and-control-flow" + "/guides/rendering" + "/guides/encoding-and-trusted-content" + "/guides/accessibility" "/custom" "/usage" "/extensions/alpine" @@ -17,6 +23,16 @@ let private expectedPaths = "/extensions/htmx" "/extensions/svg" "/extensions/tailwind-elements" + "/docs" + "/docs/components/layouts" + "/docs/components/content" + "/docs/components/navigation" + "/docs/components/interactive-examples" + "/docs/components/api-reference" + "/docs/components/diagrams" + "/docs/page-examples/documentation-site" + "/docs/page-examples/api-reference" + "/docs/page-examples/executable-specification" "/benchmarks" "/changelog" ] @@ -28,19 +44,54 @@ let tests = let actual = Registry.all |> List.map _.path |> Set.ofList Expect.equal actual expectedPaths "documentation routes" Expect.equal Registry.all.Length expectedPaths.Count "one page per route" + + let aliases = Registry.aliases |> Map.ofList + Expect.equal aliases["/docs/components"] "/docs/components/layouts" "old component catalog route" + Expect.equal aliases["/docs-components"] "/docs/components/layouts" "old component lab route" + Expect.equal aliases["/docs/examples/api-reference"] "/docs/page-examples/api-reference" "old API example route" + Expect.equal aliases["/docs/examples/executable-specification"] "/docs/page-examples/executable-specification" "old specification route" } - test "Navigation keeps extensions and project pages in the documented order" { + test "Navigation exposes the core learning path before integrations and project pages" { + Expect.sequenceEqual + (Registry.navigation |> List.map _.label) + [ "Getting started"; "Core concepts"; "Integrations"; "FSharp.ViewEngine.Docs"; "Project" ] + "core guidance precedes integrations and package catalogs" + + let rec findSection label sections = + sections + |> List.tryPick (fun candidate -> + if candidate.label = label then Some candidate + else findSection label candidate.sections) + let section label = Registry.navigation - |> List.find (fun candidate -> candidate.label = label) + |> findSection label + |> Option.defaultWith (fun () -> failtest $"Missing navigation section: {label}") |> _.pages |> List.map _.navLabel Expect.sequenceEqual - (section "Extensions") - [ "SVG"; "Datastar"; "HTMX"; "Alpine"; "Tailwind Plus Elements" ] - "extension order" + (section "Getting started") + [ "Introduction"; "Installation"; "Build your first view" ] + "getting-started order" + Expect.sequenceEqual + (section "Core concepts") + [ "Elements and attributes"; "Composition and control flow"; "Rendering"; "Encoding and trusted content"; "Accessibility"; "Custom elements and extensions" ] + "core concept order" + Expect.sequenceEqual + (section "Integrations") + [ "Giraffe"; "SVG"; "Datastar"; "HTMX"; "Alpine"; "Tailwind Plus Elements" ] + "integration order" + Expect.sequenceEqual (section "FSharp.ViewEngine.Docs") [ "Overview" ] "toolkit overview is distinct" + Expect.sequenceEqual + (section "Components") + [ "Layouts"; "Content"; "Navigation"; "Interactive examples"; "API reference"; "Diagrams" ] + "component categories follow the catalog order" + Expect.sequenceEqual + (section "Page examples") + [ "Documentation site"; "API reference"; "Executable specification" ] + "page examples are grouped separately" Expect.sequenceEqual (section "Project") [ "Benchmarks"; "Changelog" ] "project order" } @@ -65,6 +116,9 @@ let tests = Expect.stringContains html "not CI regression thresholds" "results interpretation" Expect.stringContains html "https://fsharpviewengine.meiermade.com{page.path}" page.path + + Expect.equal (sitemap.Split("").Length - 1) Registry.all.Length "one sitemap entry per canonical page" + Expect.isFalse (sitemap.Contains("/docs/components")) "aliases are excluded" + Expect.isFalse (sitemap.Contains("/docs/previews/")) "previews are excluded" + Expect.stringContains robots "Allow: /" "public pages are crawlable" + Expect.stringContains robots "Sitemap: https://fsharpviewengine.meiermade.com/sitemap.xml" "robots advertises sitemap" + } + + test "Pages publish the application-owned social image" { + for page in Registry.all do + let html = page |> View.document Registry.navigation |> Render.toHtmlDocString + Expect.stringContains html "property=\"og:image\" content=\"https://fsharpviewengine.meiermade.com/social-card.png\"" page.path + Expect.stringContains html "name=\"twitter:card\" content=\"summary_large_image\"" page.path + } + + test "Every page renders its semantic heading and legacy anchors" { for page in Registry.all do let html = page |> View.document Registry.navigation |> Render.toHtmlDocString let encodedTitle = WebUtility.HtmlEncode page.title - Expect.stringContains html page.category $"{page.path} eyebrow" Expect.stringContains html $">{encodedTitle}" $"{page.path} title" + if Showcase.tryPage page.path |> Option.isNone then + let description = page.nodes |> List.tryPick (function | Paragraph content -> Some content | _ -> None) + Expect.isSome description $"{page.path} has a useful page summary" + Expect.isFalse (html.Contains($"

{page.category}

")) $"{page.path} does not repeat its category as the description" + for heading in DocPage.headings page do Expect.stringContains html $"id=\"{heading.id}\"" $"{page.path} heading {heading.id}" if heading.level <= 3 then Expect.stringContains html $"href=\"#{heading.id}\"" $"{page.path} TOC {heading.id}" + + if DocPage.tableOfContents page |> List.isEmpty |> not then + Expect.stringContains html "class=\"spec-mobile-toc\"" $"{page.path} mobile TOC" + Expect.stringContains html "aria-label=\"On this page\"" $"{page.path} labelled TOC" + } + + test "Genuinely renderable samples use the shared code and preview component" { + let pages = [ Svg.page; TailwindElements.page ] + + for page in pages do + let html = page |> View.document Registry.navigation |> Render.toHtmlDocString + Expect.stringContains html "data-docs-example=\"true\"" $"{page.path} example" + Expect.stringContains html "role=\"tablist\"" $"{page.path} tab semantics" + Expect.stringContains html ">Preview" $"{page.path} preview control" + Expect.stringContains html ">Code" $"{page.path} code control" + } + + test "Inline prose links are visibly identifiable" { + let home = Home.page |> View.document Registry.navigation |> Render.toHtmlDocString + let installation = Installation.page |> View.document Registry.navigation |> Render.toHtmlDocString + + Expect.stringContains home "href=\"/installation\" class=\"spec-content-link\"" "Installation is a styled inline link" + Expect.stringContains home "href=\"/getting-started/first-view\" class=\"spec-content-link\"" "first-view guide is a styled inline link" + Expect.stringContains installation "href=\"/getting-started/first-view\" class=\"spec-content-link\"" "next-step first-view link is styled" + Expect.stringContains home ".spec-content-link{text-decoration:underline" "inline links have a non-color affordance" } test "Code examples are encoded and retain Prism language classes" { @@ -158,6 +262,15 @@ let tests = Expect.isFalse (html.Contains(" x-data=")) "Alpine directives removed" } + test "Homepage uses the product logo and Tailwind Sky primary color" { + let html = Home.page |> View.document Registry.navigation |> Render.toHtmlDocString + Expect.stringContains html "class=\"docs-home-logo\"" "product logo is shown in the page header" + Expect.stringContains html "src=\"/logo.svg\"" "page uses the canonical logo asset" + Expect.stringContains html "--spec-accent-500:#0ea5e9" "site uses Tailwind Sky 500" + Expect.stringContains html "--spec-accent-700:#0369a1" "site uses Tailwind Sky 700" + Expect.isFalse (html.Contains("--spec-accent-500:#10b981")) "emerald primary is removed" + } + test "Homepage quick example is Datastar-first" { let html = Home.page |> View.document Registry.navigation |> Render.toHtmlDocString Expect.stringContains html "open type Datastar" "Datastar API" @@ -166,12 +279,68 @@ let tests = Expect.isFalse (html.Contains("_hxGet")) "HTMX is not used as the attribute example" } - test "Docs use the pinned Prism runtime and FSharp grammar" { - let html = Home.page |> View.document Registry.navigation |> Render.toHtmlDocString - let prismBase = "https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0" - Expect.stringContains html $"{prismBase}/prism.min.js" "pinned Prism script" - Expect.stringContains html $"{prismBase}/themes/prism-tomorrow.min.css" "pinned Prism theme" - Expect.stringContains html $"{prismBase}/components/prism-fsharp.min.js" "pinned FSharp grammar" + test "Docs lazily use pinned self-hosted Prism and Mermaid assets" { + let home = Home.page |> View.document Registry.navigation |> Render.toHtmlDocString + let diagrams = Showcase.previewRoutes["/docs/previews/mermaid-diagram"] + Expect.stringContains home "/scripts/prism.1.29.0.min.js" "pinned Prism script" + Expect.stringContains home "/css/prism-tomorrow.1.29.0.min.css" "pinned Prism theme" + Expect.stringContains home "/scripts/prism-fsharp.1.29.0.min.js" "pinned FSharp grammar" + Expect.isFalse (home.Contains("/scripts/mermaid.11.16.0.min.js")) "pages without diagrams omit Mermaid" + Expect.stringContains diagrams "/scripts/mermaid.11.16.0.min.js" "isolated diagram pages use pinned Mermaid" + Expect.isFalse (home.Contains("cdnjs.cloudflare.com")) "documentation assets are self-hosted" + } + + test "Showcase source regions preserve the exact compiled example" { + let source = """before + // docs-example:start notice + let preview = + div { "Saved" } + // docs-example:end notice +after""" + + Expect.equal + (SourceRegion.extract "notice" source) + "let preview =\n div { \"Saved\" }" + "source is extracted and dedented without marker comments" + Expect.throws + (fun () -> SourceRegion.extract "missing" source |> ignore) + "missing source regions fail rather than displaying approximate code" + } + + test "Docs toolkit is organized into component and page-example catalogs" { + let render registration = registration |> View.document Registry.navigation |> Render.toHtmlDocString + let overview = render Showcase.overviewRegistration + + Expect.equal Showcase.componentRegistrations.Length 6 "six component categories" + Expect.equal Showcase.pageExampleRegistrations.Length 3 "three page-example categories" + Expect.stringContains overview "FSharp.ViewEngine.Docs" "package overview" + Expect.stringContains overview "This documentation site is built with FSharp.ViewEngine.Docs" "site dogfoods the package" + Expect.stringContains overview "Browse components" "component catalog link" + Expect.stringContains overview "Browse page examples" "page-example catalog link" + Expect.isFalse (overview.Contains("Example content")) "overview omits the old fixture callout" + Expect.stringContains overview "rel=\"next\" href=\"/docs/components/layouts\"" "overview continues to layouts" + + for registration in Showcase.componentRegistrations @ Showcase.pageExampleRegistrations do + let html = render registration + Expect.stringContains html "docs-article-layout" $"{registration.path} uses the catalog layout" + Expect.stringContains html "data-docs-example=\"true\"" $"{registration.path} includes examples" + Expect.stringContains html ">Code" $"{registration.path} code toggle" + Expect.stringContains html ">Preview" $"{registration.path} preview toggle" + + let api = render Showcase.apiPageExampleRegistration + Expect.stringContains api "does not expose an HTTP /v1/render endpoint" "fictional API is labeled near its example" + Expect.stringContains api "let endpoint = docsApiEndpoint POST" "API page uses the compiled endpoint definition" + Expect.stringContains api "data-docs-preview-src=\"/docs/previews/api-reference-page-example\"" "API preview lazily uses an isolated route" + Expect.isTrue (Showcase.previewRoutes.ContainsKey "/docs/previews/api-reference-page-example") "isolated API preview is registered" + + let interactive = render Showcase.interactiveRegistration + Expect.stringContains interactive "component-workflow-states" "state-tabs code uses the preview's actual identifier" + Expect.stringContains interactive "productScreen "ready"" "state-tabs code uses the actual compiled child view" + Expect.isFalse (interactive.Contains("docsStateTabs "workflow-states"")) "approximate state-tabs source is removed" + + let specification = render Showcase.specificationPageExampleRegistration + Expect.stringContains specification "role=\"tablist\"" "specification preview uses state tabs" + Expect.stringContains specification "spec-browser-frame" "specification preview uses a browser frame" } test "Datastar docs cover every stable helper and modifier shapes" { @@ -218,6 +387,8 @@ let tests = Expect.stringContains html "_ariaLabelledby" "informative accessibility pattern" Expect.stringContains html "_ariaHidden" "decorative accessibility pattern" Expect.stringContains html "xlink:href" "deprecated linking guidance" + let exampleCount = html.Split([| "data-docs-example=\"true\"" |], System.StringSplitOptions.None).Length - 1 + Expect.isGreaterThanOrEqual exampleCount 3 "icon, chart, and resource examples have previews" } test "Tailwind Plus Elements docs cover the complete 1.0.22 API" { @@ -234,6 +405,9 @@ let tests = Expect.stringContains html helper helper Expect.stringContains html "@tailwindplus/elements@1.0.22" "pinned Elements installation" + Expect.stringContains html "src=\"https://cdn.jsdelivr.net/npm/@tailwindplus/elements@1.0.22\"" "pinned Elements runtime" + Expect.stringContains html " + + + @@ -27,6 +30,7 @@ + true PreserveNewest @@ -34,6 +38,7 @@ +
diff --git a/sln/src/Docs/input.css b/sln/src/Docs/input.css index da32580..f7afabe 100644 --- a/sln/src/Docs/input.css +++ b/sln/src/Docs/input.css @@ -3,10 +3,1036 @@ @plugin "@tailwindcss/typography"; @custom-variant dark (&:where(.dark, .dark *)); +@font-face { + font-family: "Noto Sans"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("/fonts/noto-sans-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "Noto Sans"; + font-style: italic; + font-weight: 100 900; + font-display: swap; + src: url("/fonts/noto-sans-latin-italic.woff2") format("woff2"); +} + +@font-face { + font-family: "Noto Sans Mono"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("/fonts/noto-sans-mono-latin.woff2") format("woff2"); +} + [x-cloak] { display: none !important; } +.docs-home-logo { + width: 5rem; + height: 5rem; + margin-bottom: 1.5rem; +} + +.docs-home-logo img { + width: 100%; + height: 100%; +} + +.docs-catalog-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; +} + +.docs-catalog-card { + display: flex; + min-width: 0; + flex-direction: column; + gap: 0.45rem; + border: 1px solid var(--spec-border); + border-radius: 0.75rem; + background: var(--spec-input-bg); + padding: 1.25rem; + color: var(--spec-text); + text-decoration: none; + box-shadow: 0 1px 2px rgb(0 0 0 / 0.04); +} + +.docs-catalog-card:hover { + border-color: var(--spec-border-strong); + background: var(--spec-hover); +} + +.docs-catalog-card:focus-visible { + outline: 2px solid var(--spec-accent-700); + outline-offset: 2px; +} + +.docs-catalog-eyebrow { + color: var(--spec-selection-text); + font-size: 0.6875rem; + font-weight: 700; + letter-spacing: 0.08em; +} + +.docs-catalog-description { + color: var(--spec-muted); + font-size: 0.875rem; + line-height: 1.55; +} + +.docs-catalog-action { + margin-top: 0.35rem; + color: var(--spec-selection-text); + font-size: 0.8125rem; + font-weight: 650; +} + +.docs-showcase-surface { + min-height: 15rem; + border-radius: 0.65rem; + background: var(--spec-subtle); + padding: 1.5rem; + color: var(--spec-text); +} + +.twe-preview-surface { + min-height: 10rem; + border-radius: 0.65rem; + background: var(--spec-subtle); + padding: 1.5rem; + color: var(--spec-text); +} + +.twe-preview-surface-floating { + min-height: 13rem; +} + +.twe-button, +.twe-input, +.twe-command-input, +.twe-option, +.twe-disclosure-trigger, +.twe-tab, +.twe-popover-action { + font: inherit; +} + +.twe-button { + display: inline-flex; + min-height: 2.5rem; + align-items: center; + justify-content: center; + gap: 0.45rem; + border: 1px solid var(--spec-border-strong); + border-radius: 0.5rem; + background: var(--spec-input-bg); + padding: 0.55rem 0.8rem; + color: var(--spec-text); + font-size: 0.875rem; + font-weight: 650; + cursor: pointer; + box-shadow: 0 1px 2px rgb(0 0 0 / 0.05); +} + +.twe-button:hover, +.twe-button[aria-expanded="true"] { + border-color: var(--spec-accent-500); + background: var(--spec-hover); +} + +.twe-button:focus-visible, +.twe-input:focus-visible, +.twe-option:focus, +.twe-disclosure-trigger:focus-visible, +.twe-popover-action:focus-visible { + outline: 2px solid var(--spec-accent-500); + outline-offset: 2px; +} + +.twe-tab:focus-visible { + border-radius: 0.2rem 0.2rem 0 0; + outline: 2px solid var(--spec-accent-500); + outline-offset: -2px; +} + +.twe-chevron { + width: 1rem; + height: 1rem; + flex: none; + color: var(--spec-muted); + transition: transform 150ms ease; +} + +[aria-expanded="true"] > .twe-chevron { + transform: rotate(180deg); +} + +.twe-autocomplete, +.twe-select { + display: block; + max-width: 28rem; +} + +.twe-autocomplete { + position: relative; +} + +.twe-input { + width: 100%; + min-height: 2.75rem; + border: 1px solid var(--spec-border-strong); + border-radius: 0.5rem; + background: var(--spec-input-bg); + padding: 0.65rem 2.75rem 0.65rem 0.8rem; + color: var(--spec-text); + font-size: 0.875rem; + box-shadow: 0 1px 2px rgb(0 0 0 / 0.04); +} + +.twe-input::placeholder, +.twe-command-input::placeholder { + color: var(--spec-faint); +} + +.twe-field-button { + position: absolute; + top: 0.25rem; + right: 0.25rem; + display: grid; + width: 2.25rem; + height: 2.25rem; + place-items: center; + border: 0; + border-radius: 0.375rem; + background: transparent; + padding: 0; + color: var(--spec-muted); + cursor: pointer; +} + +.twe-field-button:hover { + background: var(--spec-hover); + color: var(--spec-text); +} + +.twe-floating { + border: 1px solid var(--spec-border-strong); + border-radius: 0.6rem; + background: var(--spec-menu); + color: var(--spec-text); + box-shadow: 0 12px 30px rgb(0 0 0 / 0.18); + transition: opacity 100ms ease, transform 100ms ease; + transition-behavior: allow-discrete; + --anchor-gap: 0.375rem; +} + +.twe-floating[data-closed] { + opacity: 0; + transform: scale(0.98); +} + +.twe-options { + width: var(--input-width, var(--button-width)); + padding: 0.3rem; +} + +.twe-select .twe-options { + width: var(--button-width); +} + +.twe-option { + display: flex; + width: 100%; + min-height: 2.25rem; + align-items: center; + border: 0; + border-radius: 0.4rem; + background: transparent; + padding: 0.5rem 0.65rem; + color: var(--spec-text-secondary); + font-size: 0.875rem; + text-align: left; + cursor: pointer; +} + +.twe-option:hover, +.twe-option:focus, +.twe-option[aria-selected="true"] { + background: var(--spec-selection-bg); + color: var(--spec-selection-text); + outline: 0; +} + +.twe-command-palette { + display: block; + max-width: 32rem; + overflow: hidden; + border: 1px solid var(--spec-border-strong); + border-radius: 0.75rem; + background: var(--spec-input-bg); + box-shadow: 0 12px 30px rgb(0 0 0 / 0.08); +} + +.twe-command-search { + display: flex; + align-items: center; + gap: 0.65rem; + border-bottom: 1px solid var(--spec-border); + padding: 0 0.8rem; +} + +.twe-field-icon { + width: 1.15rem; + height: 1.15rem; + flex: none; + color: var(--spec-faint); +} + +.twe-command-input { + min-width: 0; + min-height: 3rem; + flex: 1; + border: 0; + background: transparent; + padding: 0; + color: var(--spec-text); + font-size: 0.875rem; + outline: 0; +} + +.twe-command-input:focus-visible { + outline: 0; +} + +.twe-command-search:focus-within { + box-shadow: inset 0 -2px var(--spec-accent-500); +} + +.twe-command-search kbd, +.twe-command-item kbd { + border: 1px solid var(--spec-border); + border-radius: 0.3rem; + background: var(--spec-subtle); + padding: 0.12rem 0.35rem; + color: var(--spec-faint); + font-family: var(--docs-font-mono); + font-size: 0.6875rem; +} + +.twe-command-list { + display: block; + padding: 0.35rem; +} + +.twe-command-item { + display: flex; + width: 100%; + align-items: center; + justify-content: space-between; + border: 0; + border-radius: 0.45rem; + background: transparent; + padding: 0.55rem 0.65rem; + color: var(--spec-text-secondary); + font: inherit; + font-size: 0.875rem; + text-align: left; + cursor: pointer; +} + +.twe-command-item:focus, +.twe-command-item[aria-selected="true"] { + background: var(--spec-selection-bg); + color: var(--spec-selection-text); + outline: 0; +} + +.twe-no-results, +.twe-command-preview { + display: block; + color: var(--spec-muted); + font-size: 0.8125rem; +} + +.twe-no-results { + padding: 1rem; + text-align: center; +} + +.twe-command-preview { + border-top: 1px solid var(--spec-border); + padding: 0.65rem 1rem; +} + +.twe-copy-row { + display: flex; + max-width: 38rem; + align-items: center; + gap: 0.75rem; + border: 1px solid var(--spec-border-strong); + border-radius: 0.65rem; + background: var(--spec-input-bg); + padding: 0.65rem; +} + +.twe-copy-value { + min-width: 0; + flex: 1; + overflow-x: auto; + color: var(--spec-text-secondary); + font-family: var(--docs-font-mono); + font-size: 0.8125rem; + white-space: nowrap; +} + +.twe-copy-button svg { + width: 1rem; + height: 1rem; +} + +.twe-dialog { + width: 100%; + max-width: none; + height: 100%; + max-height: none; + border: 0; + background: transparent; + padding: 0; + overflow: visible; +} + +.twe-dialog::backdrop { + background: transparent; +} + +.twe-dialog-backdrop { + position: fixed; + inset: 0; + z-index: 0; + background: rgb(15 23 42 / 0.55); + backdrop-filter: blur(2px); + transition: opacity 150ms ease; +} + +.twe-dialog-backdrop[data-closed] { + opacity: 0; +} + +.twe-dialog-panel { + position: fixed; + z-index: 1; + top: 50%; + left: 50%; + width: min(28rem, calc(100vw - 2rem)); + transform: translate(-50%, -50%); + border: 1px solid var(--spec-border); + border-radius: 0.8rem; + background: var(--spec-menu); + padding: 1.25rem; + color: var(--spec-text); + box-shadow: 0 24px 60px rgb(0 0 0 / 0.32); + transition: opacity 150ms ease, transform 150ms ease; +} + +.twe-dialog-panel[data-closed] { + opacity: 0; + transform: translate(-50%, -48%) scale(0.97); +} + +.twe-dialog-panel form { + display: grid; + grid-template-columns: auto minmax(0, 1fr); + gap: 0.85rem; +} + +.twe-dialog-icon { + display: grid; + width: 2.5rem; + height: 2.5rem; + place-items: center; + border-radius: 999px; + background: #fef2f2; + color: #dc2626; +} + +:root.dark .twe-dialog-icon { + background: #450a0a; + color: #fca5a5; +} + +.twe-dialog-icon svg { + width: 1.25rem; + height: 1.25rem; +} + +.twe-dialog-copy h3, +.twe-tab-panels h3 { + margin: 0; + color: var(--spec-text); + font-size: 1rem; + font-weight: 700; +} + +.twe-dialog-copy p, +.twe-tab-panels p { + margin: 0.4rem 0 0; + color: var(--spec-muted); + font-size: 0.875rem; + line-height: 1.55; +} + +.twe-dialog-actions { + display: flex; + grid-column: 1 / -1; + justify-content: flex-end; + gap: 0.5rem; + margin-top: 0.5rem; +} + +.twe-button-danger { + border-color: #dc2626; + background: #dc2626; + color: white; +} + +.twe-button-danger:hover { + border-color: #b91c1c; + background: #b91c1c; +} + +.twe-disclosure, +.twe-tabs { + max-width: 36rem; + border: 1px solid var(--spec-border-strong); + border-radius: 0.65rem; + background: var(--spec-input-bg); +} + +.twe-disclosure { + padding: 1rem; +} + +.twe-disclosure-trigger { + display: flex; + width: 100%; + align-items: center; + justify-content: space-between; + gap: 1rem; + border: 0; + background: transparent; + padding: 0; + color: var(--spec-text); + font-size: 0.875rem; + font-weight: 700; + text-align: left; + cursor: pointer; +} + +.twe-disclosure-panel { + display: block; + padding-top: 0.75rem; + color: var(--spec-muted); + font-size: 0.875rem; + line-height: 1.6; + transition: opacity 120ms ease; +} + +.twe-disclosure-panel[data-closed] { + opacity: 0; +} + +.twe-dropdown, +.twe-popover-group { + display: inline-block; +} + +.twe-menu { + min-width: 11rem; + padding: 0.3rem; +} + +.twe-menu hr { + height: 1px; + margin: 0.3rem 0; + border: 0; + background: var(--spec-border); +} + +.twe-option-danger { + color: #dc2626; +} + +:root.dark .twe-option-danger { + color: #fca5a5; +} + +.twe-popover { + display: grid; + width: 17rem; + grid-template-columns: auto minmax(0, 1fr); + align-items: center; + gap: 0.75rem; + padding: 0.85rem; +} + +.twe-avatar { + display: grid; + width: 2.25rem; + height: 2.25rem; + place-items: center; + border-radius: 999px; + background: var(--spec-selection-bg); + color: var(--spec-selection-text); + font-size: 0.75rem; + font-weight: 750; +} + +.twe-popover-copy strong { + display: block; + font-size: 0.875rem; +} + +.twe-popover-copy p { + margin: 0.15rem 0 0; + color: var(--spec-muted); + font-size: 0.75rem; +} + +.twe-popover-action { + grid-column: 1 / -1; + border: 0; + border-top: 1px solid var(--spec-border); + background: transparent; + padding: 0.65rem 0 0; + color: var(--spec-selection-text); + font-size: 0.8125rem; + font-weight: 650; + text-align: left; + cursor: pointer; +} + +.twe-select { + max-width: 22rem; +} + +.twe-select-button { + width: 100%; + justify-content: space-between; +} + +.twe-tabs { + padding: 1rem; +} + +.twe-tab-list { + display: flex; + gap: 1.25rem; + border-bottom: 1px solid var(--spec-border); +} + +.twe-tab { + border: 0; + border-bottom: 2px solid transparent; + background: transparent; + padding: 0.25rem 0 0.65rem; + color: var(--spec-muted); + font-size: 0.875rem; + font-weight: 650; + cursor: pointer; +} + +.twe-tab:hover { + color: var(--spec-text); +} + +.twe-tab[aria-selected="true"] { + border-bottom-color: var(--spec-accent-500); + color: var(--spec-selection-text); +} + +.twe-tab-panels { + display: block; + padding-top: 1rem; + color: var(--spec-muted); +} + +@media (max-width: 520px) { + .twe-preview-surface { + min-height: 8rem; + padding: 1rem; + } + + .twe-copy-row { + align-items: stretch; + flex-direction: column; + } + + .twe-copy-button { + align-self: flex-end; + } + + .twe-dialog-actions { + flex-direction: column-reverse; + } + + .twe-dialog-actions .twe-button { + width: 100%; + } +} + +.docs-mini-shell { + display: grid; + min-height: 18rem; + grid-template-columns: 10rem minmax(0, 1fr) 8rem; + overflow: hidden; + border: 1px solid var(--spec-border); + border-radius: 0.65rem; + background: var(--spec-bg); + box-shadow: 0 8px 24px rgb(0 0 0 / 0.08); +} + +.docs-mini-shell > aside, +.docs-mini-shell > nav { + display: flex; + flex-direction: column; + gap: 0.65rem; + padding: 1rem; + color: var(--spec-muted); + font-size: 0.75rem; +} + +.docs-mini-shell > aside { + border-right: 1px solid var(--spec-border); + background: var(--spec-subtle); +} + +.docs-mini-shell > nav { + border-left: 1px solid var(--spec-border); +} + +.docs-mini-main { + min-width: 0; + padding: 1.5rem; +} + +.docs-mini-shell h3, +.docs-mini-shell p { + margin: 0; +} + +.docs-mini-shell p { + margin-top: 0.6rem; + color: var(--spec-muted); + font-size: 0.8125rem; + line-height: 1.6; +} + +.docs-mini-brand { + color: var(--spec-text); + font-weight: 700; +} + +.docs-mini-nav-active { + border-radius: 0.4rem; + background: var(--spec-selection-bg); + padding: 0.4rem 0.5rem; + color: var(--spec-selection-text); + font-weight: 650; +} + +.docs-mini-breadcrumb { + margin-bottom: 1rem; + color: var(--spec-faint); + font-size: 0.6875rem; +} + +.docs-mini-code { + margin-top: 1.25rem; + overflow-x: auto; + border-radius: 0.5rem; + background: #0a0a0a; + padding: 0.8rem; + color: #f5f5f5; + font-family: var(--docs-font-mono); + font-size: 0.75rem; +} + +.docs-showcase-reference { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(16rem, 0.8fr); + gap: 1.25rem; +} + +.docs-showcase-reference h3 { + margin: 0 0 1rem; +} + +.docs-showcase-reference > div:last-child, +.docs-showcase-panels { + display: flex; + min-width: 0; + flex-direction: column; + gap: 1rem; +} + +.docs-product-screen { + min-height: 22rem; + background: #f8fafc; + color: #0f172a; +} + +.docs-product-header { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #e2e8f0; + background: white; + padding: 0.8rem 1rem; +} + +.docs-product-header span { + display: grid; + width: 2rem; + height: 2rem; + place-items: center; + border-radius: 999px; + background: #0f172a; + color: white; + font-size: 0.6875rem; +} + +.docs-product-content { + max-width: 36rem; + margin: 0 auto; + padding: 2rem 1.25rem; +} + +.docs-product-content > small { + color: #0369a1; + font-weight: 750; + letter-spacing: 0.08em; +} + +.docs-product-content h3 { + margin: 0.45rem 0 0.4rem; + font-size: 1.45rem; +} + +.docs-product-content > p { + margin: 0; + color: #64748b; + font-size: 0.8125rem; + line-height: 1.6; +} + +.docs-product-card { + margin-top: 1.25rem; + border: 1px solid #e2e8f0; + border-radius: 0.7rem; + background: white; + padding: 1rem; + box-shadow: 0 1px 2px rgb(0 0 0 / 0.05); +} + +.docs-product-card label { + display: block; + margin-bottom: 0.4rem; + font-size: 0.75rem; + font-weight: 700; +} + +.docs-product-card input { + width: 100%; + border: 1px solid; + border-radius: 0.45rem; + padding: 0.65rem 0.75rem; + color: #334155; +} + +.docs-product-error { + margin: 0.4rem 0 0; + color: #b91c1c; + font-size: 0.72rem; +} + +.docs-product-actions { + display: flex; + justify-content: flex-end; + gap: 0.5rem; + margin-top: 1rem; +} + +.docs-product-actions button, +.docs-navigation-actions button, +.docs-navigation-actions a { + border: 1px solid #cbd5e1; + border-radius: 0.45rem; + background: white; + padding: 0.55rem 0.8rem; + color: #0f172a; + font: inherit; + font-size: 0.75rem; + font-weight: 700; + text-decoration: none; +} + +.docs-product-actions .docs-product-primary { + border-color: #0284c7; + background: #0284c7; + color: white; +} + +.docs-navigation-actions { + display: flex; + min-height: 12rem; + align-items: center; + justify-content: center; + gap: 0.75rem; +} + +.docs-notice-preview { + display: flex; + min-height: 10rem; + align-items: center; + justify-content: center; + gap: 0.65rem; + color: var(--spec-text); +} + +.docs-notice-preview strong { + border-radius: 999px; + background: var(--spec-selection-bg); + padding: 0.3rem 0.6rem; + color: var(--spec-selection-text); +} + +.docs-isolated-document { + display: block; + width: 100%; + min-height: 32rem; + border: 0; + background: white; + color-scheme: light; +} + +.docs-comparison-chart { + margin: 1.5rem 0; + border: 1px solid var(--spec-border); + border-radius: 0.75rem; + background: var(--spec-subtle); + padding: 1.25rem; + color: var(--spec-text); +} + +.docs-comparison-chart figcaption > strong { + display: block; + font-size: 0.9375rem; +} + +.docs-comparison-chart figcaption > p { + margin: 0.35rem 0 0; + color: var(--spec-muted); + font-size: 0.875rem; + line-height: 1.6; +} + +.docs-comparison-direction { + display: block; + margin-top: 0.5rem; + color: var(--spec-faint); + font-size: 0.75rem; + font-weight: 650; + letter-spacing: 0.02em; +} + +.docs-comparison-bars { + display: flex; + flex-direction: column; + gap: 1rem; + margin-top: 1.25rem; +} + +.docs-comparison-row { + display: grid; + min-width: 0; + grid-template-columns: minmax(10rem, 1fr) minmax(10rem, 2fr) minmax(7rem, auto); + align-items: center; + gap: 0.75rem; +} + +.docs-comparison-labels { + display: flex; + min-width: 0; + align-items: baseline; + justify-content: space-between; + gap: 0.75rem; + font-size: 0.8125rem; +} + +.docs-comparison-labels strong { + overflow-wrap: anywhere; +} + +.docs-comparison-value, +.docs-comparison-note { + color: var(--spec-muted); + font-family: var(--docs-font-mono); + font-size: 0.75rem; + white-space: nowrap; +} + +.docs-comparison-track { + height: 0.65rem; + overflow: hidden; + border-radius: 999px; + background: var(--spec-border); +} + +.docs-comparison-bar { + height: 100%; + min-width: 0.35rem; + border-radius: inherit; + background: var(--spec-faint); +} + +.docs-comparison-bar-highlighted { + background: var(--spec-accent-500); +} + +@media (max-width: 700px) { + .docs-catalog-grid, + .docs-showcase-reference { + grid-template-columns: 1fr; + } + + .docs-mini-shell { + grid-template-columns: 1fr; + } + + .docs-mini-shell > aside, + .docs-mini-shell > nav { + display: none; + } + + .docs-comparison-row { + grid-template-columns: 1fr auto; + gap: 0.4rem 0.75rem; + } + + .docs-comparison-labels { + grid-column: 1 / -1; + } + + .docs-comparison-note { + text-align: right; + } +} + /* Custom styles inspired by Tailwind CSS docs */ .prose pre { position: relative; diff --git a/sln/src/Docs/src/Common/Handler.fs b/sln/src/Docs/src/Common/Handler.fs index 58dedc3..ab1ed4e 100644 --- a/sln/src/Docs/src/Common/Handler.fs +++ b/sln/src/Docs/src/Common/Handler.fs @@ -1,10 +1,25 @@ namespace Docs.Common +open System +open System.Net open Docs.Pages open FSharp.ViewEngine open Giraffe module Handler = + let private productionOrigin = "https://fsharpviewengine.meiermade.com" + + let sitemap = + let urls = + Registry.all + |> List.map (fun page -> + let location = productionOrigin + (if page.path = "/" then "/" else page.path) + $" {WebUtility.HtmlEncode location}") + |> String.concat Environment.NewLine + $"{Environment.NewLine}{Environment.NewLine}{urls}{Environment.NewLine}{Environment.NewLine}" + + let robots = $"User-agent: *{Environment.NewLine}Allow: /{Environment.NewLine}Sitemap: {productionOrigin}/sitemap.xml{Environment.NewLine}" + let render page : HttpHandler = let html = page |> View.document Registry.navigation |> Render.toHtmlDocString htmlString html @@ -15,4 +30,14 @@ module Handler = (page.path :: page.aliases) |> List.map (fun path -> route path >=> render page)) - let routes : HttpHandler = choose pageRoutes + let private previewRoutes = + Showcase.previewRoutes + |> Map.toList + |> List.map (fun (path, html) -> route path >=> htmlString html) + + let routes : HttpHandler = + choose [ + route "/sitemap.xml" >=> setHttpHeader "Content-Type" "application/xml; charset=utf-8" >=> setBodyFromString sitemap + route "/robots.txt" >=> setHttpHeader "Content-Type" "text/plain; charset=utf-8" >=> setBodyFromString robots + choose (previewRoutes @ pageRoutes) + ] diff --git a/sln/src/Docs/src/Common/Model.fs b/sln/src/Docs/src/Common/Model.fs index 409eb6d..30cad1d 100644 --- a/sln/src/Docs/src/Common/Model.fs +++ b/sln/src/Docs/src/Common/Model.fs @@ -1,5 +1,7 @@ namespace Docs.Common +open FSharp.ViewEngine + type InlineContent = | Text of string | Strong of InlineContent list @@ -32,6 +34,7 @@ type DocNode = | BarChart of ComparisonChart | DataTable of headers:string list * rows:string list list | CodeBlock of language:string * source:string + | Example of id:string * label:string * language:string * source:string * preview:HtmlElement type DocPage = { id:string @@ -45,7 +48,8 @@ type DocPage = type NavSection = { label:string - pages:DocPage list } + pages:DocPage list + sections:NavSection list } module DocPage = let headings page = diff --git a/sln/src/Docs/src/Common/SourceRegion.fs b/sln/src/Docs/src/Common/SourceRegion.fs new file mode 100644 index 0000000..4ca16b5 --- /dev/null +++ b/sln/src/Docs/src/Common/SourceRegion.fs @@ -0,0 +1,51 @@ +namespace Docs.Common + +open System +open System.IO +open System.Reflection + +module SourceRegion = + let private lines (source:string) = + source.Replace("\r\n", "\n").Replace('\r', '\n').Split('\n') + + let extract id source = + if String.IsNullOrWhiteSpace id then invalidArg (nameof id) "A source region ID is required." + + let startMarker = $"// docs-example:start {id}" + let endMarker = $"// docs-example:end {id}" + let sourceLines = lines source + + let indexes marker = + sourceLines + |> Array.indexed + |> Array.choose (fun (index, line) -> if line.Trim() = marker then Some index else None) + + let starts = indexes startMarker + let ends = indexes endMarker + + if starts.Length <> 1 || ends.Length <> 1 || ends[0] <= starts[0] then + invalidArg (nameof id) $"Source region '{id}' must have exactly one ordered start and end marker." + + let region = sourceLines[(starts[0] + 1)..(ends[0] - 1)] + let contentLines = region |> Array.filter (String.IsNullOrWhiteSpace >> not) + let indentation = + if Array.isEmpty contentLines then 0 + else + contentLines + |> Array.map (fun line -> line.Length - line.TrimStart().Length) + |> Array.min + + region + |> Array.map (fun line -> + if String.IsNullOrWhiteSpace line then "" + elif line.Length >= indentation then line.Substring(indentation) + else line) + |> String.concat "\n" + |> _.Trim('\n') + + let readEmbedded (assembly:Assembly) resourceName = + use stream = assembly.GetManifestResourceStream resourceName + if isNull stream then + invalidArg (nameof resourceName) $"Embedded source resource '{resourceName}' was not found." + use reader = new StreamReader(stream) + reader.ReadToEnd() diff --git a/sln/src/Docs/src/Common/View.fs b/sln/src/Docs/src/Common/View.fs index d4f1396..30f1ae3 100644 --- a/sln/src/Docs/src/Common/View.fs +++ b/sln/src/Docs/src/Common/View.fs @@ -1,432 +1,203 @@ namespace Docs.Common open System +open Docs.Pages open FSharp.ViewEngine -open type Datastar +open FSharp.ViewEngine.Docs open type Html -open type Svg module View = - let private outlineIcon (classes:string) (ariaHidden:bool) (d:string) = - svg { - _xmlns "http://www.w3.org/2000/svg" - _fill "none" - _viewBox "0 0 24 24" - _strokeWidth 1.5 - _stroke "currentColor" - _class classes - if ariaHidden then _ariaHidden true - path { - _strokeLinecap "round" - _strokeLinejoin "round" - _d d - } - } - - let private menuIcon = - outlineIcon "h-6 w-6" false "M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" - - let private xMarkIcon = - outlineIcon "h-6 w-6" false "M6 18 18 6M6 6l12 12" - - let private githubIcon = - svg { - _ariaHidden true - _viewBox "0 0 16 16" - _class "h-6 w-6 fill-slate-400 group-hover:fill-slate-500 dark:group-hover:fill-slate-300" - path { _d "M8 0C3.58 0 0 3.58 0 8C0 11.54 2.29 14.53 5.47 15.59C5.87 15.66 6.02 15.42 6.02 15.21C6.02 15.02 6.01 14.39 6.01 13.72C4 14.09 3.48 13.23 3.32 12.78C3.23 12.55 2.84 11.84 2.5 11.65C2.22 11.5 1.82 11.13 2.49 11.12C3.12 11.11 3.57 11.7 3.72 11.94C4.44 13.15 5.59 12.81 6.05 12.6C6.12 12.08 6.33 11.73 6.56 11.53C4.78 11.33 2.92 10.64 2.92 7.58C2.92 6.71 3.23 5.99 3.74 5.43C3.66 5.23 3.38 4.41 3.82 3.31C3.82 3.31 4.49 3.1 6.02 4.13C6.66 3.95 7.34 3.86 8.02 3.86C8.7 3.86 9.38 3.95 10.02 4.13C11.55 3.09 12.22 3.31 12.22 3.31C12.66 4.41 12.38 5.23 12.3 5.43C12.81 5.99 13.12 6.7 13.12 7.58C13.12 10.65 11.25 11.33 9.47 11.53C9.76 11.78 10.01 12.26 10.01 13.01C10.01 14.08 10 14.94 10 15.21C10 15.42 10.15 15.67 10.55 15.59C13.71 14.53 16 11.53 16 8C16 3.58 12.42 0 8 0Z" } - } - - let private sunIcon = - svg { - _class "h-5 w-5 text-sky-500 dark:hidden" - _xmlns "http://www.w3.org/2000/svg" - _viewBox "0 0 20 20" - _fill "currentColor" - _ariaHidden true - path { _d "M10 2a.75.75 0 0 1 .75.75v1.5a.75.75 0 0 1-1.5 0v-1.5A.75.75 0 0 1 10 2ZM10 15a.75.75 0 0 1 .75.75v1.5a.75.75 0 0 1-1.5 0v-1.5A.75.75 0 0 1 10 15ZM10 7a3 3 0 1 0 0 6 3 3 0 0 0 0-6ZM15.657 5.404a.75.75 0 1 0-1.06-1.06l-1.061 1.06a.75.75 0 0 0 1.06 1.06l1.06-1.06ZM6.464 14.596a.75.75 0 1 0-1.06-1.06l-1.06 1.06a.75.75 0 0 0 1.06 1.06l1.06-1.06ZM18 10a.75.75 0 0 1-.75.75h-1.5a.75.75 0 0 1 0-1.5h1.5A.75.75 0 0 1 18 10ZM5 10a.75.75 0 0 1-.75.75h-1.5a.75.75 0 0 1 0-1.5h1.5A.75.75 0 0 1 5 10ZM14.596 15.657a.75.75 0 0 0 1.06-1.06l-1.06-1.061a.75.75 0 1 0-1.06 1.06l1.06 1.06ZM5.404 6.464a.75.75 0 0 0 1.06-1.06l-1.06-1.06a.75.75 0 1 0-1.061 1.06l1.06 1.06Z" } - } - - let private moonIcon = - outlineIcon - "hidden h-5 w-5 stroke-sky-500 dark:block" - true - "M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z" - - let private sunIconSmall = - outlineIcon - "h-5 w-5" - false - "M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z" - - let private moonIconSmall = - outlineIcon - "h-5 w-5" - false - "M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z" - - let private monitorIcon = - outlineIcon - "h-5 w-5" - false - "M9 17.25v1.007a3 3 0 0 1-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0 1 15 18.257V17.25m6-12V15a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 15V5.25m18 0A2.25 2.25 0 0 0 18.75 3H5.25A2.25 2.25 0 0 0 3 5.25m18 0V12a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 12V5.25" - - let private pageHeader = - header { - _class [ - "sticky top-0 z-50 flex flex-none flex-wrap items-center justify-between" - "bg-white/75 px-4 py-5 shadow-md shadow-slate-900/5 backdrop-blur transition duration-500" - "sm:px-6 lg:px-8 dark:bg-slate-900/75 dark:shadow-none dark:backdrop-blur" - ] - div { - _class "flex items-center gap-4" - div { - _class "flex lg:hidden" - button { - _type "button" - _ariaLabel "Open navigation" - _dataOn ("click", "$mobileNavOpen = true") - _dataAttr ("aria-expanded", "$mobileNavOpen") - _class "relative cursor-pointer rounded-lg p-1 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-slate-700" - menuIcon - } - } - a { - _href "/" - _class "flex items-center gap-2 text-sm font-semibold tracking-wider text-slate-700 dark:text-white" - img { _src "/logo.svg"; _alt "FSharp.ViewEngine"; _class "h-6 w-6" } - "FSharp.ViewEngine" - } - } - div { - _class "relative flex basis-0 items-center justify-end gap-6 sm:gap-8 md:grow" - div { - _class "relative z-10" - _dataOn ("click", [ "outside" ], "$themeMenuOpen = false") - button { - _type "button" - _ariaLabel "Choose color theme" - _class "flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg p-1 transition-colors hover:bg-slate-100 dark:hover:bg-slate-700" - _dataOn ("click", "$themeMenuOpen = !$themeMenuOpen") - _dataAttr ("aria-expanded", "$themeMenuOpen") - sunIcon - moonIcon - } - div { - _dataShow "$themeMenuOpen" - _style "display: none" - _class [ - "absolute right-0 top-full mt-3 w-36 overflow-hidden rounded-lg" - "bg-white py-1 text-sm font-semibold text-slate-700 shadow-lg ring-1" - "ring-slate-900/10 dark:bg-slate-800 dark:text-slate-300 dark:ring-0" - ] - for value, label, icon in [ "light", "Light", sunIconSmall; "dark", "Dark", moonIconSmall; "system", "System", monitorIcon ] do - button { - _type "button" - _class "flex w-full items-center gap-2 px-3 py-2 hover:bg-slate-100 dark:hover:bg-slate-700/50" - _dataOn ("click", $"$theme = '{value}'; $themeMenuOpen = false") - _dataClass ("text-sky-500", $"$theme === '{value}'") - _dataAttr ("aria-pressed", $"$theme === '{value}'") - icon - label - } - } - } - a { - _href "https://github.com/meiermade/FSharp.ViewEngine" - _ariaLabel "FSharp.ViewEngine on GitHub" - _class "group" - githubIcon - } - } - } - - let private navLink currentPath (page:DocPage) = - let isActive = currentPath = page.path || List.contains currentPath page.aliases - li { - _class "relative" - a { - _class [ - "block w-full pl-3.5 before:pointer-events-none before:absolute" - "before:-left-1 before:top-1/2 before:h-1.5 before:w-1.5" - "before:-translate-y-1/2 before:rounded-full" - if isActive then - "font-semibold text-sky-500 before:bg-sky-500" - else - "text-slate-500 before:hidden before:bg-slate-300 hover:text-slate-600" - + " hover:before:block dark:text-slate-400 dark:before:bg-slate-700 dark:hover:text-slate-300" - ] - _href page.path - _dataOn ("click", "$mobileNavOpen = false") - page.navLabel - } - } - - let private sidebarNavigation navigation currentPath = - nav { - _ariaLabel "Documentation" - _class "text-base lg:text-sm" - ul { - _role "list" - _class "space-y-9" - for navSection in navigation do - li { - h2 { - _class "font-display font-medium text-slate-900 dark:text-white" - navSection.label - } - ul { - _role "list" - _class "mt-2 space-y-2 border-l-2 border-slate-100 lg:mt-4 lg:space-y-4 lg:border-slate-200 dark:border-slate-800" - for page in navSection.pages do - navLink currentPath page - } - } - } - } - - let private sidebar navigation currentPath = - div { - _class "hidden lg:relative lg:block lg:flex-none" - div { - _class "sticky top-[4.75rem] -ml-0.5 h-[calc(100vh-4.75rem)] w-64 overflow-y-auto py-16 pl-0.5 pr-8 xl:w-72 xl:pr-16" - sidebarNavigation navigation currentPath - } - } - - let private tableOfContents page = - let headings = DocPage.tableOfContents page - if List.isEmpty headings then - empty - else - nav { - _ariaLabel "On this page" - _class "sticky top-[4.75rem] -mr-6 w-56 flex-none overflow-y-auto py-16 pr-6" - h2 { - _class "font-display text-sm font-medium text-zinc-900 dark:text-white" - "On this page" - } - ul { - _role "list" - _class "mt-4 space-y-3 text-sm" - for heading in headings do - li { - _class (if heading.level = 3 then "pl-3" else "") - a { - _href $"#{heading.id}" - _class "text-zinc-500 hover:text-zinc-600 dark:text-zinc-400 dark:hover:text-zinc-300" - heading.title - } - } - } - } - - let rec private renderInline content = + let rec private renderInline (content:InlineContent) = match content with | Text value -> text value | Strong children -> strong { for child in children do renderInline child } | InlineContent.Code value -> code { value } - | Link(label, href) -> a { _href href; label } - - let private renderNode node = - match node with - | Heading heading -> - match heading.level with - | 2 -> h2 { _id heading.id; heading.title } - | 3 -> h3 { _id heading.id; heading.title } - | _ -> h4 { _id heading.id; heading.title } - | Paragraph children -> p { for child in children do renderInline child } - | UnorderedList items -> ul { for item in items do li { for child in item do renderInline child } } - | OrderedList items -> ol { for item in items do li { for child in item do renderInline child } } - | BarChart chart -> - figure { - _ariaLabel chart.label - _class "not-prose my-8 rounded-xl border border-slate-200 bg-slate-50/60 p-5 sm:p-6 dark:border-slate-700 dark:bg-slate-800/40" - figcaption { - p { - _class "font-semibold text-slate-900 dark:text-white" - chart.title - } - p { - _class "mt-1 text-sm text-slate-600 dark:text-slate-300" - chart.description - } - } - div { - _class "mt-6 space-y-5" - for bar in chart.bars do - div { - div { - _class "mb-2 flex flex-wrap items-baseline justify-between gap-x-4 gap-y-1 text-sm" - span { - _class [ - "font-medium" - if bar.highlighted then "text-sky-600 dark:text-sky-400" else "text-slate-700 dark:text-slate-200" - ] - bar.label - } - span { - _class "font-mono text-xs tabular-nums text-slate-600 dark:text-slate-300" - $"{bar.duration} · {bar.comparison}" - } - } - div { - _ariaHidden true - _class "h-3 overflow-hidden rounded-full bg-slate-200 dark:bg-slate-700" - div { - _class [ - "h-full rounded-full" - if bar.highlighted then "bg-sky-500" else "bg-slate-400 dark:bg-slate-500" - ] - _style ("width: " + string (Math.Clamp(bar.widthPercent, 0, 100)) + "%") - } - } - } - } + | Link(label, href) -> a { _href href; _class "spec-content-link"; label } + + let private comparisonChart (chart:ComparisonChart) = + figure { + _ariaLabel chart.label + _class "docs-comparison-chart" + figcaption { + strong { chart.title } + p { chart.description } + span { _class "docs-comparison-direction"; "Mean duration · Lower is better" } } - | DataTable(headers, rows) -> div { - _class "not-prose my-8 overflow-x-auto rounded-xl ring-1 ring-slate-200 dark:ring-slate-700" - table { - _class "min-w-full divide-y divide-slate-200 text-sm dark:divide-slate-700" - thead { - _class "bg-slate-50 dark:bg-slate-800/60" - tr { - for index, header in List.indexed headers do - th { - _scope "col" - _class [ - "whitespace-nowrap px-4 py-3 font-semibold text-slate-900 dark:text-white" - if index = 0 then "text-left" else "text-right" - ] - header - } - } - } - tbody { - _class "divide-y divide-slate-100 bg-white dark:divide-slate-800 dark:bg-slate-900" - for row in rows do - tr { - _class "hover:bg-slate-50/70 dark:hover:bg-slate-800/40" - for index, value in List.indexed row do - td { - _class [ - "whitespace-nowrap px-4 py-3" - if index = 0 then - "font-medium text-slate-700 dark:text-slate-200" - else - "text-right font-mono tabular-nums text-slate-600 dark:text-slate-300" - ] - value - } - } - } - } - } - | CodeBlock(language, source) -> - let prismLanguage = if language = "fs" then "fsharp" else language - pre { - _class $"language-{prismLanguage}" - code { _class $"language-{prismLanguage}"; source } - } - - let document navigation page = - let siteUrl = "https://fsharpviewengine.meiermade.com" - let pageUrl = if page.path = "/" then siteUrl else siteUrl + page.path - let socialDescription = "A minimal, fast view engine for F#. Documentation and examples for FSharp.ViewEngine." - let socialImageUrl = siteUrl + "/android-chrome-512x512.png" - - html { - _lang "en" - _class "h-full antialiased" - head { - meta { _charset "utf-8" } - meta { _name "viewport"; _content "width=device-width, initial-scale=1" } - title page.browserTitle - link { _rel "canonical"; _href pageUrl } - meta { _name "description"; _content socialDescription } - meta { _property "og:type"; _content "website" } - meta { _property "og:site_name"; _content "FSharp.ViewEngine" } - meta { _property "og:title"; _content page.browserTitle } - meta { _property "og:description"; _content socialDescription } - meta { _property "og:url"; _content pageUrl } - meta { _property "og:image"; _content socialImageUrl } - meta { _property "og:image:alt"; _content "FSharp.ViewEngine logo" } - meta { _name "twitter:card"; _content "summary_large_image" } - meta { _name "twitter:title"; _content page.browserTitle } - meta { _name "twitter:description"; _content socialDescription } - meta { _name "twitter:image"; _content socialImageUrl } - meta { _name "twitter:image:alt"; _content "FSharp.ViewEngine logo" } - script { js "let t=localStorage.getItem('theme');if(t==='dark'||(!t||t==='system')&&window.matchMedia('(prefers-color-scheme: dark)').matches){document.documentElement.classList.add('dark')}" } - link { _rel "stylesheet"; _href "/css/output.css" } - script { _type "module"; _src "/scripts/datastar.1.0.2.js" } - script { _src "https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/prism.min.js" } - link { _rel "stylesheet"; _href "https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/themes/prism-tomorrow.min.css" } - script { _src "https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/components/prism-fsharp.min.js" } - } - body { - _class "min-h-full bg-white dark:bg-slate-900" - _dataSignals "{mobileNavOpen: false, themeMenuOpen: false, theme: localStorage.getItem('theme') || 'system'}" - _dataEffect "localStorage.setItem('theme', $theme); document.documentElement.classList.toggle('dark', $theme === 'dark' || ($theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches))" - _dataOn ("keydown", [ "window" ], "evt.key === 'Escape' && ($mobileNavOpen = false, $themeMenuOpen = false)") - pageHeader - div { - _dataShow "$mobileNavOpen" - _style "display: none" - _class "fixed inset-0 z-[70] lg:hidden" - div { - _id "mobile-navigation-backdrop" - _class "absolute inset-0 bg-slate-950/60 backdrop-blur-sm" - _dataOn ("click", "$mobileNavOpen = false") - } + _class "docs-comparison-bars" + for bar in chart.bars do div { - _class "absolute inset-y-0 left-0 w-full max-w-xs overflow-y-auto bg-white px-6 py-5 shadow-2xl ring-1 ring-slate-900/10 dark:bg-slate-900 dark:ring-white/10" + _class "docs-comparison-row" div { - _class "mb-6 flex items-center justify-between" - a { - _href "/" - _class "flex items-center gap-2 text-sm font-semibold tracking-wider text-slate-700 dark:text-white" - _dataOn ("click", "$mobileNavOpen = false") - img { _src "/logo.svg"; _alt "FSharp.ViewEngine"; _class "h-6 w-6" } - "FSharp.ViewEngine" - } - button { - _type "button" - _ariaLabel "Close navigation" - _class "cursor-pointer rounded p-1 text-slate-500 hover:bg-slate-100 dark:text-slate-400 dark:hover:bg-slate-700" - _dataOn ("click", "$mobileNavOpen = false") - xMarkIcon - } + _class "docs-comparison-labels" + strong { bar.label } + span { _class "docs-comparison-value"; bar.duration } } - sidebarNavigation navigation page.path - } - } - div { - _id "app" - _class "relative mx-auto flex max-w-8xl justify-center sm:px-2 lg:px-8 xl:px-12" - sidebar navigation page.path - div { - _class "min-w-0 max-w-3xl flex-auto px-4 pt-6 pb-12 lg:max-w-none lg:pl-8 lg:pr-0 xl:px-16" - article { - div { - _class "mb-8" - p { - _class "font-display text-sm font-medium text-sky-500" - page.category - } - } + div { + _class "docs-comparison-track" + _ariaHidden true div { - _class "prose prose-slate max-w-none dark:prose-invert [&_h1]:scroll-mt-28 [&_h2]:scroll-mt-28 [&_h3]:scroll-mt-28" - h1 { page.title } - for node in page.nodes do - renderNode node + _class (if bar.highlighted then "docs-comparison-bar docs-comparison-bar-highlighted" else "docs-comparison-bar") + _style ("width:" + string (Math.Clamp(bar.widthPercent, 0, 100)) + "%") } } + span { _class "docs-comparison-note"; bar.comparison } } - div { - _class "hidden xl:sticky xl:top-[4.75rem] xl:-mr-6 xl:block xl:h-[calc(100vh-4.75rem)] xl:flex-none xl:overflow-y-auto xl:py-12 xl:pr-6" - tableOfContents page - } - } } } + + let private block (node:DocNode) = + match node with + | DocNode.Paragraph children -> docsCustom (p { _class "spec-paragraph"; for child in children do renderInline child }) + | DocNode.UnorderedList items -> + docsCustom (ul { _class "spec-bullets"; for item in items do li { for child in item do renderInline child } }) + | DocNode.OrderedList items -> + docsCustom (ol { _class "spec-bullets"; for item in items do li { for child in item do renderInline child } }) + | DocNode.BarChart chart -> docsCustom (comparisonChart chart) + | DocNode.DataTable(headers, rows) -> docsTable headers rows + | DocNode.CodeBlock(language, source) -> docsCode language source + | DocNode.Example(id, label, language, source, preview) -> docsCustom (docsExample id label language source preview) + | DocNode.Heading _ -> invalidOp "Headings are converted to documentation sections." + + let private sections (nodes:DocNode list) : DocsSection list = + let flush isDeclared title id level blocks sections = + if not isDeclared && List.isEmpty blocks then sections + else + { id = id; title = title; level = level; blocks = List.rev blocks } + :: sections + + let rec loop isDeclared title id level blocks sections remaining = + match remaining with + | [] -> flush isDeclared title id level blocks sections |> List.rev + | DocNode.Heading heading :: tail -> + let sections = flush isDeclared title id level blocks sections + loop true heading.title heading.id heading.level [] sections tail + | node :: tail -> loop isDeclared title id level (block node :: blocks) sections tail + + loop false "Overview" "overview" 2 [] [] nodes + + let private slug (value:string) = + value.ToLowerInvariant() + |> Seq.map (fun character -> if Char.IsLetterOrDigit character then character else '-') + |> Seq.toArray + |> String + + let private navigation (sections:NavSection list) = + let rec group (section:NavSection) = + let pages = + section.pages + |> List.map (fun page -> docsNavPage page.id page.navLabel page.path page.path) + + let groups = section.sections |> List.map group + + docsNavGroup + (slug section.label) + section.label + (section.label = "Getting started") + (pages @ groups) + + sections |> List.map group + + let private assets = + { DocsAssets.defaults with + productStylesheets = [ "/css/output.css" ] + additionalHead = + [ link { _rel "icon"; _href "/favicon.svg"; _type "image/svg+xml" } + link { _rel "manifest"; _href "/site.webmanifest" } + script { _src "https://cdn.jsdelivr.net/npm/@tailwindplus/elements@1.0.22"; _type "module" } ] } + + let private site (sections:NavSection list) search : DocsSite = + { name = "FSharp.ViewEngine" + baseUrl = Some "https://fsharpviewengine.meiermade.com" + description = Some "Documentation, API reference, and executable specifications for FSharp.ViewEngine." + repository = Some(DocsRepository.github "https://github.com/meiermade/FSharp.ViewEngine") + brandMark = img { _src "/logo.svg"; _alt "" } + homeId = "home" + navigation = navigation sections + storageKey = "fsharp-viewengine-docs-navigation" + defaultColorMode = DocsColorMode.System + theme = DocsTheme.sky + assets = assets + search = search } + + let private inlineText content = + let rec collect = function + | Text value -> value + | Strong children -> children |> List.map collect |> String.concat "" + | InlineContent.Code value -> value + | Link(label, _) -> label + content |> List.map collect |> String.concat "" + + let private legacyPage (page:DocPage) = + let description = + page.nodes + |> List.tryPick (function | DocNode.Paragraph content -> Some(inlineText content) | _ -> None) + |> Option.defaultValue page.title + let rendered = + docsArticle page.id page.title description (sections page.nodes) + |> docsWithMetadata { + DocsPageMetadata.defaults with + browserTitle = Some page.browserTitle + socialImage = Some "https://fsharpviewengine.meiermade.com/social-card.png" } + if page.id = "home" then + rendered + |> docsWithHeadingAdornment ( + div { + _class "docs-home-logo" + img { _src "/logo.svg"; _alt "" } + }) + else rendered + + let private pageLink label href = Some(docsPageLink label href) + + let private pager activeId = + match activeId with + | "home" -> Some(docsPager None (pageLink "Installation" "/installation")) + | "installation" -> Some(docsPager (pageLink "Introduction" "/") (pageLink "Build your first view" "/getting-started/first-view")) + | "first-view" -> Some(docsPager (pageLink "Installation" "/installation") (pageLink "Elements and attributes" "/guides/elements-and-attributes")) + | "elements-and-attributes" -> Some(docsPager (pageLink "Build your first view" "/getting-started/first-view") (pageLink "Composition and control flow" "/guides/composition-and-control-flow")) + | "composition-control-flow" -> Some(docsPager (pageLink "Elements and attributes" "/guides/elements-and-attributes") (pageLink "Rendering" "/guides/rendering")) + | "rendering" -> Some(docsPager (pageLink "Composition and control flow" "/guides/composition-and-control-flow") (pageLink "Encoding and trusted content" "/guides/encoding-and-trusted-content")) + | "encoding" -> Some(docsPager (pageLink "Rendering" "/guides/rendering") (pageLink "Accessibility" "/guides/accessibility")) + | "accessibility" -> Some(docsPager (pageLink "Encoding and trusted content" "/guides/encoding-and-trusted-content") (pageLink "Custom elements and extensions" "/custom")) + | "custom" -> Some(docsPager (pageLink "Accessibility" "/guides/accessibility") (pageLink "Giraffe" "/usage")) + | "usage" -> Some(docsPager (pageLink "Custom elements and extensions" "/custom") (pageLink "SVG" "/extensions/svg")) + | "svg" -> Some(docsPager (pageLink "Giraffe" "/usage") (pageLink "Datastar" "/extensions/datastar")) + | "datastar" -> Some(docsPager (pageLink "SVG" "/extensions/svg") (pageLink "HTMX" "/extensions/htmx")) + | "htmx" -> Some(docsPager (pageLink "Datastar" "/extensions/datastar") (pageLink "Alpine" "/extensions/alpine")) + | "alpine" -> Some(docsPager (pageLink "HTMX" "/extensions/htmx") (pageLink "Tailwind Plus Elements" "/extensions/tailwind-elements")) + | "tailwind-elements" -> Some(docsPager (pageLink "Alpine" "/extensions/alpine") (pageLink "FSharp.ViewEngine.Docs" "/docs")) + | "docs-overview" -> Some(docsPager None (pageLink "Layouts" "/docs/components/layouts")) + | "docs-layouts" -> Some(docsPager (pageLink "Overview" "/docs") (pageLink "Content" "/docs/components/content")) + | "docs-content" -> Some(docsPager (pageLink "Layouts" "/docs/components/layouts") (pageLink "Navigation" "/docs/components/navigation")) + | "docs-navigation" -> Some(docsPager (pageLink "Content" "/docs/components/content") (pageLink "Interactive examples" "/docs/components/interactive-examples")) + | "docs-interactive" -> Some(docsPager (pageLink "Navigation" "/docs/components/navigation") (pageLink "API reference components" "/docs/components/api-reference")) + | "docs-api-components" -> Some(docsPager (pageLink "Interactive examples" "/docs/components/interactive-examples") (pageLink "Diagrams" "/docs/components/diagrams")) + | "docs-diagrams" -> Some(docsPager (pageLink "API reference components" "/docs/components/api-reference") (pageLink "Documentation site" "/docs/page-examples/documentation-site")) + | "docs-page-documentation-site" -> Some(docsPager (pageLink "Diagrams" "/docs/components/diagrams") (pageLink "API reference page" "/docs/page-examples/api-reference")) + | "docs-page-api-reference" -> Some(docsPager (pageLink "Documentation site" "/docs/page-examples/documentation-site") (pageLink "Executable specification page" "/docs/page-examples/executable-specification")) + | "docs-page-executable-specification" -> Some(docsPager (pageLink "API reference page" "/docs/page-examples/api-reference") (pageLink "Benchmarks" "/benchmarks")) + | "benchmarks" -> Some(docsPager (pageLink "Executable specification page" "/docs/page-examples/executable-specification") (pageLink "Changelog" "/changelog")) + | "changelog" -> Some(docsPager (pageLink "Benchmarks" "/benchmarks") None) + | _ -> None + + let renderPage (navigation:NavSection list) (legacy:DocPage) = + let registered = + let rec sectionPages section = section.pages @ (section.sections |> List.collect sectionPages) + navigation |> List.collect sectionPages + let search = + registered + |> List.map (fun (page:DocPage) -> + let rendered = Showcase.tryPage page.path |> Option.defaultWith (fun () -> legacyPage page) + docsSearchEntry page.path rendered [ page.category; page.navLabel ]) + |> DocsSearch.index + let docsPage = Showcase.tryPage legacy.path |> Option.defaultWith (fun () -> legacyPage legacy) + let docsPage = + docsPage + |> docsWithMetadata { + docsPage.metadata with + socialImage = Some "https://fsharpviewengine.meiermade.com/social-card.png" } + let docsPage = pager legacy.id |> Option.map (fun value -> docsWithPager value docsPage) |> Option.defaultValue docsPage + docsDocument (site navigation search) docsPage + + let document navigation page = renderPage navigation page diff --git a/sln/src/Docs/src/Pages/Alpine.fs b/sln/src/Docs/src/Pages/Alpine.fs index 3ac47ba..808cf07 100644 --- a/sln/src/Docs/src/Pages/Alpine.fs +++ b/sln/src/Docs/src/Pages/Alpine.fs @@ -1,8 +1,37 @@ namespace Docs.Pages open Docs.Common +open FSharp.ViewEngine +open type Html module Alpine = + let private completeExampleSource = """div { + _xData "{ open: false }" + + button { + _xOn ("click", "open = !open") + _xOn ("keydown", [ "escape"; "prevent" ], "open = false") + _xBind ("aria-expanded", "open") + "Toggle details" + } + + div { + _xShow "open" + _xTransition [ "duration.200ms"; "opacity" ] + "Details" + } +}""" + + let private completeExamplePreview = + div { + _style "min-height:12rem;border-radius:.65rem;background:#f8fafc;padding:1.5rem;color:#0f172a" + p { _style "margin:0 0 1rem;color:#64748b;font-size:.8rem"; "Equivalent interaction preview using the browser's native disclosure control." } + details { + summary { _style "cursor:pointer;font-weight:650"; "Toggle details" } + p { _style "margin:.75rem 0 0"; "Details" } + } + } + let private section id title = [ Heading { id = id; title = title; level = 2 } ] @@ -130,22 +159,7 @@ div { section "complete-example" "Complete Example"; [ Paragraph [ Text "A core-only disclosure component with keyboard handling and transitions:" ]; - CodeBlock("fsharp", """div { - _xData "{ open: false }" - - button { - _xOn ("click", "open = !open") - _xOn ("keydown", [ "escape"; "prevent" ], "open = false") - _xBind ("aria-expanded", "open") - "Toggle details" - } - - div { - _xShow "open" - _xTransition [ "duration.200ms"; "opacity" ] - "Details" - } -}""") ] ] + CodeBlock("fsharp", completeExampleSource) ] ] |> List.concat let page = diff --git a/sln/src/Docs/src/Pages/Changelog.fs b/sln/src/Docs/src/Pages/Changelog.fs index 6b7026b..feb9f8f 100644 --- a/sln/src/Docs/src/Pages/Changelog.fs +++ b/sln/src/Docs/src/Pages/Changelog.fs @@ -13,6 +13,20 @@ module Changelog = browserTitle = "Changelog - FSharp.ViewEngine" nodes = [ Paragraph [ Text "Notable changes to FSharp.ViewEngine are recorded here. The structure follows "; Link("Keep a Changelog", "https://keepachangelog.com/en/2.0.0/"); Text ". Releases use the project's existing calendar-oriented version scheme, and incompatible API changes are marked explicitly." ]; + Heading { id = "released"; title = "Released versions"; level = 2 }; + Paragraph [ Text "Published artifacts and complete commit histories are available from "; Link("GitHub Releases", "https://github.com/meiermade/FSharp.ViewEngine/releases"); Text "." ]; + Heading { id = "v2026-8-0"; title = "2026.8.0 · August 7, 2026"; level = 3 }; + UnorderedList [ + [ Text "Improved correctness, documentation, package validation, supported-runtime coverage, source debugging, and benchmark methodology." ]; + [ Text "See "; Link("release v2026.8.0", "https://github.com/meiermade/FSharp.ViewEngine/releases/tag/v2026.8.0"); Text " for the immutable source and artifacts." ] + ]; + Heading { id = "v2026-2-5"; title = "2026.2.5 · February 28, 2026"; level = 3 }; + UnorderedList [ + [ Text "Updated release deployment triggers and preserved the public API baseline used by package validation." ]; + [ Text "See "; Link("release v2026.2.5", "https://github.com/meiermade/FSharp.ViewEngine/releases/tag/v2026.2.5"); Text "." ] + ]; + Heading { id = "older-releases"; title = "Older releases"; level = 3 }; + Paragraph [ Text "Earlier calendar releases remain available in the "; Link("complete release history", "https://github.com/meiermade/FSharp.ViewEngine/releases"); Text "." ]; Heading { id = "unreleased"; title = "Unreleased"; level = 2 }; Heading { id = "added"; title = "Added"; level = 3 }; UnorderedList [ diff --git a/sln/src/Docs/src/Pages/CoreGuides.fs b/sln/src/Docs/src/Pages/CoreGuides.fs new file mode 100644 index 0000000..b4656c8 --- /dev/null +++ b/sln/src/Docs/src/Pages/CoreGuides.fs @@ -0,0 +1,206 @@ +namespace Docs.Pages + +open Docs.Common + +module CoreGuides = + let firstView = + { id = "first-view" + path = "/getting-started/first-view" + aliases = [] + navLabel = "Build your first view" + category = "Getting started" + title = "Build your first view" + browserTitle = "Build your first view · FSharp.ViewEngine" + nodes = [ + Paragraph [ Text "Create a typed HTML view, render it as a fragment or complete document, and reuse ordinary F# values as components." ]; + Heading { id = "create-the-view"; title = "Create the view"; level = 2 } + CodeBlock("fsharp", """open FSharp.ViewEngine +open type Html + +let greeting name = + main { + _class "content" + h1 { $"Hello, {name}!" } + p { "Built with typed F# computation expressions." } + }"""); + Heading { id = "render-the-view"; title = "Render the view"; level = 2 }; + Paragraph [ Text "Use "; InlineContent.Code "Render.toString"; Text " for a fragment. Use "; InlineContent.Code "Render.toHtmlDocString"; Text " when the root is a complete "; InlineContent.Code "html"; Text " element and the response needs a doctype." ]; + CodeBlock("fsharp", """let fragment = greeting "Ada" |> Render.toString + +let document = + html { + _lang "en" + head { title "Greeting" } + body { greeting "Ada" } + } + |> Render.toHtmlDocString"""); + Heading { id = "reuse-components"; title = "Reuse components"; level = 2 }; + Paragraph [ Text "A component is an ordinary function that returns an "; InlineContent.Code "HtmlElement"; Text ". Compose it directly inside another builder without a template runtime or component base class." ]; + CodeBlock("fsharp", """let badge label = span { _class "badge"; label } + +div { + badge "Typed" + badge "Composable" +}"""); + Heading { id = "next"; title = "Next"; level = 2 }; + Paragraph [ Text "Continue with "; Link("Elements and attributes", "/guides/elements-and-attributes"); Text " to learn the core DSL." ] ] } + + let elementsAndAttributes = + { id = "elements-and-attributes" + path = "/guides/elements-and-attributes" + aliases = [] + navLabel = "Elements and attributes" + category = "Core concepts" + title = "Elements and attributes" + browserTitle = "Elements and attributes · FSharp.ViewEngine" + nodes = [ + Paragraph [ Text "Build standard or custom markup with typed element builders, underscore-prefixed attributes, encoded text, and mixed attributes and children." ]; + Heading { id = "elements"; title = "Elements"; level = 2 } + Paragraph [ Text "Open the static "; InlineContent.Code "Html"; Text " type to use standard HTML builders without qualification. Regular elements accept attributes and children; void elements accept attributes only." ]; + CodeBlock("fsharp", """open FSharp.ViewEngine +open type Html + +article { + h2 { "Account" } + p { "Manage your profile." } + input { _type "email"; _name "email" } +}"""); + Heading { id = "attributes"; title = "Attributes"; level = 2 }; + Paragraph [ Text "Attribute helpers begin with an underscore, so they remain visually distinct from child elements. Boolean attributes render without a value." ]; + CodeBlock("fsharp", """button { + _type "button" + _class [ "button"; "button-primary" ] + _disabled + "Save" +}"""); + Heading { id = "mixed-content"; title = "Mixed content"; level = 2 }; + Paragraph [ Text "Attributes, strings, and child elements can be yielded in one computation expression. Strings become encoded text nodes." ]; + CodeBlock("fsharp", """a { + "Read " + strong { "the guide" } + _href "/guide" + _class "guide-link" +}"""); + Heading { id = "escape-hatches"; title = "Generic escape hatches"; level = 2 }; + Paragraph [ Text "Use "; InlineContent.Code "Html.el"; Text ", "; InlineContent.Code "Html.elVoid"; Text ", and "; InlineContent.Code "_attr"; Text " for custom elements and attributes. Names are developer-controlled markup and are not validated." ] ] } + + let composition = + { id = "composition-control-flow" + path = "/guides/composition-and-control-flow" + aliases = [] + navLabel = "Composition and control flow" + category = "Core concepts" + title = "Composition and control flow" + browserTitle = "Composition and control flow · FSharp.ViewEngine" + nodes = [ + Paragraph [ Text "Compose views with ordinary functions and use F# conditionals and loops directly inside element computation expressions." ]; + Heading { id = "functions-as-components"; title = "Functions as components"; level = 2 } + CodeBlock("fsharp", """let navigationItem current href label = + li { + a { + _href href + if current then _ariaCurrent "page" + label + } + }"""); + Heading { id = "conditional-content"; title = "Conditional content"; level = 2 }; + CodeBlock("fsharp", """div { + if validationErrors.IsEmpty then + p { _class "success"; "Ready to submit." } + else + ul { + for error in validationErrors do + li { error } + } +}"""); + Heading { id = "sequences"; title = "Sequences"; level = 2 }; + Paragraph [ Text "The builders support "; InlineContent.Code "for"; Text " expressions over sequences. Keep rendering deterministic: build a fresh mutable element tree for each response rather than mutating or concurrently rendering one instance." ]; + CodeBlock("fsharp", """ul { + for item in items do + li { _data("item-id", item.id); item.label } +}""") ] } + + let rendering = + { id = "rendering" + path = "/guides/rendering" + aliases = [] + navLabel = "Rendering" + category = "Core concepts" + title = "Rendering" + browserTitle = "Rendering · FSharp.ViewEngine" + nodes = [ + Paragraph [ Text "Choose fragment or document rendering deliberately and render each completed view at the application boundary." ]; + Heading { id = "fragments"; title = "Fragments"; level = 2 } + Paragraph [ InlineContent.Code "Render.toString"; Text " serializes exactly the supplied element and does not prepend a doctype." ]; + CodeBlock("fsharp", """let fragment = + div { _class "notice"; "Saved" } + |> Render.toString +//
Saved
"""); + Heading { id = "documents"; title = "Documents"; level = 2 }; + Paragraph [ InlineContent.Code "Render.toHtmlDocString"; Text " prepends "; InlineContent.Code ""; Text " and is intended for a complete HTML document." ]; + CodeBlock("fsharp", """let responseBody = + html { + _lang "en" + head { title "Account" } + body { main { h1 { "Account" } } } + } + |> Render.toHtmlDocString"""); + Heading { id = "application-boundaries"; title = "Application boundaries"; level = 2 }; + Paragraph [ Text "FSharp.ViewEngine has no web-framework dependency. Pass the resulting string to your framework's normal HTML response API. See the "; Link("Giraffe integration", "/usage"); Text " for a complete server example." ] ] } + + let encoding = + { id = "encoding" + path = "/guides/encoding-and-trusted-content" + aliases = [] + navLabel = "Encoding and trusted content" + category = "Core concepts" + title = "Encoding and trusted content" + browserTitle = "Encoding and trusted content · FSharp.ViewEngine" + nodes = [ + Paragraph [ Text "Text and attribute values are HTML-encoded by default. Cross the raw markup and executable-expression boundaries only with trusted application-controlled values." ]; + Heading { id = "encoded-by-default"; title = "Encoded by default"; level = 2 } + CodeBlock("fsharp", """div { + _title "5 < 10" + "User text" +} +//
<strong>User text</strong>
"""); + Heading { id = "trusted-raw-content"; title = "Trusted raw content"; level = 2 }; + Paragraph [ InlineContent.Code "Html.raw"; Text " and "; InlineContent.Code "Html.js"; Text " bypass encoding. They do not sanitize HTML or JavaScript and must not receive user-controlled content." ]; + CodeBlock("fsharp", """script { Html.js "window.app.start()" } +div { Html.raw trustedSvgMarkup }"""); + Heading { id = "trusted-names-and-expressions"; title = "Trusted names and expressions"; level = 2 }; + Paragraph [ Text "Custom element names, custom attribute names, inline event handlers, and Alpine/Datastar expressions are executable or structural code. Encoding their values preserves HTML syntax but does not make untrusted code safe." ] ] } + + let accessibility = + { id = "accessibility" + path = "/guides/accessibility" + aliases = [] + navLabel = "Accessibility" + category = "Core concepts" + title = "Accessibility" + browserTitle = "Accessibility · FSharp.ViewEngine" + nodes = [ + Paragraph [ Text "FSharp.ViewEngine provides semantic HTML and WAI-ARIA helpers, while the application remains responsible for correct roles, names, states, focus behavior, contrast, and keyboard interaction." ]; + Heading { id = "prefer-native-html"; title = "Prefer native HTML"; level = 2 } + Paragraph [ Text "Start with the native element whose behavior matches the interaction. A "; InlineContent.Code "button"; Text " already supplies keyboard activation semantics that a clickable "; InlineContent.Code "div"; Text " does not." ]; + CodeBlock("fsharp", """button { + _type "button" + _ariaExpanded isOpen + _ariaControls "account-menu" + "Account" +}"""); + Heading { id = "names-and-relationships"; title = "Names and relationships"; level = 2 }; + Paragraph [ Text "Use visible labels where possible and connect controls, descriptions, errors, tabs, and panels with stable unique IDs." ]; + CodeBlock("fsharp", """label { _for "email"; "Email" } +input { + _id "email" + _type "email" + _ariaDescribedBy "email-help" +} +p { _id "email-help"; "Used for account notices." }"""); + Heading { id = "aria-coverage"; title = "ARIA coverage"; level = 2 }; + Paragraph [ Text "Dedicated helpers cover WAI-ARIA 1.2 attributes. Use the generic "; InlineContent.Code "_aria"; Text " helper only for future or extension attributes not represented by the pinned inventory." ]; + Heading { id = "test-behavior"; title = "Test behavior"; level = 2 }; + Paragraph [ Text "Rendering valid attributes is not enough. Test focus movement, keyboard operation, expanded/selected state, labels, landmarks, responsive behavior, and light/dark contrast in the running interface." ] ] } + + let all = [ firstView; elementsAndAttributes; composition; rendering; encoding; accessibility ] diff --git a/sln/src/Docs/src/Pages/Custom.fs b/sln/src/Docs/src/Pages/Custom.fs index 72c77a9..0b5b42d 100644 --- a/sln/src/Docs/src/Pages/Custom.fs +++ b/sln/src/Docs/src/Pages/Custom.fs @@ -7,7 +7,7 @@ module Custom = { id = "custom" path = "/custom" aliases = [ ] - navLabel = "Custom Elements & Attributes" + navLabel = "Custom elements and extensions" category = "Getting started" title = "Custom Elements & Attributes" browserTitle = "Custom Elements & Attributes - FSharp.ViewEngine" diff --git a/sln/src/Docs/src/Pages/Datastar.fs b/sln/src/Docs/src/Pages/Datastar.fs index 826668b..13bc478 100644 --- a/sln/src/Docs/src/Pages/Datastar.fs +++ b/sln/src/Docs/src/Pages/Datastar.fs @@ -1,8 +1,39 @@ namespace Docs.Pages open Docs.Common +open FSharp.ViewEngine +open type Html module Datastar = + let private completeExampleSource = """div { + _dataSignals ("query", [ "ifmissing" ], "''") + _dataIndicator "searching" + + input { + _type "search" + _dataBind "query" + _dataOn ("input", [ "debounce.200ms" ], "@get('/api/search')") + } + + span { _dataShow "$searching"; "Searching..." } + div { _id "search-results" } +}""" + + let private completeExamplePreview = + div { + _data("signals", "{query: ''}") + _style "min-height:12rem;border-radius:.65rem;background:#f8fafc;padding:1.5rem;color:#0f172a" + label { _for "datastar-preview-query"; _style "display:block;margin-bottom:.5rem;font-weight:650"; "Search" } + input { + _id "datastar-preview-query" + _type "search" + _placeholder "Type to update the preview" + _data("bind", "query") + _style "width:100%;border:1px solid #cbd5e1;border-radius:.45rem;background:white;padding:.65rem .75rem;color:#0f172a" + } + p { _style "margin:1rem 0 0;color:#475569"; "Current query: "; strong { _data("text", "$query || 'None'") } } + } + let private section id title = [ Heading { id = id; title = title; level = 2 } ] @@ -127,19 +158,7 @@ div { _dataScrollIntoView [ "smooth"; "vcenter"; "focus" ] }"""; section "complete-example" "Complete Example"; [ Paragraph [ Text "An active search form using signals, binding, modifiers, an indicator, and a backend action:" ]; - CodeBlock("fsharp", """div { - _dataSignals ("query", [ "ifmissing" ], "''") - _dataIndicator "searching" - - input { - _type "search" - _dataBind "query" - _dataOn ("input", [ "debounce.200ms" ], "@get('/api/search')") - } - - span { _dataShow "$searching"; "Searching..." } - div { _id "search-results" } -}""") ] ] + CodeBlock("fsharp", completeExampleSource) ] ] |> List.concat let page = diff --git a/sln/src/Docs/src/Pages/Home.fs b/sln/src/Docs/src/Pages/Home.fs index cde24b4..6fbc63e 100644 --- a/sln/src/Docs/src/Pages/Home.fs +++ b/sln/src/Docs/src/Pages/Home.fs @@ -1,30 +1,11 @@ namespace Docs.Pages open Docs.Common +open FSharp.ViewEngine +open type Html module Home = - let page = - { id = "home" - path = "/" - aliases = [ ] - navLabel = "Introduction" - category = "Getting started" - title = "FSharp.ViewEngine" - browserTitle = "FSharp.ViewEngine Documentation" - nodes = [ - Paragraph [ Text "A minimal, fast view engine for F# that combines the best ideas from several F# view engines. Inspired by "; Link("Giraffe.ViewEngine", "https://github.com/giraffe-fsharp/Giraffe.ViewEngine"); Text ", "; Link("Feliz.ViewEngine", "https://github.com/dbrattli/Feliz.ViewEngine"); Text ", "; Link("Oxpecker.ViewEngine", "https://github.com/Lanayx/Oxpecker"); Text ", and "; Link("Bolero", "https://github.com/fsbolero/Bolero"); Text "." ]; - Heading { id = "design"; title = "Design"; level = 2 }; - Paragraph [ Text "FSharp.ViewEngine uses "; Strong [ Text "computation expressions" ]; Text " (like Oxpecker.ViewEngine and Bolero) to build elements. Each element takes a "; Strong [ Text "Feliz-style single sequence" ]; Text " of attributes and children — there are no separate attribute and children lists. Attributes are "; Strong [ Text "prefixed with underscore" ]; Text " by convention (like Giraffe.ViewEngine, e.g. "; InlineContent.Code "_class"; Text ", "; InlineContent.Code "_id"; Text ", "; InlineContent.Code "_dataOn"; Text "), which produces clean syntax with nice syntax highlighting. The computation expression allows "; Strong [ Text "mixed yielding" ]; Text " of strings, elements, and attributes in any order, so there is no need for a special "; InlineContent.Code "_children"; Text " attribute." ]; - Heading { id = "key-features"; title = "Key Features"; level = 2 }; - UnorderedList [ - [ Strong [ Text "Minimal and fast" ]; Text " — as lean as possible while remaining expressive and type-safe" ]; - [ Strong [ Text "Type-safe HTML generation" ]; Text " with F#" ]; - [ Strong [ Text "Built-in support for Datastar, HTMX, Alpine.js, Tailwind CSS, and SVG" ] ]; - [ Strong [ Text "Composable and functional approach" ] ]; - [ Strong [ Text "No runtime dependencies" ] ] - ]; - Heading { id = "quick-example"; title = "Quick Example"; level = 2 }; - CodeBlock("fsharp", """open FSharp.ViewEngine + let private quickExampleSource = """open FSharp.ViewEngine open type Html open type Datastar open type TailwindElements @@ -60,7 +41,48 @@ let myPage = } } } - |> Render.toHtmlDocString"""); + |> Render.toHtmlDocString""" + + let private quickExamplePreview = + div { + _data("signals", "{showContent: false}") + _style "min-height:12rem;border-radius:.65rem;background:#f3f4f6;padding:1.5rem;color:#111827" + h3 { _style "margin:0 0 1rem;color:#2563eb;font-size:1.5rem"; "Welcome!" } + button { + _type "button" + _data("on:click", "$showContent = !$showContent") + _style "border:0;border-radius:.4rem;background:#3b82f6;padding:.6rem .9rem;color:white;font-weight:650;cursor:pointer" + "Toggle Content" + } + div { + _data("show", "$showContent") + _style "display:none;margin-top:1rem" + "Content loaded with Datastar." + } + } + + let page = + { id = "home" + path = "/" + aliases = [ ] + navLabel = "Introduction" + category = "Getting started" + title = "FSharp.ViewEngine" + browserTitle = "FSharp.ViewEngine Documentation" + nodes = [ + Paragraph [ Text "A minimal, fast view engine for F# that combines the best ideas from several F# view engines. Inspired by "; Link("Giraffe.ViewEngine", "https://github.com/giraffe-fsharp/Giraffe.ViewEngine"); Text ", "; Link("Feliz.ViewEngine", "https://github.com/dbrattli/Feliz.ViewEngine"); Text ", "; Link("Oxpecker.ViewEngine", "https://github.com/Lanayx/Oxpecker"); Text ", and "; Link("Bolero", "https://github.com/fsbolero/Bolero"); Text "." ]; + Heading { id = "design"; title = "Design"; level = 2 }; + Paragraph [ Text "FSharp.ViewEngine uses "; Strong [ Text "computation expressions" ]; Text " (like Oxpecker.ViewEngine and Bolero) to build elements. Each element takes a "; Strong [ Text "Feliz-style single sequence" ]; Text " of attributes and children — there are no separate attribute and children lists. Attributes are "; Strong [ Text "prefixed with underscore" ]; Text " by convention (like Giraffe.ViewEngine, e.g. "; InlineContent.Code "_class"; Text ", "; InlineContent.Code "_id"; Text ", "; InlineContent.Code "_dataOn"; Text "), which produces clean syntax with nice syntax highlighting. The computation expression allows "; Strong [ Text "mixed yielding" ]; Text " of strings, elements, and attributes in any order, so there is no need for a special "; InlineContent.Code "_children"; Text " attribute." ]; + Heading { id = "key-features"; title = "Key Features"; level = 2 }; + UnorderedList [ + [ Strong [ Text "Minimal and fast" ]; Text " — as lean as possible while remaining expressive and type-safe" ]; + [ Strong [ Text "Type-safe HTML generation" ]; Text " with F#" ]; + [ Strong [ Text "Built-in support for Datastar, HTMX, Alpine.js, Tailwind CSS, and SVG" ] ]; + [ Strong [ Text "Composable and functional approach" ] ]; + [ Strong [ Text "No runtime dependencies" ] ] + ]; + Heading { id = "quick-example"; title = "Quick Example"; level = 2 }; + CodeBlock("fsharp", quickExampleSource); Heading { id = "getting-started"; title = "Getting Started"; level = 2 }; - Paragraph [ Text "To get started with FSharp.ViewEngine, check out the "; Link("Installation", "/installation"); Text " guide and then see the "; Link("Usage", "/usage"); Text " example." ]; + Paragraph [ Text "To get started with FSharp.ViewEngine, check out the "; Link("Installation", "/installation"); Text " guide and then "; Link("build your first view", "/getting-started/first-view"); Text "." ]; ] } diff --git a/sln/src/Docs/src/Pages/Htmx.fs b/sln/src/Docs/src/Pages/Htmx.fs index bd51312..50705d5 100644 --- a/sln/src/Docs/src/Pages/Htmx.fs +++ b/sln/src/Docs/src/Pages/Htmx.fs @@ -1,8 +1,37 @@ namespace Docs.Pages open Docs.Common +open FSharp.ViewEngine +open type Html module Htmx = + let private completeExampleSource = """form { + _hxGet "/api/search" + _hxTrigger "input changed delay:300ms, search" + _hxTarget "#search-results" + _hxIndicator "#search-spinner" + _hxDisabledElt "find button" + _hxSync "this:replace" + _hxPushUrl "true" + + input { _type "search"; _name "query"; _hxValidate "true" } + button { _type "submit"; "Search" } + span { _id "search-spinner"; _class "htmx-indicator"; "Searching..." } + div { _id "search-results" } +}""" + + let private completeExamplePreview = + div { + _style "min-height:12rem;border-radius:.65rem;background:#f8fafc;padding:1.5rem;color:#0f172a" + p { _style "margin:0 0 1rem;color:#64748b;font-size:.8rem"; "Rendered initial state. The documentation host does not connect this fixture to a search endpoint." } + form { + _data("on:submit", "evt.preventDefault()") + _style "display:flex;gap:.5rem" + input { _type "search"; _name "query"; _placeholder "Search"; _style "min-width:0;flex:1;border:1px solid #cbd5e1;border-radius:.45rem;background:white;padding:.65rem .75rem;color:#0f172a" } + button { _type "submit"; _style "border:0;border-radius:.45rem;background:#0f172a;padding:.65rem 1rem;color:white;font-weight:650"; "Search" } + } + } + let private section id title = [ Heading { id = id; title = title; level = 2 } ] @@ -188,20 +217,7 @@ span { _id "spinner"; _class "htmx-indicator"; "Loading..." }""" section "complete-example" "Complete Example" [ Paragraph [ Text "A search form combining request, synchronization, targeting, indicator, and history attributes:" ] - CodeBlock("fsharp", """form { - _hxGet "/api/search" - _hxTrigger "input changed delay:300ms, search" - _hxTarget "#search-results" - _hxIndicator "#search-spinner" - _hxDisabledElt "find button" - _hxSync "this:replace" - _hxPushUrl "true" - - input { _type "search"; _name "query"; _hxValidate "true" } - button { _type "submit"; "Search" } - span { _id "search-spinner"; _class "htmx-indicator"; "Searching..." } - div { _id "search-results" } -}""") ] ] + CodeBlock("fsharp", completeExampleSource) ] ] |> List.concat let page = diff --git a/sln/src/Docs/src/Pages/Installation.fs b/sln/src/Docs/src/Pages/Installation.fs index 18d3c00..7d8b847 100644 --- a/sln/src/Docs/src/Pages/Installation.fs +++ b/sln/src/Docs/src/Pages/Installation.fs @@ -14,7 +14,7 @@ module Installation = nodes = [ Paragraph [ Text "FSharp.ViewEngine is distributed as a NuGet package. You can install it using your preferred package manager." ]; Heading { id = "using-net-cli"; title = "Using .NET CLI"; level = 2 }; - CodeBlock("bash", """dotnet package add FSharp.ViewEngine"""); + CodeBlock("bash", """dotnet add package FSharp.ViewEngine"""); Heading { id = "using-paket-cli"; title = "Using Paket CLI"; level = 2 }; CodeBlock("bash", """dotnet paket add FSharp.ViewEngine"""); Heading { id = "runtime-support"; title = "Runtime Support"; level = 2 }; @@ -28,5 +28,5 @@ module Installation = Heading { id = "source-debugging"; title = "Source Debugging"; level = 2 }; Paragraph [ Text "Each release publishes portable symbols separately from the main package. Source Link maps those symbols to the matching GitHub commit so supported debuggers can retrieve the exact source on demand." ]; Heading { id = "next-steps"; title = "Next Steps"; level = 2 }; - Paragraph [ Text "Once you have FSharp.ViewEngine installed, head over to the "; Link("Usage", "/usage"); Text " guide to start building your first HTML views." ]; + Paragraph [ Text "Once you have FSharp.ViewEngine installed, "; Link("build your first view", "/getting-started/first-view"); Text " and then continue through the core concepts." ]; ] } diff --git a/sln/src/Docs/src/Pages/Registry.fs b/sln/src/Docs/src/Pages/Registry.fs index 94e45da..b45b6ff 100644 --- a/sln/src/Docs/src/Pages/Registry.fs +++ b/sln/src/Docs/src/Pages/Registry.fs @@ -5,13 +5,31 @@ open Docs.Common module Registry = let navigation = [ { label = "Getting started" - pages = [ Home.page; Installation.page; Custom.page; Usage.page ] } - { label = "Extensions" - pages = [ Svg.page; Datastar.page; Htmx.page; Alpine.page; TailwindElements.page ] } + pages = [ Home.page; Installation.page; CoreGuides.firstView ] + sections = [] } + { label = "Core concepts" + pages = [ CoreGuides.elementsAndAttributes; CoreGuides.composition; CoreGuides.rendering; CoreGuides.encoding; CoreGuides.accessibility; Custom.page ] + sections = [] } + { label = "Integrations" + pages = [ Usage.page; Svg.page; Datastar.page; Htmx.page; Alpine.page; TailwindElements.page ] + sections = [] } + { label = "FSharp.ViewEngine.Docs" + pages = [ Showcase.overviewRegistration ] + sections = + [ { label = "Components" + pages = Showcase.componentRegistrations + sections = [] } + { label = "Page examples" + pages = Showcase.pageExampleRegistrations + sections = [] } ] } { label = "Project" - pages = [ Benchmarks.page; Changelog.page ] } ] + pages = [ Benchmarks.page; Changelog.page ] + sections = [] } ] - let all = navigation |> List.collect _.pages + let rec private sectionPages section = + section.pages @ (section.sections |> List.collect sectionPages) + + let all = navigation |> List.collect sectionPages let aliases = all diff --git a/sln/src/Docs/src/Pages/Showcase.fs b/sln/src/Docs/src/Pages/Showcase.fs new file mode 100644 index 0000000..5f598ca --- /dev/null +++ b/sln/src/Docs/src/Pages/Showcase.fs @@ -0,0 +1,541 @@ +namespace Docs.Pages + +open Docs.Common +open FSharp.ViewEngine +open FSharp.ViewEngine.Docs +open type Html + +module Showcase = + let private registration (id:string) (path:string) (aliases:string list) (navLabel:string) (title:string) : DocPage = + { id = id + path = path + aliases = aliases + navLabel = navLabel + category = "FSharp.ViewEngine.Docs" + title = title + browserTitle = $"{title} · FSharp.ViewEngine.Docs" + nodes = [] } + + let overviewRegistration = + registration "docs-overview" "/docs" [] "Overview" "FSharp.ViewEngine.Docs" + + let layoutsRegistration = + registration "docs-layouts" "/docs/components/layouts" [ "/docs/components"; "/docs-components" ] "Layouts" "Layouts" + + let contentRegistration = + registration "docs-content" "/docs/components/content" [] "Content" "Content" + + let navigationRegistration = + registration "docs-navigation" "/docs/components/navigation" [] "Navigation" "Navigation" + + let interactiveRegistration = + registration "docs-interactive" "/docs/components/interactive-examples" [] "Interactive examples" "Interactive examples" + + let apiComponentsRegistration = + registration "docs-api-components" "/docs/components/api-reference" [] "API reference" "API reference components" + + let diagramsRegistration = + registration "docs-diagrams" "/docs/components/diagrams" [] "Diagrams" "Diagrams" + + let documentationSiteRegistration = + registration "docs-page-documentation-site" "/docs/page-examples/documentation-site" [] "Documentation site" "Documentation site" + + let apiPageExampleRegistration = + registration + "docs-page-api-reference" + "/docs/page-examples/api-reference" + [ "/docs/examples/api-reference"; "/api-reference/render-to-string" ] + "API reference" + "API reference page" + + let specificationPageExampleRegistration = + registration + "docs-page-executable-specification" + "/docs/page-examples/executable-specification" + [ "/docs/examples/executable-specification"; "/specification/render-a-view" ] + "Executable specification" + "Executable specification page" + + let componentRegistrations = + [ layoutsRegistration + contentRegistration + navigationRegistration + interactiveRegistration + apiComponentsRegistration + diagramsRegistration ] + + let pageExampleRegistrations = + [ documentationSiteRegistration + apiPageExampleRegistration + specificationPageExampleRegistration ] + + let private previewSurface (content:HtmlElement) = + div { + _data("example-surface", "true") + _class "docs-showcase-surface" + content + } + + let private sourceText = + lazy (SourceRegion.readEmbedded typeof.Assembly "Docs.Pages.Showcase.fs") + + let sourceFor id = SourceRegion.extract id sourceText.Value + + let private componentExample (id:string) (label:string) (description:string) (preview:HtmlElement) = + docsSection id label [ + docsParagraph description + docsCustom (docsExample $"docs-{id}-example" label "fsharp" (sourceFor id) preview) ] + + let private catalogLink (href:string) (eyebrow:string) (title:string) (description:string) = + a { + _href href + _class "docs-catalog-card" + span { _class "docs-catalog-eyebrow"; eyebrow } + strong { title } + span { _class "docs-catalog-description"; description } + span { _class "docs-catalog-action"; "Browse "; raw "→" } + } + + let private miniatureArticle () = + previewSurface ( + div { + _class "docs-mini-shell" + aside { + div { _class "docs-mini-brand"; "Acme Docs" } + div { _class "docs-mini-nav-active"; "Getting started" } + div { "Installation" } + div { "Configuration" } + } + div { + _class "docs-mini-main" + div { _class "docs-mini-breadcrumb"; "Guides / Getting started" } + h3 { "Build your first integration" } + p { "Compose a focused guide with navigation and an on-this-page rail." } + div { _class "docs-mini-code"; "dotnet add package Acme" } + } + nav { + _ariaLabel "Example table of contents" + small { "ON THIS PAGE" } + div { "Install" } + div { "Configure" } + } + }) + + let private miniatureReference () = + previewSurface ( + div { + _class "docs-showcase-reference" + div { + h3 { "Create a customer" } + docsApiEndpoint POST "/v1/customers" "Creates a customer and returns its identifier." + div { _style "margin-top:1rem"; docsParameters [ docsParameter "email" "string" true "Customer email address." ] } + } + div { + docsCodeExample "Request" "curl" "curl -X POST https://api.example.test/v1/customers" + docsResponseExample "201" "json" "{ \"id\": \"cus_123\" }" + } + }) + + let private exampleSite : DocsSite = + { name = "Acme Docs" + baseUrl = Some "https://docs.example.test" + description = Some "Example documentation" + repository = None + brandMark = span { "AC" } + homeId = "overview" + navigation = + [ docsNavGroup "guides" "Guides" true [ + docsNavPage "overview" "Overview" "/" "/" + docsNavPage "guide" "Getting started" "/guide" "/guide" ] ] + storageKey = "fsharp-view-engine-docs-example" + defaultColorMode = DocsColorMode.System + theme = DocsTheme.sky + assets = { DocsAssets.defaults with productStylesheets = [ "/css/output.css" ] } + search = [] } + + let private previewDocuments = System.Collections.Generic.Dictionary() + + let private isolatedHtml (title:string) (canonicalUrl:string) (html:string) = + let token = + title.ToLowerInvariant() + |> Seq.map (fun character -> if System.Char.IsLetterOrDigit character then character else '-') + |> Seq.toArray + |> System.String + let previewPath = $"/docs/previews/{token}" + previewDocuments[previewPath] <- html + previewSurface ( + docsBrowserFrame canonicalUrl ( + iframe { + _class "docs-isolated-document" + _title title + _data("docs-preview-src", previewPath) + })) + + let private isolatedPage title canonicalUrl page = + page + |> docsDocument exampleSite + |> Render.toHtmlDocString + |> isolatedHtml title canonicalUrl + + let private productView (state:string) = + let hasValidation = state = "validation" + let suffix = if hasValidation then "validation" else "ready" + let inputBorder = if hasValidation then "#dc2626" else "#cbd5e1" + div { + _class "docs-product-screen" + div { + _class "docs-product-header" + strong { "View Studio" } + span { "FS" } + } + div { + _class "docs-product-content" + small { "NEW VIEW" } + h3 { "Render your first component" } + p { "Name the view and choose the output used by the application." } + div { + _class "docs-product-card" + label { _for $"view-name-{suffix}"; "View name" } + input { + _id $"view-name-{suffix}" + _value (if hasValidation then "" else "accountSummary") + _placeholder "e.g. accountSummary" + _style $"border-color:{inputBorder}" + } + if hasValidation then p { _class "docs-product-error"; "Enter a view name." } + div { + _class "docs-product-actions" + button { _type "button"; "Cancel" } + button { _type "button"; _class "docs-product-primary"; "Create view" } + } + } + } + } + + let private productScreen state = + docsBrowserFrame "https://example.test/views/new" (productView state) + + let private sequence () = + let developer = SequenceDiagram.participant "Developer" "Developer" + let engine = SequenceDiagram.participant "Engine" "View engine" + let output = SequenceDiagram.participant "Output" "HTML output" + SequenceDiagram.sequence [ developer; engine; output ] [ + SequenceDiagram.call developer engine "Build HtmlElement" + SequenceDiagram.call developer engine "Render.toString element" + SequenceDiagram.call engine output "Encode and serialize" + SequenceDiagram.reply output developer "HTML string" ] + + let private mermaidPreview (source:string) = + div { _class "mermaid spec-diagram"; raw source } + + let overviewPage = + docsArticle overviewRegistration.id overviewRegistration.title "Composable layouts and components for product documentation, API references, executable specifications, and component review." [ + docsSection "purpose" "Built with the package" [ + docsParagraph "This documentation site is built with FSharp.ViewEngine.Docs. The shell, navigation, themes, examples, API components, browser frames, and diagrams shown here use the same public package available to consumers." + docsParagraph "The package owns documentation mechanics and composition while each product retains its content, information architecture, routes, models, workflows, and product UI." ] + docsSection "installation" "Installation" [ + docsCode "shell" "dotnet add package FSharp.ViewEngine.Docs" ] + docsSection "browse" "Browse the toolkit" [ + docsCustom ( + div { + _class "docs-catalog-grid" + catalogLink "/docs/components/layouts" "COMPONENTS" "Browse components" "Layouts, content, navigation, interactive examples, API reference primitives, and diagrams." + catalogLink "/docs/page-examples/documentation-site" "PAGE EXAMPLES" "Browse page examples" "Complete documentation, API-reference, and executable-specification compositions." + }) ] ] + + let layoutsPage = + // docs-example:start document + let documentPage = + docsArticle "overview" "Acme Docs" "Build and ship with typed documentation." [ + docsSection "welcome" "Welcome" [ docsParagraph "Choose a guide to get started." ] ] + + let documentHtml = + docsDocument exampleSite documentPage + |> Render.toHtmlDocString + // docs-example:end document + + // docs-example:start article + let articlePage = + docsArticle "guide" "Getting started" "Build your first integration." [ + docsSection "install" "Install" [ + docsParagraph "Add the package to your application." + docsCode "shell" "dotnet add package Acme" ] ] + // docs-example:end article + + // docs-example:start reference + let referencePage = + docsReference "customers" "Create a customer" "Customer API reference." [ + docsSection "endpoint" "Endpoint" [ + docsCustom (docsApiEndpoint POST "/v1/customers" "Creates a customer.") ] + docsSection "parameters" "Parameters" [ + docsCustom (docsParameters [ + docsParameter "email" "string" true "Customer email address." ]) ] ] + (docsRail (docsCodeExample "Request" "curl" "curl -X POST /v1/customers")) + // docs-example:end reference + + // docs-example:start canvas + let canvasPage = + docsCanvas "create-view" "Create a view" "Review the complete workflow." [ + docsSection "states" "States" [ + docsCustom (docsStateTabs "view-states" "View states" [ + { id = "ready"; label = "Ready"; content = productScreen "ready" } + { id = "validation"; label = "Validation"; content = productScreen "validation" } ]) ] + docsSection "sequence" "Sequence" [ docsSequence (sequence ()) ] ] + // docs-example:end canvas + + docsArticle layoutsRegistration.id layoutsRegistration.title "Shells and page layouts for guides, references, and wide product review surfaces." [ + componentExample "document" "docsDocument" "Render the complete branded document shell with navigation, assets, themes, metadata, and canonical URLs." (isolatedHtml "Complete documentation shell" "https://docs.example.test" documentHtml) + componentExample "article" "docsArticle" "Use the article layout for guides and conceptual documentation with a readable content column and table of contents." (isolatedPage "Article layout" "https://docs.example.test/guide" articlePage) + componentExample "reference" "docsReference" "Keep endpoint documentation beside request and response examples in a dedicated reference composition." (isolatedPage "Reference layout" "https://docs.example.test/customers" referencePage) + componentExample "canvas" "docsCanvas" "Use a wide canvas for product frames, workflow states, and architecture diagrams; hide only the visual heading when the framed product already supplies one." (isolatedPage "Canvas layout" "https://docs.example.test/create-view" canvasPage) ] + + let contentPage = + // docs-example:start sections-and-prose + let prosePage = + docsArticle "content-prose" "Content" "Typed prose blocks." [ + docsSection "install" "Install the package" [ + docsParagraph "Compose readable documentation from typed content blocks." + docsBullets [ "Add the package"; "Configure assets"; "Render the document" ] ] ] + // docs-example:end sections-and-prose + + // docs-example:start tables + let tablePage = + docsArticle "content-table" "Builder comparison" "Compact structured data." [ + docsSection "builders" "Builders" [ + docsTable [ "Builder"; "Purpose" ] [ + [ "docsArticle"; "Guides" ] + [ "docsCanvas"; "Product review" ] ] ] ] + // docs-example:end tables + + // docs-example:start callouts + let calloutPage = + docsArticle "content-callout" "Security" "Important implementation guidance." [ + docsSection "boundary" "Trust boundary" [ + docsCallout "Security" "Render trusted raw content only at an application-defined boundary." ] ] + // docs-example:end callouts + + // docs-example:start code-and-custom + let customPage = + docsArticle "content-custom" "Output" "Code and product-owned HTML." [ + docsSection "output" "Output" [ + docsCode "fsharp" "div { _class \"notice\"; \"Saved\" }" + docsCustom (div { _class "docs-notice-preview"; "Rendered output" }) ] ] + // docs-example:end code-and-custom + + docsArticle contentRegistration.id contentRegistration.title "Typed blocks for readable prose, structured data, code, and custom composition." [ + componentExample "sections-and-prose" "Sections, prose, and lists" "Group content under semantic headings, then compose paragraphs and ordered or unordered lists." (isolatedPage "Sections, prose, and lists" "https://docs.example.test/content/prose" prosePage) + componentExample "tables" "Tables" "Present compact metadata and comparisons with responsive horizontal overflow." (isolatedPage "Tables" "https://docs.example.test/content/tables" tablePage) + componentExample "callouts" "Callouts" "Highlight a concise warning, note, or constraint without turning the page into a card grid." (isolatedPage "Callouts" "https://docs.example.test/content/callouts" calloutPage) + componentExample "code-and-custom" "Code and custom HTML" "Use compact Prism-ready code blocks for source and docsCustom when a product needs its own typed HTML composition." (isolatedPage "Code and custom HTML" "https://docs.example.test/content/custom" customPage) ] + + let navigationPage = + // docs-example:start navigation-tree + let navigation = [ + docsNavPage "overview" "Overview" "/" "/" + docsNavGroup "guides" "Guides" true [ + docsNavPage "install" "Installation" "/installation" "/installation" ] ] + + let navigationSite = { exampleSite with navigation = navigation } + let navigationPreview = docsSideNav navigationSite (docsArticle "install" "Installation" "Install the package." []) + // docs-example:end navigation-tree + + // docs-example:start page-pager + let pagerPage = + docsArticle "usage" "Usage" "Compose typed HTML." [] + |> docsWithPager ( + docsPager + (Some(docsPageLink "Installation" "/installation")) + (Some(docsPageLink "Extensions" "/extensions"))) + // docs-example:end page-pager + + // docs-example:start site-actions + let siteWithActions = + { exampleSite with + defaultColorMode = DocsColorMode.System + repository = Some(DocsRepository.github "https://github.com/example/project") } + + let actionsHtml = + docsDocument siteWithActions pagerPage + |> Render.toHtmlDocString + // docs-example:end site-actions + + docsArticle navigationRegistration.id navigationRegistration.title "Discoverable navigation for the complete documentation journey." [ + componentExample "navigation-tree" "Navigation, breadcrumbs, and table of contents" "Use typed destinations for pages and destination-free groups; the shell derives side navigation and breadcrumbs while sections supply the local table of contents." (isolatedHtml "Navigation tree" "https://docs.example.test/installation" (navigationPreview |> Render.toString)) + componentExample "page-pager" "Previous and next" "Add an explicit learning path when the ideal reading order differs from the complete sidebar order." (isolatedPage "Previous and next" "https://docs.example.test/usage" pagerPage) + componentExample "site-actions" "Theme and repository actions" "Configure System, Light, or Dark as the default and optionally expose a GitHub or custom repository destination." (isolatedHtml "Theme and repository actions" "https://docs.example.test/usage" actionsHtml) ] + + let interactivePage = + // docs-example:start example + let noticePreview = + docsExample + "notice-example" + "Notice" + "fsharp" + "div { _class \"notice\"; \"Saved\" }" + (div { _class "docs-notice-preview"; strong { "Saved" }; span { "The customer was updated." } }) + // docs-example:end example + + // docs-example:start state-tabs + let readyView = productScreen "ready" + let validationView = productScreen "validation" + let states = + docsStateTabs "component-workflow-states" "Workflow states" [ + { id = "ready"; label = "Ready"; content = readyView } + { id = "validation"; label = "Validation"; content = validationView } ] + // docs-example:end state-tabs + + // docs-example:start browser-frame + let productUi = productView "ready" + let browserFramePreview = + docsBrowserFrame + "https://example.test/views/new" + productUi + // docs-example:end browser-frame + + docsArticle interactiveRegistration.id interactiveRegistration.title "Source-first examples and interactive product states for implementation and review." [ + componentExample "example" "docsExample" "Pair arbitrary rendered HTML with its source using independent, keyboard-accessible Code and Preview tabs." (previewSurface noticePreview) + componentExample "state-tabs" "docsStateTabs" "Review empty, ready, validation, loading, or other meaningful states without duplicating the surrounding page." (isolatedHtml "Workflow states" "https://docs.example.test/components/workflow-states" (states |> Render.toString)) + componentExample "browser-frame" "docsBrowserFrame" "Place product UI in a browser-like frame with an explicit canonical URL." (isolatedHtml "Browser frame" "https://docs.example.test/components/browser-frame" (browserFramePreview |> Render.toString)) ] + + let apiComponentsPage = + // docs-example:start api-endpoint + let endpoint = + docsApiEndpoint + POST + "/v1/customers" + "Creates a customer and returns its identifier." + // docs-example:end api-endpoint + + // docs-example:start api-parameters + let parameters = + docsParameters [ + docsParameter "email" "string" true "Customer email address." + docsParameter "metadata" "object" false "Application-defined values." ] + // docs-example:end api-parameters + + // docs-example:start api-examples + let requestSource = "curl -X POST https://api.example.test/v1/customers" + let responseSource = "{ \"id\": \"cus_123\" }" + let requestResponse = + div { + _class "docs-showcase-panels" + docsCodeExample "Create customer" "curl" requestSource + docsResponseExample "201" "json" responseSource + } + // docs-example:end api-examples + + docsArticle apiComponentsRegistration.id apiComponentsRegistration.title "Composable endpoint, parameter, request, and response primitives for product-owned APIs." [ + componentExample "api-endpoint" "Endpoint" "Present the HTTP method, path, and concise operation description." (previewSurface endpoint) + componentExample "api-parameters" "Parameters" "Describe required and optional values with compact names, types, and explanations." (previewSurface parameters) + componentExample "api-examples" "Request and response examples" "Keep realistic request source and response payloads visually paired." (previewSurface requestResponse) ] + + let diagramsPage = + // docs-example:start mermaid + let flowchart = """flowchart LR + Developer[Developer] --> View[Typed view] + View --> HTML[Encoded HTML]""" + let mermaidPage = + docsArticle "diagram" "Rendering flow" "Typed view rendering." [ + docsSection "flow" "Flow" [ docsDiagram flowchart ] ] + // docs-example:end mermaid + + // docs-example:start c4 + let c4Source = """C4Context + title Documentation context + Person(dev, "Developer", "Authors documentation") + System(docs, "Docs site", "Publishes documentation") + Rel(dev, docs, "Uses")""" + let c4Page = + docsArticle "c4" "Documentation context" "System context." [ + docsSection "context" "Context" [ docsC4Diagram c4Source ] ] + // docs-example:end c4 + + // docs-example:start sequence-diagram + let developer = SequenceDiagram.participant "Developer" "Developer" + let engine = SequenceDiagram.participant "Engine" "View engine" + let sequenceDiagram = + SequenceDiagram.sequence [ developer; engine ] [ + SequenceDiagram.call developer engine "Render view" + SequenceDiagram.reply engine developer "HTML" ] + let sequencePage = + docsArticle "sequence" "Render a view" "Rendering sequence." [ + docsSection "sequence" "Sequence" [ docsSequence sequenceDiagram ] ] + // docs-example:end sequence-diagram + + docsArticle diagramsRegistration.id diagramsRegistration.title "Trusted Mermaid, C4, and validated sequence diagrams for architecture and workflow communication." [ + componentExample "mermaid" "Mermaid" "Render a trusted Mermaid source string in the standard responsive diagram surface." (isolatedPage "Mermaid diagram" "https://docs.example.test/diagrams/mermaid" mermaidPage) + componentExample "c4" "C4" "Use Mermaid C4 syntax for a proportionate system context, container, component, dynamic, or deployment view." (isolatedPage "C4 diagram" "https://docs.example.test/diagrams/c4" c4Page) + componentExample "sequence-diagram" "Sequence diagram" "Construct participants and calls with the validated sequence DSL before rendering Mermaid." (isolatedPage "Sequence diagram" "https://docs.example.test/diagrams/sequence" sequencePage) ] + + let documentationSitePage = + // docs-example:start documentation-site-page + let documentationPage = + docsArticle "guide" "Getting started" "Build your first integration." [ + docsSection "install" "Install" [ docsCode "shell" "dotnet add package Acme" ] ] + |> docsWithPager (docsPager (Some(docsPageLink "Overview" "/")) None) + + let documentationHtml = + docsDocument exampleSite documentationPage + |> Render.toHtmlDocString + // docs-example:end documentation-site-page + + docsArticle documentationSiteRegistration.id documentationSiteRegistration.title "A complete guide composition using the shared shell, navigation, content, examples, and pager." [ + componentExample "documentation-site-page" "Guide with navigation" "This preview executes the same complete documentation page definition shown under Code." (isolatedHtml "Documentation site page example" "https://docs.example.test/guide" documentationHtml) ] + + let apiPageExample = + // docs-example:start api-reference-page + let endpoint = docsApiEndpoint POST "/v1/render" "Renders an HTML element." + let parameters = docsParameters [ docsParameter "view" "string" true "Typed view source." ] + let rail = + div { + docsCodeExample "Render a view" "fsharp" "Render.toString view" + docsResponseExample "200" "html" "
Rendered view
" } + let apiPage = + docsReference "render" "Render a view" "Rendering reference." [ + docsSection "endpoint" "Endpoint" [ docsCustom endpoint ] + docsSection "parameters" "Parameters" [ docsCustom parameters ] ] + (docsRail rail) + // docs-example:end api-reference-page + + docsArticle apiPageExampleRegistration.id apiPageExampleRegistration.title "A complete reference composition with endpoint documentation and a dedicated request-response rail." [ + docsSection "about" "About this page example" [ + docsParagraph "FSharp.ViewEngine does not expose an HTTP /v1/render endpoint. The fictional operation keeps the example focused on docsReference and the reusable API components." + docsCustom (docsExample "docs-api-reference-page-example" "Render endpoint reference" "fsharp" (sourceFor "api-reference-page") (isolatedPage "API reference page example" "https://docs.example.test/render" apiPage)) ] ] + + let specificationPageExample = + // docs-example:start executable-specification-page + let readyView = productScreen "ready" + let validationView = productScreen "validation" + let states = + docsStateTabs "page-example-render-states" "Render workflow states" [ + { id = "ready"; label = "Ready"; content = readyView } + { id = "validation"; label = "Validation"; content = validationView } ] + let specificationPage = + docsCanvas "render-workflow" "Render a view" "Review the workflow." [ + docsSection "wireframe" "Wireframe" [ docsCustom states ] + docsSection "sequence" "Sequence" [ docsSequence (sequence ()) ] + docsSection "rules" "Rules" [ docsBullets [ "Encode text and attributes."; "Return deterministic HTML." ] ] ] + // docs-example:end executable-specification-page + + docsArticle specificationPageExampleRegistration.id specificationPageExampleRegistration.title "A complete workflow review composition using a canvas, browser frames, state tabs, diagrams, and rules." [ + componentExample "executable-specification-page" "Render workflow" "The preview executes the same complete specification page definition shown under Code; consumers own the actual workflow, rules, and product UI." (isolatedPage "Executable specification page example" "https://docs.example.test/render-workflow" specificationPage) ] + + let private pages = + [ overviewRegistration.path, overviewPage + layoutsRegistration.path, layoutsPage + contentRegistration.path, contentPage + navigationRegistration.path, navigationPage + interactiveRegistration.path, interactivePage + apiComponentsRegistration.path, apiComponentsPage + diagramsRegistration.path, diagramsPage + documentationSiteRegistration.path, documentationSitePage + apiPageExampleRegistration.path, apiPageExample + specificationPageExampleRegistration.path, specificationPageExample ] + |> Map.ofList + + let previewRoutes = + previewDocuments + |> Seq.map (fun pair -> pair.Key, pair.Value) + |> Map.ofSeq + + let tryPage path = Map.tryFind path pages diff --git a/sln/src/Docs/src/Pages/Svg.fs b/sln/src/Docs/src/Pages/Svg.fs index 886a17d..86e3262 100644 --- a/sln/src/Docs/src/Pages/Svg.fs +++ b/sln/src/Docs/src/Pages/Svg.fs @@ -1,41 +1,12 @@ namespace Docs.Pages open Docs.Common - -module Svg = - let private heading id title = - Heading { id = id; title = title; level = 2 } - - let private nodes = - [ Paragraph [ Text "FSharp.ViewEngine provides a maintained SVG 2 production subset for icons, charts, gradients, clipping, reusable symbols, text, and accessible inline graphics." ]; - heading "support-policy" "Support Policy"; - Paragraph [ Text "The "; InlineContent.Code "Svg"; Text " type intentionally covers 21 common elements rather than every SVG 2 feature. Unsupported filters, animation, metadata, and specialized elements remain available through the generic trusted-name escape hatches." ]; - Paragraph [ Text "SVG-specific helpers complement the global attributes on "; InlineContent.Code "Html"; Text ". Continue using "; InlineContent.Code "_id"; Text ", "; InlineContent.Code "_class"; Text ", "; InlineContent.Code "_style"; Text ", "; InlineContent.Code "_href"; Text ", "; InlineContent.Code "_role"; Text ", and the WAI-ARIA helpers from "; InlineContent.Code "Html"; Text "." ]; - - heading "setup" "Setup"; - Paragraph [ Text "Open both static types when building inline SVG:" ]; - CodeBlock("fsharp", """open FSharp.ViewEngine +open FSharp.ViewEngine open type Html -open type Svg"""); - Paragraph [ Text "The SVG text and title builders are named "; InlineContent.Code "textElement"; Text " and "; InlineContent.Code "titleElement"; Text " so opening "; InlineContent.Code "Svg"; Text " does not shadow "; InlineContent.Code "Html.text"; Text " or "; InlineContent.Code "Html.title"; Text ". "; InlineContent.Code "useElement"; Text " avoids the F# "; InlineContent.Code "use"; Text " keyword." ]; - - heading "element-reference" "Element Reference"; - Paragraph [ Strong [ Text "Structure and descriptions: " ]; InlineContent.Code "svg"; Text ", "; InlineContent.Code "g"; Text ", "; InlineContent.Code "defs"; Text ", "; InlineContent.Code "symbol"; Text ", "; InlineContent.Code "useElement"; Text ", "; InlineContent.Code "titleElement"; Text ", and "; InlineContent.Code "desc"; Text "." ]; - Paragraph [ Strong [ Text "Shapes: " ]; InlineContent.Code "path"; Text ", "; InlineContent.Code "circle"; Text ", "; InlineContent.Code "rect"; Text ", "; InlineContent.Code "line"; Text ", "; InlineContent.Code "polyline"; Text ", "; InlineContent.Code "polygon"; Text ", and "; InlineContent.Code "ellipse"; Text "." ]; - Paragraph [ Strong [ Text "Resources and paint: " ]; InlineContent.Code "clipPath"; Text ", "; InlineContent.Code "mask"; Text ", "; InlineContent.Code "linearGradient"; Text ", "; InlineContent.Code "radialGradient"; Text ", and "; InlineContent.Code "stop"; Text "." ]; - Paragraph [ Strong [ Text "Text: " ]; InlineContent.Code "textElement"; Text " and "; InlineContent.Code "tspan"; Text "." ]; +open type FSharp.ViewEngine.Svg - heading "numeric-and-length-values" "Numeric and Length Values"; - Paragraph [ Text "Geometry and numeric presentation helpers accept integers, invariant-culture floating-point values, and—where SVG permits lengths, percentages, or lists—strings. Root width and height retain numeric "; InlineContent.Code "Svg._width"; Text " and "; InlineContent.Code "Svg._height"; Text " helpers; use the existing HTML string helpers for CSS lengths." ]; - CodeBlock("fsharp", """svg { - Svg._width 24 - Svg._height 24.5 - Html._width "100%" - circle { _cx "50%"; _cy "50%"; _r 7.5 } -}"""); - - heading "icon-example" "Icon Example"; - CodeBlock("fsharp", """let checkIcon = +module Svg = + let private iconExampleSource = """let checkIcon = svg { _viewBox "0 0 24 24" _preserveAspectRatio "xMidYMid meet" @@ -51,77 +22,185 @@ open type Svg"""); _d "M5 13l4 4L19 7" _pathLength 1.0 } - }"""); + }""" - heading "chart-example" "Chart and Text Example"; - CodeBlock("fsharp", """svg { + let private previewSurface (content:HtmlElement) = + div { + _data("example-surface", "true") + _style "display:grid;min-height:16rem;place-items:center;border-radius:.65rem;background:#f8fafc;padding:1.5rem;color:#0f172a" + content + } + + let private iconExamplePreview = + previewSurface ( + svg { + _viewBox "0 0 24 24" + Svg._width 72 + Svg._height 72 + _fill "none" + _stroke "currentColor" + _strokeWidth 1.5 + _strokeLinecap "round" + _strokeLinejoin "round" + path { _d "M5 13l4 4L19 7" } + }) + + let private chartExampleSource = """svg { _viewBox "0 0 400 200" + _role "img" + _ariaLabel "Revenue trend rising across five periods" g { _transform "translate(40 10)" - _opacity 0.9 - rect { _x 0; _y 0; Svg._width 320; Svg._height 160; _rx 4 } - line { _x1 0; _y1 160; _x2 320; _y2 160 } - polyline { _points "0,140 80,100 160,120 240,40 320,20" } - polygon { _points "0,160 80,120 160,140 160,160" } - ellipse { _cx 240; _cy 40; _rx 6; _ry 4 } + rect { + _x 0; _y 0; Svg._width 320; Svg._height 160; _rx 8 + _fill "#ffffff"; _stroke "#cbd5e1" + } + polygon { + _points "0,140 80,100 160,120 240,40 320,20 320,160 0,160" + _fill "#10b981"; _fillOpacity 0.14 + } + line { _x1 0; _y1 160; _x2 320; _y2 160; _stroke "#94a3b8" } + polyline { + _points "0,140 80,100 160,120 240,40 320,20" + _fill "none"; _stroke "#059669"; _strokeWidth 4 + _strokeLinecap "round"; _strokeLinejoin "round" + } + ellipse { _cx 240; _cy 40; _rx 6; _ry 6; _fill "#047857" } textElement { - _x 160 - _y 190 - _textAnchor "middle" - _dominantBaseline "middle" - _fontFamily "sans-serif" - _fontSize "12px" + _x 160; _y 184; _textAnchor "middle" + _fontFamily "sans-serif"; _fontSize "12px"; _fill "#475569" tspan { "Revenue" } } } -}"""); +}""" - heading "resources-example" "Gradients, Clipping, Masking, and Reuse"; - CodeBlock("fsharp", """svg { - _xmlns "http://www.w3.org/2000/svg" + let private chartExamplePreview = + previewSurface ( + svg { + _viewBox "0 0 400 200" + _role "img" + _ariaLabel "Revenue trend rising across five periods" + _style "width:100%;max-width:40rem;height:auto" + g { + _transform "translate(40 10)" + rect { _x 0; _y 0; Svg._width 320; Svg._height 160; _rx 8; _fill "#ffffff"; _stroke "#cbd5e1" } + polygon { _points "0,140 80,100 160,120 240,40 320,20 320,160 0,160"; _fill "#10b981"; _fillOpacity 0.14 } + line { _x1 0; _y1 160; _x2 320; _y2 160; _stroke "#94a3b8" } + polyline { _points "0,140 80,100 160,120 240,40 320,20"; _fill "none"; _stroke "#059669"; _strokeWidth 4; _strokeLinecap "round"; _strokeLinejoin "round" } + ellipse { _cx 240; _cy 40; _rx 6; _ry 6; _fill "#047857" } + textElement { _x 160; _y 184; _textAnchor "middle"; _fontFamily "sans-serif"; _fontSize "12px"; _fill "#475569"; tspan { "Revenue" } } + } + }) + + let private resourcesExampleSource = """svg { + _viewBox "0 0 400 180" defs { linearGradient { - _id "brand-gradient" - _x1 "0%" - _y1 "0%" - _x2 "100%" - _y2 "0%" - _gradientUnits "objectBoundingBox" - _gradientTransform "rotate(10)" - _spreadMethod "pad" - stop { _offset "0%"; _stopColor "#0ea5e9"; _stopOpacity 1.0 } - stop { _offset "100%"; _stopColor "#6366f1"; _stopOpacity 0.75 } + _id "svg-brand-gradient" + _x1 "0%"; _y1 "0%"; _x2 "100%"; _y2 "100%" + stop { _offset "0%"; _stopColor "#0ea5e9" } + stop { _offset "100%"; _stopColor "#6366f1" } } radialGradient { - _id "spotlight" - _cx "50%"; _cy "50%"; _r "50%" - _fx "45%"; _fy "45%"; _fr "5%" + _id "svg-spotlight" + stop { _offset "35%"; _stopColor "white" } + stop { _offset "100%"; _stopColor "black" } } clipPath { - _id "plot-clip" - _clipPathUnits "userSpaceOnUse" - rect { Svg._width 100; Svg._height 50 } + _id "svg-card-clip" + rect { _x 20; _y 20; Svg._width 360; Svg._height 140; _rx 28 } } mask { - _id "fade-mask" - _maskUnits "userSpaceOnUse" - _maskContentUnits "userSpaceOnUse" + _id "svg-fade-mask" + rect { + _x 20; _y 20; Svg._width 360; Svg._height 140 + _fill "url(#svg-spotlight)" + } } symbol { - _id "dot" + _id "svg-dot" _viewBox "0 0 10 10" circle { _cx 5; _cy 5; _r 5 } } } g { - _fill "url(#brand-gradient)" - _fillOpacity 0.8 - _clipPath "url(#plot-clip)" - _mask "url(#fade-mask)" - useElement { _href "#dot"; _x 10; _y 20 } + _clipPath "url(#svg-card-clip)" + rect { _x 20; _y 20; Svg._width 360; Svg._height 140; _fill "url(#svg-brand-gradient)" } + g { + _fill "white"; _mask "url(#svg-fade-mask)" + useElement { _href "#svg-dot"; _x 80; _y 70; Svg._width 40; Svg._height 40 } + useElement { _href "#svg-dot"; _x 180; _y 45; Svg._width 70; Svg._height 70 } + useElement { _href "#svg-dot"; _x 300; _y 75; Svg._width 30; Svg._height 30 } + } } +}""" + + let private resourcesExamplePreview = + previewSurface ( + svg { + _viewBox "0 0 400 180" + _role "img" + _ariaLabel "Gradient card with clipped and masked reusable circles" + _style "width:100%;max-width:40rem;height:auto" + defs { + linearGradient { _id "svg-brand-gradient-preview"; _x1 "0%"; _y1 "0%"; _x2 "100%"; _y2 "100%"; stop { _offset "0%"; _stopColor "#0ea5e9" }; stop { _offset "100%"; _stopColor "#6366f1" } } + radialGradient { _id "svg-spotlight-preview"; stop { _offset "35%"; _stopColor "white" }; stop { _offset "100%"; _stopColor "black" } } + clipPath { _id "svg-card-clip-preview"; rect { _x 20; _y 20; Svg._width 360; Svg._height 140; _rx 28 } } + mask { _id "svg-fade-mask-preview"; rect { _x 20; _y 20; Svg._width 360; Svg._height 140; _fill "url(#svg-spotlight-preview)" } } + symbol { _id "svg-dot-preview"; _viewBox "0 0 10 10"; circle { _cx 5; _cy 5; _r 5 } } + } + g { + _clipPath "url(#svg-card-clip-preview)" + rect { _x 20; _y 20; Svg._width 360; Svg._height 140; _fill "url(#svg-brand-gradient-preview)" } + g { + _fill "white"; _mask "url(#svg-fade-mask-preview)" + useElement { _href "#svg-dot-preview"; _x 80; _y 70; Svg._width 40; Svg._height 40 } + useElement { _href "#svg-dot-preview"; _x 180; _y 45; Svg._width 70; Svg._height 70 } + useElement { _href "#svg-dot-preview"; _x 300; _y 75; Svg._width 30; Svg._height 30 } + } + } + }) + + let private heading id title = + Heading { id = id; title = title; level = 2 } + + let private nodes = + [ Paragraph [ Text "FSharp.ViewEngine provides a maintained SVG 2 production subset for icons, charts, gradients, clipping, reusable symbols, text, and accessible inline graphics." ]; + heading "support-policy" "Support Policy"; + Paragraph [ Text "The "; InlineContent.Code "Svg"; Text " type intentionally covers 21 common elements rather than every SVG 2 feature. Unsupported filters, animation, metadata, and specialized elements remain available through the generic trusted-name escape hatches." ]; + Paragraph [ Text "SVG-specific helpers complement the global attributes on "; InlineContent.Code "Html"; Text ". Continue using "; InlineContent.Code "_id"; Text ", "; InlineContent.Code "_class"; Text ", "; InlineContent.Code "_style"; Text ", "; InlineContent.Code "_href"; Text ", "; InlineContent.Code "_role"; Text ", and the WAI-ARIA helpers from "; InlineContent.Code "Html"; Text "." ]; + + heading "setup" "Setup"; + Paragraph [ Text "Open both static types when building inline SVG:" ]; + CodeBlock("fsharp", """open FSharp.ViewEngine +open type Html +open type Svg"""); + Paragraph [ Text "The SVG text and title builders are named "; InlineContent.Code "textElement"; Text " and "; InlineContent.Code "titleElement"; Text " so opening "; InlineContent.Code "Svg"; Text " does not shadow "; InlineContent.Code "Html.text"; Text " or "; InlineContent.Code "Html.title"; Text ". "; InlineContent.Code "useElement"; Text " avoids the F# "; InlineContent.Code "use"; Text " keyword." ]; + + heading "element-reference" "Element Reference"; + Paragraph [ Strong [ Text "Structure and descriptions: " ]; InlineContent.Code "svg"; Text ", "; InlineContent.Code "g"; Text ", "; InlineContent.Code "defs"; Text ", "; InlineContent.Code "symbol"; Text ", "; InlineContent.Code "useElement"; Text ", "; InlineContent.Code "titleElement"; Text ", and "; InlineContent.Code "desc"; Text "." ]; + Paragraph [ Strong [ Text "Shapes: " ]; InlineContent.Code "path"; Text ", "; InlineContent.Code "circle"; Text ", "; InlineContent.Code "rect"; Text ", "; InlineContent.Code "line"; Text ", "; InlineContent.Code "polyline"; Text ", "; InlineContent.Code "polygon"; Text ", and "; InlineContent.Code "ellipse"; Text "." ]; + Paragraph [ Strong [ Text "Resources and paint: " ]; InlineContent.Code "clipPath"; Text ", "; InlineContent.Code "mask"; Text ", "; InlineContent.Code "linearGradient"; Text ", "; InlineContent.Code "radialGradient"; Text ", and "; InlineContent.Code "stop"; Text "." ]; + Paragraph [ Strong [ Text "Text: " ]; InlineContent.Code "textElement"; Text " and "; InlineContent.Code "tspan"; Text "." ]; + + heading "numeric-and-length-values" "Numeric and Length Values"; + Paragraph [ Text "Geometry and numeric presentation helpers accept integers, invariant-culture floating-point values, and—where SVG permits lengths, percentages, or lists—strings. Root width and height retain numeric "; InlineContent.Code "Svg._width"; Text " and "; InlineContent.Code "Svg._height"; Text " helpers; use the existing HTML string helpers for CSS lengths." ]; + CodeBlock("fsharp", """svg { + Svg._width 24 + Svg._height 24.5 + Html._width "100%" + circle { _cx "50%"; _cy "50%"; _r 7.5 } }"""); + heading "icon-example" "Icon Example"; + Example("svg-icon-example", "Check icon", "fsharp", iconExampleSource, iconExamplePreview); + + heading "chart-example" "Chart and Text Example"; + Example("svg-chart-example", "Revenue chart", "fsharp", chartExampleSource, chartExamplePreview); + + heading "resources-example" "Gradients, Clipping, Masking, and Reuse"; + Example("svg-resources-example", "Gradient resources", "fsharp", resourcesExampleSource, resourcesExamplePreview); + heading "accessibility" "Accessibility"; Paragraph [ Text "For an informative graphic, give the root an image role and connect direct child "; InlineContent.Code "titleElement"; Text " and "; InlineContent.Code "desc"; Text " elements with "; InlineContent.Code "_ariaLabelledby"; Text ". SVG Accessibility API Mappings expose these children as the accessible name and description." ]; CodeBlock("fsharp", """svg { diff --git a/sln/src/Docs/src/Pages/TailwindElements.fs b/sln/src/Docs/src/Pages/TailwindElements.fs index 3a251ff..e12505b 100644 --- a/sln/src/Docs/src/Pages/TailwindElements.fs +++ b/sln/src/Docs/src/Pages/TailwindElements.fs @@ -1,15 +1,151 @@ namespace Docs.Pages open Docs.Common +open FSharp.ViewEngine +open type Html +open type FSharp.ViewEngine.TailwindElements module TailwindElements = + let private previewSurfaceWith modifier (content:HtmlElement) = + div { + _data("example-surface", "true") + _class $"twe-preview-surface {modifier}" + content + } + + let private previewSurface content = previewSurfaceWith "" content + let private floatingPreviewSurface content = previewSurfaceWith "twe-preview-surface-floating" content + + let private chevron = + raw """""" + + let private searchIcon = + raw """""" + + let private copyIcon = + raw """""" + + let private warningIcon = + raw """""" + + let private componentPreview id = + match id with + | "autocomplete" -> + floatingPreviewSurface ( + elAutocomplete { + _class "twe-autocomplete" + input { _name "preview-user"; _placeholder "Search people…"; _class "twe-input" } + button { _type "button"; _ariaLabel "Show people"; _class "twe-field-button"; chevron } + elOptions { + _popover; _anchor "bottom start"; _class "twe-floating twe-options" + elOption { _value "wade"; _class "twe-option"; "Wade Cooper" } + elOption { _value "jane"; _class "twe-option"; "Jane Doe" } + elOption { _value "ariana"; _class "twe-option"; "Ariana Bell" } + } + }) + | "command-palette" -> + previewSurface ( + elCommandPalette { + _name "preview-command"; _class "twe-command-palette" + div { _class "twe-command-search"; searchIcon; input { _placeholder "Search commands…"; _class "twe-command-input" }; kbd { "⌘K" } } + elCommandList { + _class "twe-command-list" + elDefaults { button { _type "button"; _hidden true; _class "twe-command-item"; span { "Recent command" }; kbd { "↵" } } } + elCommandGroup { + button { _id "preview-open-file"; _type "button"; _hidden true; _class "twe-command-item"; span { "Open file" }; kbd { "↵" } } + button { _id "preview-search-project"; _type "button"; _hidden true; _class "twe-command-item"; span { "Search project" }; kbd { "↵" } } + } + } + elNoResults { _hidden true; _class "twe-no-results"; "No results found." } + elCommandPreview { _for "preview-open-file"; _class "twe-command-preview"; "Open a file from the current project" } + }) + | "copy-button" -> + previewSurface ( + div { + _class "twe-copy-row" + elCopyable { _id "preview-install-command"; _class "twe-copy-value"; "dotnet add package FSharp.ViewEngine" } + button { _type "button"; _command "--copy"; _commandfor "preview-install-command"; _class "twe-button twe-copy-button"; copyIcon; span { _class "in-data-copied:hidden"; "Copy" }; span { _class "not-in-data-copied:hidden"; "Copied" } } + }) + | "dialog" -> + previewSurface ( + div { + button { _type "button"; _command "show-modal"; _commandfor "preview-delete-profile"; _class "twe-button"; "Delete profile" } + elDialog { + dialog { + _id "preview-delete-profile"; _class "twe-dialog" + elDialogBackdrop { _class "twe-dialog-backdrop" } + elDialogPanel { + _class "twe-dialog-panel" + form { + _method "dialog" + div { _class "twe-dialog-icon"; warningIcon } + div { _class "twe-dialog-copy"; h3 { "Delete profile?" }; p { "This action cannot be undone. All profile data will be permanently removed." } } + div { _class "twe-dialog-actions"; button { _type "button"; _command "close"; _commandfor "preview-delete-profile"; _class "twe-button"; "Cancel" }; button { _type "submit"; _class "twe-button twe-button-danger"; "Delete" } } + } + } + } + } + }) + | "disclosure" -> + previewSurface ( + div { + _class "twe-disclosure" + button { _type "button"; _command "--toggle"; _commandfor "preview-answer"; _class "twe-disclosure-trigger"; span { "What does the answer mean?" }; chevron } + elDisclosure { _id "preview-answer"; _hidden true; _class "twe-disclosure-panel"; "The answer is 42 — a playful reference to The Hitchhiker’s Guide to the Galaxy." } + }) + | "dropdown-menu" -> + floatingPreviewSurface ( + elDropdown { + _class "twe-dropdown" + button { _type "button"; _class "twe-button"; "Options"; chevron } + elMenu { + _popover; _anchor "bottom start"; _class "twe-floating twe-menu" + button { _type "button"; _class "twe-option"; "Edit" } + button { _type "button"; _class "twe-option"; "Duplicate" } + hr { _role "none" } + button { _type "button"; _class "twe-option twe-option-danger"; "Delete" } + } + }) + | "popover" -> + floatingPreviewSurface ( + elPopoverGroup { + _class "twe-popover-group" + button { _type "button"; _popovertarget "preview-account-menu"; _class "twe-button"; "Account"; chevron } + elPopover { + _id "preview-account-menu"; _popover; _anchor "bottom start"; _class "twe-floating twe-popover" + div { _class "twe-avatar"; "AS" } + div { _class "twe-popover-copy"; strong { "Avery Stone" }; p { "avery@example.com" } } + button { _type "button"; _class "twe-popover-action"; "View profile" } + } + }) + | "select" -> + floatingPreviewSurface ( + elSelect { + _name "preview-status"; _value "active"; _class "twe-select" + button { _type "button"; _class "twe-button twe-select-button"; elSelectedContent { "Active" }; chevron } + elOptions { + _popover; _anchor "bottom start"; _class "twe-floating twe-options" + elOption { _value "active"; _class "twe-option"; "Active" } + elOption { _value "inactive"; _class "twe-option"; "Inactive" } + elOption { _value "archived"; _class "twe-option"; "Archived" } + } + }) + | "tabs" -> + previewSurface ( + elTabGroup { + _class "twe-tabs" + elTabList { _class "twe-tab-list"; button { _type "button"; _class "twe-tab"; "Account" }; button { _type "button"; _class "twe-tab"; "Security" } } + elTabPanels { _class "twe-tab-panels"; div { h3 { "Account settings" }; p { "Update your profile details and contact information." } }; div { _hidden true; h3 { "Security settings" }; p { "Manage your password and two-factor authentication." } } } + }) + | _ -> previewSurface (div { "Component preview" }) + let private heading id title = Heading { id = id; title = title; level = 2 } let private componentNodes id title description source = [ heading id title; Paragraph [ Text description ]; - CodeBlock("fsharp", source) ] + Example($"tailwind-elements-{id}", title, "fsharp", source, componentPreview id) ] let private nodes = [ [ Paragraph [ Text "FSharp.ViewEngine covers all 23 custom elements published by "; Link("Tailwind Plus Elements 1.0.22", "https://www.npmjs.com/package/@tailwindplus/elements/v/1.0.22"); Text ", a framework-independent library for the interactive behavior in Tailwind Plus HTML components." ]; @@ -26,6 +162,7 @@ open type TailwindElements"""); _type "module" }"""); Paragraph [ Text "Elements targets modern browsers supported by Tailwind CSS v4: Chrome 111+, Safari 16.4+, and Firefox 128+." ]; + Paragraph [ Text "This page loads the pinned Elements 1.0.22 runtime, so each Preview tab below renders and operates the actual custom elements emitted by the F# builders." ]; heading "shared-attributes" "Shared Attributes"; Paragraph [ Text "Use the Elements-specific helpers for popover positioning. Anchor values follow the official grammar, such as "; InlineContent.Code "bottom start"; Text "." ]; CodeBlock("fsharp", """elPopover { @@ -65,7 +202,7 @@ open type TailwindElements"""); componentNodes "copy-button" "Copy Button" "Wrap copyable text with elCopyable and target it with the standard invoker-command helpers." """elCopyable { _id "install-command" - "dotnet package add FSharp.ViewEngine" + "dotnet add package FSharp.ViewEngine" } button { _type "button" diff --git a/sln/src/Docs/src/Pages/Usage.fs b/sln/src/Docs/src/Pages/Usage.fs index f2eb151..0e32e66 100644 --- a/sln/src/Docs/src/Pages/Usage.fs +++ b/sln/src/Docs/src/Pages/Usage.fs @@ -1,20 +1,11 @@ namespace Docs.Pages open Docs.Common +open FSharp.ViewEngine +open type Html module Usage = - let page = - { id = "usage" - path = "/usage" - aliases = [ "/giraffe" ] - navLabel = "Usage" - category = "Getting started" - title = "Usage" - browserTitle = "Usage - FSharp.ViewEngine" - nodes = [ - Paragraph [ Text "FSharp.ViewEngine integrates with "; Link("Giraffe", "https://giraffe.wiki/"); Text " by rendering elements to an HTML string and returning it via Giraffe's "; InlineContent.Code "htmlString"; Text " handler." ]; - Heading { id = "minimal-example"; title = "Minimal Example"; level = 2 }; - CodeBlock("fsharp", """open Microsoft.AspNetCore.Builder + let private minimalExampleSource = """open Microsoft.AspNetCore.Builder open Microsoft.Extensions.DependencyInjection open Giraffe open FSharp.ViewEngine @@ -51,7 +42,27 @@ let main args = let app = builder.Build() app.UseGiraffe(webApp) app.Run() - 0"""); + 0""" + + let private minimalExamplePreview = + div { + _style "min-height:12rem;border-radius:.65rem;background:white;padding:2rem;color:#111827;box-shadow:inset 0 0 0 1px #e5e7eb" + h2 { _style "margin:0;font-size:1.5rem"; "Hello from FSharp.ViewEngine!" } + p { _style "margin:.75rem 0 0;color:#4b5563"; "Served by Giraffe." } + } + + let page = + { id = "usage" + path = "/usage" + aliases = [ "/giraffe" ] + navLabel = "Giraffe" + category = "Integrations" + title = "Giraffe" + browserTitle = "Giraffe · FSharp.ViewEngine" + nodes = [ + Paragraph [ Text "FSharp.ViewEngine integrates with "; Link("Giraffe", "https://giraffe.wiki/"); Text " by rendering elements to an HTML string and returning it via Giraffe's "; InlineContent.Code "htmlString"; Text " handler." ]; + Heading { id = "minimal-example"; title = "Minimal Example"; level = 2 }; + CodeBlock("fsharp", minimalExampleSource); Heading { id = "how-it-works"; title = "How It Works"; level = 2 }; OrderedList [ [ Text "Build your HTML using FSharp.ViewEngine elements" ]; diff --git a/sln/src/Docs/wwwroot/css/output.css b/sln/src/Docs/wwwroot/css/output.css index 4edf367..ec53c54 100644 --- a/sln/src/Docs/wwwroot/css/output.css +++ b/sln/src/Docs/wwwroot/css/output.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-100:oklch(96.7% .003 264.542);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-900:oklch(21% .006 285.885);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--radius-lg:.5rem;--radius-xl:.75rem;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-\[4\.75rem\]{top:4.75rem}.top-full{top:100%}.right-0{right:0}.left-0{left:0}.z-10{z-index:10}.z-50{z-index:50}.z-\[70\]{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-8{margin-block:calc(var(--spacing) * 8)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.-mr-6{margin-right:calc(var(--spacing) * -6)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.-ml-0\.5{margin-left:calc(var(--spacing) * -.5)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.table{display:table}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-\[calc\(100vh-4\.75rem\)\]{height:calc(100vh - 4.75rem)}.h-full{height:100%}.min-h-full{min-height:100%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-36{width:calc(var(--spacing) * 36)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-none{max-width:none}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-full{min-width:100%}.flex-auto{flex:auto}.flex-none{flex:none}.basis-0{flex-basis:0}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-9>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 9) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 9) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:var(--spacing)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}:where(.divide-slate-200>:not(:last-child)){border-color:var(--color-slate-200)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/60{background-color:#f8fafc99}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/60{background-color:color-mix(in oklab, var(--color-slate-50) 60%, transparent)}}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-950\/60{background-color:#02061899}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/60{background-color:color-mix(in oklab, var(--color-slate-950) 60%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/75{background-color:#ffffffbf}@supports (color:color-mix(in lab, red, red)){.bg-white\/75{background-color:color-mix(in oklab, var(--color-white) 75%, transparent)}}.fill-slate-400{fill:var(--color-slate-400)}.stroke-sky-500{stroke:var(--color-sky-500)}.p-1{padding:var(--spacing)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pl-0\.5{padding-left:calc(var(--spacing) * .5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-blue-600{color:var(--color-blue-600)}.text-sky-500{color:var(--color-sky-500)}.text-sky-600{color:var(--color-sky-600)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-900{color:var(--color-zinc-900)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-slate-900\/5{--tw-shadow-color:#0f172b0d}@supports (color:color-mix(in lab, red, red)){.shadow-slate-900\/5{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-900) 5%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.ring-slate-900\/10{--tw-ring-color:#0f172b1a}@supports (color:color-mix(in lab, red, red)){.ring-slate-900\/10{--tw-ring-color:color-mix(in oklab, var(--color-slate-900) 10%, transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-500{--tw-duration:.5s;transition-duration:.5s}.prose-slate{--tw-prose-body:oklch(37.2% .044 257.287);--tw-prose-headings:oklch(20.8% .042 265.755);--tw-prose-lead:oklch(44.6% .043 257.281);--tw-prose-links:oklch(20.8% .042 265.755);--tw-prose-bold:oklch(20.8% .042 265.755);--tw-prose-counters:oklch(55.4% .046 257.417);--tw-prose-bullets:oklch(86.9% .022 252.894);--tw-prose-hr:oklch(92.9% .013 255.508);--tw-prose-quotes:oklch(20.8% .042 265.755);--tw-prose-quote-borders:oklch(92.9% .013 255.508);--tw-prose-captions:oklch(55.4% .046 257.417);--tw-prose-kbd:oklch(20.8% .042 265.755);--tw-prose-kbd-shadows:oklab(20.8% -.00310889 -.0418848/.1);--tw-prose-code:oklch(20.8% .042 265.755);--tw-prose-pre-code:oklch(92.9% .013 255.508);--tw-prose-pre-bg:oklch(27.9% .041 260.031);--tw-prose-th-borders:oklch(86.9% .022 252.894);--tw-prose-td-borders:oklch(92.9% .013 255.508);--tw-prose-invert-body:oklch(86.9% .022 252.894);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.4% .04 256.788);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.4% .04 256.788);--tw-prose-invert-bullets:oklch(44.6% .043 257.281);--tw-prose-invert-hr:oklch(37.2% .044 257.287);--tw-prose-invert-quotes:oklch(96.8% .007 247.896);--tw-prose-invert-quote-borders:oklch(37.2% .044 257.287);--tw-prose-invert-captions:oklch(70.4% .04 256.788);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(86.9% .022 252.894);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .043 257.281);--tw-prose-invert-td-borders:oklch(37.2% .044 257.287)}@media (hover:hover){.group-hover\:fill-slate-500:is(:where(.group):hover *){fill:var(--color-slate-500)}}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-1\/2:before{content:var(--tw-content);top:50%}.before\:-left-1:before{content:var(--tw-content);left:calc(var(--spacing) * -1)}.before\:hidden:before{content:var(--tw-content);display:none}.before\:h-1\.5:before{content:var(--tw-content);height:calc(var(--spacing) * 1.5)}.before\:w-1\.5:before{content:var(--tw-content);width:calc(var(--spacing) * 1.5)}.before\:-translate-y-1\/2:before{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\:bg-sky-500:before{content:var(--tw-content);background-color:var(--color-sky-500)}.before\:bg-slate-300:before{content:var(--tw-content);background-color:var(--color-slate-300)}@media (hover:hover){.hover\:bg-slate-50\/70:hover{background-color:#f8fafcb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-slate-50\/70:hover{background-color:color-mix(in oklab, var(--color-slate-50) 70%, transparent)}}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-zinc-600:hover{color:var(--color-zinc-600)}.hover\:before\:block:hover:before{content:var(--tw-content);display:block}}@media (min-width:40rem){.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (min-width:48rem){.md\:grow{flex-grow:1}}@media (min-width:64rem){.lg\:relative{position:relative}.lg\:mt-4{margin-top:calc(var(--spacing) * 4)}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:max-w-none{max-width:none}.lg\:flex-none{flex:none}:where(.lg\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.lg\:border-slate-200{border-color:var(--color-slate-200)}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:pr-0{padding-right:0}.lg\:pl-8{padding-left:calc(var(--spacing) * 8)}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:80rem){.xl\:sticky{position:sticky}.xl\:top-\[4\.75rem\]{top:4.75rem}.xl\:-mr-6{margin-right:calc(var(--spacing) * -6)}.xl\:block{display:block}.xl\:h-\[calc\(100vh-4\.75rem\)\]{height:calc(100vh - 4.75rem)}.xl\:w-72{width:calc(var(--spacing) * 72)}.xl\:flex-none{flex:none}.xl\:overflow-y-auto{overflow-y:auto}.xl\:px-12{padding-inline:calc(var(--spacing) * 12)}.xl\:px-16{padding-inline:calc(var(--spacing) * 16)}.xl\:py-12{padding-block:calc(var(--spacing) * 12)}.xl\:pr-6{padding-right:calc(var(--spacing) * 6)}.xl\:pr-16{padding-right:calc(var(--spacing) * 16)}}.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}:where(.dark\:divide-slate-700:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-slate-700)}:where(.dark\:divide-slate-800:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-slate-800)}.dark\:border-slate-700:where(.dark,.dark *){border-color:var(--color-slate-700)}.dark\:border-slate-800:where(.dark,.dark *){border-color:var(--color-slate-800)}.dark\:bg-slate-500:where(.dark,.dark *){background-color:var(--color-slate-500)}.dark\:bg-slate-700:where(.dark,.dark *){background-color:var(--color-slate-700)}.dark\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-800\/40:where(.dark,.dark *){background-color:#1d293d66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 40%, transparent)}}.dark\:bg-slate-800\/60:where(.dark,.dark *){background-color:#1d293d99}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 60%, transparent)}}.dark\:bg-slate-900:where(.dark,.dark *){background-color:var(--color-slate-900)}.dark\:bg-slate-900\/75:where(.dark,.dark *){background-color:#0f172bbf}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-900\/75:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-900) 75%, transparent)}}.dark\:text-sky-400:where(.dark,.dark *){color:var(--color-sky-400)}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-300:where(.dark,.dark *){color:var(--color-slate-300)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-zinc-400:where(.dark,.dark *){color:var(--color-zinc-400)}.dark\:shadow-none:where(.dark,.dark *){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-0:where(.dark,.dark *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-slate-700:where(.dark,.dark *){--tw-ring-color:var(--color-slate-700)}.dark\:ring-white\/10:where(.dark,.dark *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:ring-white\/10:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\:backdrop-blur:where(.dark,.dark *){--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.dark\:prose-invert:where(.dark,.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}@media (hover:hover){.dark\:group-hover\:fill-slate-300:where(.dark,.dark *):is(:where(.group):hover *){fill:var(--color-slate-300)}}.dark\:before\:bg-slate-700:where(.dark,.dark *):before{content:var(--tw-content);background-color:var(--color-slate-700)}@media (hover:hover){.dark\:hover\:bg-slate-700:where(.dark,.dark *):hover{background-color:var(--color-slate-700)}.dark\:hover\:bg-slate-700\/50:where(.dark,.dark *):hover{background-color:#31415880}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-slate-700\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-slate-700) 50%, transparent)}}.dark\:hover\:bg-slate-800\/40:where(.dark,.dark *):hover{background-color:#1d293d66}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-slate-800\/40:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-slate-800) 40%, transparent)}}.dark\:hover\:text-slate-300:where(.dark,.dark *):hover{color:var(--color-slate-300)}.dark\:hover\:text-zinc-300:where(.dark,.dark *):hover{color:var(--color-zinc-300)}}.\[\&_h1\]\:scroll-mt-28 h1,.\[\&_h2\]\:scroll-mt-28 h2,.\[\&_h3\]\:scroll-mt-28 h3{scroll-margin-top:calc(var(--spacing) * 28)}}[x-cloak]{display:none!important}.prose pre{background-color:#0f172a;border:1px solid #1e293b;border-radius:.75rem;position:relative;overflow-x:auto;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.prose pre code{color:#e2e8f0;border-radius:0;padding:0;font-family:Fira Code,JetBrains Mono,Monaco,Cascadia Code,Segoe UI Mono,Roboto Mono,Oxygen Mono,Ubuntu Monospace,Source Code Pro,Fira Mono,Droid Sans Mono,Courier New,monospace;font-size:.875rem;line-height:1.7;background-color:#0000!important}.prose pre code .hljs-keyword{color:#a855f7}.prose pre code .hljs-string{color:#22c55e}.prose pre code .hljs-comment{color:#94a3b8;font-style:italic}.prose pre code .hljs-function{color:#3b82f6}.prose pre code .hljs-number{color:#fb923c}.prose :not(pre)>code{color:#e2e8f0!important;background-color:#334155!important;border-radius:.375rem!important;padding:.25rem .5rem!important;font-size:.875rem!important;font-weight:500!important}.prose code:before,.prose code:after{content:none!important}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0} \ No newline at end of file +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-100:oklch(96.7% .003 264.542);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-bold:700;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.table-cell{display:table-cell}.size-1{width:var(--spacing);height:var(--spacing)}.h-40{height:calc(var(--spacing) * 40)}.h-84{height:calc(var(--spacing) * 84)}.h-120{height:calc(var(--spacing) * 120)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.transform\!{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-100{background-color:var(--color-gray-100)}.p-4{padding:calc(var(--spacing) * 4)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-wrap{text-wrap:wrap}.text-blue-600{color:var(--color-blue-600)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.italic\!{font-style:italic!important}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur\!{--tw-blur:blur(8px)!important;filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.not-in-data-copied\:hidden:not(:where([data-copied]) *),:where([data-copied]) .in-data-copied\:hidden{display:none}}@font-face{font-family:Noto Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/noto-sans-latin.woff2)format("woff2")}@font-face{font-family:Noto Sans;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/noto-sans-latin-italic.woff2)format("woff2")}@font-face{font-family:Noto Sans Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/noto-sans-mono-latin.woff2)format("woff2")}[x-cloak]{display:none!important}.docs-home-logo{width:5rem;height:5rem;margin-bottom:1.5rem}.docs-home-logo img{width:100%;height:100%}.docs-catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.docs-catalog-card{border:1px solid var(--spec-border);background:var(--spec-input-bg);min-width:0;color:var(--spec-text);border-radius:.75rem;flex-direction:column;gap:.45rem;padding:1.25rem;text-decoration:none;display:flex;box-shadow:0 1px 2px #0000000a}.docs-catalog-card:hover{border-color:var(--spec-border-strong);background:var(--spec-hover)}.docs-catalog-card:focus-visible{outline:2px solid var(--spec-accent-700);outline-offset:2px}.docs-catalog-eyebrow{color:var(--spec-selection-text);letter-spacing:.08em;font-size:.6875rem;font-weight:700}.docs-catalog-description{color:var(--spec-muted);font-size:.875rem;line-height:1.55}.docs-catalog-action{color:var(--spec-selection-text);margin-top:.35rem;font-size:.8125rem;font-weight:650}.docs-showcase-surface{background:var(--spec-subtle);min-height:15rem;color:var(--spec-text);border-radius:.65rem;padding:1.5rem}.twe-preview-surface{background:var(--spec-subtle);min-height:10rem;color:var(--spec-text);border-radius:.65rem;padding:1.5rem}.twe-preview-surface-floating{min-height:13rem}.twe-button,.twe-input,.twe-command-input,.twe-option,.twe-disclosure-trigger,.twe-tab,.twe-popover-action{font:inherit}.twe-button{border:1px solid var(--spec-border-strong);background:var(--spec-input-bg);min-height:2.5rem;color:var(--spec-text);cursor:pointer;border-radius:.5rem;justify-content:center;align-items:center;gap:.45rem;padding:.55rem .8rem;font-size:.875rem;font-weight:650;display:inline-flex;box-shadow:0 1px 2px #0000000d}.twe-button:hover,.twe-button[aria-expanded=true]{border-color:var(--spec-accent-500);background:var(--spec-hover)}.twe-button:focus-visible,.twe-input:focus-visible,.twe-option:focus,.twe-disclosure-trigger:focus-visible,.twe-popover-action:focus-visible{outline:2px solid var(--spec-accent-500);outline-offset:2px}.twe-tab:focus-visible{outline:2px solid var(--spec-accent-500);outline-offset:-2px;border-radius:.2rem .2rem 0 0}.twe-chevron{width:1rem;height:1rem;color:var(--spec-muted);flex:none;transition:transform .15s}[aria-expanded=true]>.twe-chevron{transform:rotate(180deg)}.twe-autocomplete,.twe-select{max-width:28rem;display:block}.twe-autocomplete{position:relative}.twe-input{border:1px solid var(--spec-border-strong);background:var(--spec-input-bg);width:100%;min-height:2.75rem;color:var(--spec-text);border-radius:.5rem;padding:.65rem 2.75rem .65rem .8rem;font-size:.875rem;box-shadow:0 1px 2px #0000000a}.twe-input::placeholder,.twe-command-input::placeholder{color:var(--spec-faint)}.twe-field-button{width:2.25rem;height:2.25rem;color:var(--spec-muted);cursor:pointer;background:0 0;border:0;border-radius:.375rem;place-items:center;padding:0;display:grid;position:absolute;top:.25rem;right:.25rem}.twe-field-button:hover{background:var(--spec-hover);color:var(--spec-text)}.twe-floating{border:1px solid var(--spec-border-strong);background:var(--spec-menu);color:var(--spec-text);transition-behavior:allow-discrete;--anchor-gap:.375rem;border-radius:.6rem;transition:opacity .1s,transform .1s;box-shadow:0 12px 30px #0000002e}.twe-floating[data-closed]{opacity:0;transform:scale(.98)}.twe-options{width:var(--input-width,var(--button-width));padding:.3rem}.twe-select .twe-options{width:var(--button-width)}.twe-option{width:100%;min-height:2.25rem;color:var(--spec-text-secondary);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.4rem;align-items:center;padding:.5rem .65rem;font-size:.875rem;display:flex}.twe-option:hover,.twe-option:focus,.twe-option[aria-selected=true]{background:var(--spec-selection-bg);color:var(--spec-selection-text);outline:0}.twe-command-palette{border:1px solid var(--spec-border-strong);background:var(--spec-input-bg);border-radius:.75rem;max-width:32rem;display:block;overflow:hidden;box-shadow:0 12px 30px #00000014}.twe-command-search{border-bottom:1px solid var(--spec-border);align-items:center;gap:.65rem;padding:0 .8rem;display:flex}.twe-field-icon{width:1.15rem;height:1.15rem;color:var(--spec-faint);flex:none}.twe-command-input{min-width:0;min-height:3rem;color:var(--spec-text);background:0 0;border:0;outline:0;flex:1;padding:0;font-size:.875rem}.twe-command-input:focus-visible{outline:0}.twe-command-search:focus-within{box-shadow:inset 0 -2px var(--spec-accent-500)}.twe-command-search kbd,.twe-command-item kbd{border:1px solid var(--spec-border);background:var(--spec-subtle);color:var(--spec-faint);font-family:var(--docs-font-mono);border-radius:.3rem;padding:.12rem .35rem;font-size:.6875rem}.twe-command-list{padding:.35rem;display:block}.twe-command-item{width:100%;color:var(--spec-text-secondary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.45rem;justify-content:space-between;align-items:center;padding:.55rem .65rem;font-size:.875rem;display:flex}.twe-command-item:focus,.twe-command-item[aria-selected=true]{background:var(--spec-selection-bg);color:var(--spec-selection-text);outline:0}.twe-no-results,.twe-command-preview{color:var(--spec-muted);font-size:.8125rem;display:block}.twe-no-results{text-align:center;padding:1rem}.twe-command-preview{border-top:1px solid var(--spec-border);padding:.65rem 1rem}.twe-copy-row{border:1px solid var(--spec-border-strong);background:var(--spec-input-bg);border-radius:.65rem;align-items:center;gap:.75rem;max-width:38rem;padding:.65rem;display:flex}.twe-copy-value{min-width:0;color:var(--spec-text-secondary);font-family:var(--docs-font-mono);white-space:nowrap;flex:1;font-size:.8125rem;overflow-x:auto}.twe-copy-button svg{width:1rem;height:1rem}.twe-dialog{background:0 0;border:0;width:100%;max-width:none;height:100%;max-height:none;padding:0;overflow:visible}.twe-dialog::backdrop{background:0 0}.twe-dialog-backdrop{z-index:0;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a8c;transition:opacity .15s;position:fixed;inset:0}.twe-dialog-backdrop[data-closed]{opacity:0}.twe-dialog-panel{z-index:1;border:1px solid var(--spec-border);background:var(--spec-menu);width:min(28rem,100vw - 2rem);color:var(--spec-text);border-radius:.8rem;padding:1.25rem;transition:opacity .15s,transform .15s;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 24px 60px #00000052}.twe-dialog-panel[data-closed]{opacity:0;transform:translate(-50%,-48%)scale(.97)}.twe-dialog-panel form{grid-template-columns:auto minmax(0,1fr);gap:.85rem;display:grid}.twe-dialog-icon{color:#dc2626;background:#fef2f2;border-radius:999px;place-items:center;width:2.5rem;height:2.5rem;display:grid}:root.dark .twe-dialog-icon{color:#fca5a5;background:#450a0a}.twe-dialog-icon svg{width:1.25rem;height:1.25rem}.twe-dialog-copy h3,.twe-tab-panels h3{color:var(--spec-text);margin:0;font-size:1rem;font-weight:700}.twe-dialog-copy p,.twe-tab-panels p{color:var(--spec-muted);margin:.4rem 0 0;font-size:.875rem;line-height:1.55}.twe-dialog-actions{grid-column:1/-1;justify-content:flex-end;gap:.5rem;margin-top:.5rem;display:flex}.twe-button-danger{color:#fff;background:#dc2626;border-color:#dc2626}.twe-button-danger:hover{background:#b91c1c;border-color:#b91c1c}.twe-disclosure,.twe-tabs{border:1px solid var(--spec-border-strong);background:var(--spec-input-bg);border-radius:.65rem;max-width:36rem}.twe-disclosure{padding:1rem}.twe-disclosure-trigger{width:100%;color:var(--spec-text);text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:1rem;padding:0;font-size:.875rem;font-weight:700;display:flex}.twe-disclosure-panel{color:var(--spec-muted);padding-top:.75rem;font-size:.875rem;line-height:1.6;transition:opacity .12s;display:block}.twe-disclosure-panel[data-closed]{opacity:0}.twe-dropdown,.twe-popover-group{display:inline-block}.twe-menu{min-width:11rem;padding:.3rem}.twe-menu hr{background:var(--spec-border);border:0;height:1px;margin:.3rem 0}.twe-option-danger{color:#dc2626}:root.dark .twe-option-danger{color:#fca5a5}.twe-popover{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;width:17rem;padding:.85rem;display:grid}.twe-avatar{background:var(--spec-selection-bg);width:2.25rem;height:2.25rem;color:var(--spec-selection-text);border-radius:999px;place-items:center;font-size:.75rem;font-weight:750;display:grid}.twe-popover-copy strong{font-size:.875rem;display:block}.twe-popover-copy p{color:var(--spec-muted);margin:.15rem 0 0;font-size:.75rem}.twe-popover-action{border:0;border-top:1px solid var(--spec-border);color:var(--spec-selection-text);text-align:left;cursor:pointer;background:0 0;grid-column:1/-1;padding:.65rem 0 0;font-size:.8125rem;font-weight:650}.twe-select{max-width:22rem}.twe-select-button{justify-content:space-between;width:100%}.twe-tabs{padding:1rem}.twe-tab-list{border-bottom:1px solid var(--spec-border);gap:1.25rem;display:flex}.twe-tab{color:var(--spec-muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:.25rem 0 .65rem;font-size:.875rem;font-weight:650}.twe-tab:hover{color:var(--spec-text)}.twe-tab[aria-selected=true]{border-bottom-color:var(--spec-accent-500);color:var(--spec-selection-text)}.twe-tab-panels{color:var(--spec-muted);padding-top:1rem;display:block}@media (max-width:520px){.twe-preview-surface{min-height:8rem;padding:1rem}.twe-copy-row{flex-direction:column;align-items:stretch}.twe-copy-button{align-self:flex-end}.twe-dialog-actions{flex-direction:column-reverse}.twe-dialog-actions .twe-button{width:100%}}.docs-mini-shell{border:1px solid var(--spec-border);background:var(--spec-bg);border-radius:.65rem;grid-template-columns:10rem minmax(0,1fr) 8rem;min-height:18rem;display:grid;overflow:hidden;box-shadow:0 8px 24px #00000014}.docs-mini-shell>aside,.docs-mini-shell>nav{color:var(--spec-muted);flex-direction:column;gap:.65rem;padding:1rem;font-size:.75rem;display:flex}.docs-mini-shell>aside{border-right:1px solid var(--spec-border);background:var(--spec-subtle)}.docs-mini-shell>nav{border-left:1px solid var(--spec-border)}.docs-mini-main{min-width:0;padding:1.5rem}.docs-mini-shell h3,.docs-mini-shell p{margin:0}.docs-mini-shell p{color:var(--spec-muted);margin-top:.6rem;font-size:.8125rem;line-height:1.6}.docs-mini-brand{color:var(--spec-text);font-weight:700}.docs-mini-nav-active{background:var(--spec-selection-bg);color:var(--spec-selection-text);border-radius:.4rem;padding:.4rem .5rem;font-weight:650}.docs-mini-breadcrumb{color:var(--spec-faint);margin-bottom:1rem;font-size:.6875rem}.docs-mini-code{color:#f5f5f5;font-family:var(--docs-font-mono);background:#0a0a0a;border-radius:.5rem;margin-top:1.25rem;padding:.8rem;font-size:.75rem;overflow-x:auto}.docs-showcase-reference{grid-template-columns:minmax(0,1fr) minmax(16rem,.8fr);gap:1.25rem;display:grid}.docs-showcase-reference h3{margin:0 0 1rem}.docs-showcase-reference>div:last-child,.docs-showcase-panels{flex-direction:column;gap:1rem;min-width:0;display:flex}.docs-product-screen{color:#0f172a;background:#f8fafc;min-height:22rem}.docs-product-header{background:#fff;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:.8rem 1rem;display:flex}.docs-product-header span{color:#fff;background:#0f172a;border-radius:999px;place-items:center;width:2rem;height:2rem;font-size:.6875rem;display:grid}.docs-product-content{max-width:36rem;margin:0 auto;padding:2rem 1.25rem}.docs-product-content>small{color:#0369a1;letter-spacing:.08em;font-weight:750}.docs-product-content h3{margin:.45rem 0 .4rem;font-size:1.45rem}.docs-product-content>p{color:#64748b;margin:0;font-size:.8125rem;line-height:1.6}.docs-product-card{background:#fff;border:1px solid #e2e8f0;border-radius:.7rem;margin-top:1.25rem;padding:1rem;box-shadow:0 1px 2px #0000000d}.docs-product-card label{margin-bottom:.4rem;font-size:.75rem;font-weight:700;display:block}.docs-product-card input{color:#334155;border:1px solid;border-radius:.45rem;width:100%;padding:.65rem .75rem}.docs-product-error{color:#b91c1c;margin:.4rem 0 0;font-size:.72rem}.docs-product-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.docs-product-actions button,.docs-navigation-actions button,.docs-navigation-actions a{color:#0f172a;font:inherit;background:#fff;border:1px solid #cbd5e1;border-radius:.45rem;padding:.55rem .8rem;font-size:.75rem;font-weight:700;text-decoration:none}.docs-product-actions .docs-product-primary{color:#fff;background:#0284c7;border-color:#0284c7}.docs-navigation-actions{justify-content:center;align-items:center;gap:.75rem;min-height:12rem;display:flex}.docs-notice-preview{min-height:10rem;color:var(--spec-text);justify-content:center;align-items:center;gap:.65rem;display:flex}.docs-notice-preview strong{background:var(--spec-selection-bg);color:var(--spec-selection-text);border-radius:999px;padding:.3rem .6rem}.docs-isolated-document{color-scheme:light;background:#fff;border:0;width:100%;min-height:32rem;display:block}.docs-comparison-chart{border:1px solid var(--spec-border);background:var(--spec-subtle);color:var(--spec-text);border-radius:.75rem;margin:1.5rem 0;padding:1.25rem}.docs-comparison-chart figcaption>strong{font-size:.9375rem;display:block}.docs-comparison-chart figcaption>p{color:var(--spec-muted);margin:.35rem 0 0;font-size:.875rem;line-height:1.6}.docs-comparison-direction{color:var(--spec-faint);letter-spacing:.02em;margin-top:.5rem;font-size:.75rem;font-weight:650;display:block}.docs-comparison-bars{flex-direction:column;gap:1rem;margin-top:1.25rem;display:flex}.docs-comparison-row{grid-template-columns:minmax(10rem,1fr) minmax(10rem,2fr) minmax(7rem,auto);align-items:center;gap:.75rem;min-width:0;display:grid}.docs-comparison-labels{justify-content:space-between;align-items:baseline;gap:.75rem;min-width:0;font-size:.8125rem;display:flex}.docs-comparison-labels strong{overflow-wrap:anywhere}.docs-comparison-value,.docs-comparison-note{color:var(--spec-muted);font-family:var(--docs-font-mono);white-space:nowrap;font-size:.75rem}.docs-comparison-track{background:var(--spec-border);border-radius:999px;height:.65rem;overflow:hidden}.docs-comparison-bar{border-radius:inherit;background:var(--spec-faint);min-width:.35rem;height:100%}.docs-comparison-bar-highlighted{background:var(--spec-accent-500)}@media (max-width:700px){.docs-catalog-grid,.docs-showcase-reference,.docs-mini-shell{grid-template-columns:1fr}.docs-mini-shell>aside,.docs-mini-shell>nav{display:none}.docs-comparison-row{grid-template-columns:1fr auto;gap:.4rem .75rem}.docs-comparison-labels{grid-column:1/-1}.docs-comparison-note{text-align:right}}.prose pre{background-color:#0f172a;border:1px solid #1e293b;border-radius:.75rem;position:relative;overflow-x:auto;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.prose pre code{color:#e2e8f0;border-radius:0;padding:0;font-family:Fira Code,JetBrains Mono,Monaco,Cascadia Code,Segoe UI Mono,Roboto Mono,Oxygen Mono,Ubuntu Monospace,Source Code Pro,Fira Mono,Droid Sans Mono,Courier New,monospace;font-size:.875rem;line-height:1.7;background-color:#0000!important}.prose pre code .hljs-keyword{color:#a855f7}.prose pre code .hljs-string{color:#22c55e}.prose pre code .hljs-comment{color:#94a3b8;font-style:italic}.prose pre code .hljs-function{color:#3b82f6}.prose pre code .hljs-number{color:#fb923c}.prose :not(pre)>code{color:#e2e8f0!important;background-color:#334155!important;border-radius:.375rem!important;padding:.25rem .5rem!important;font-size:.875rem!important;font-weight:500!important}.prose code:before,.prose code:after{content:none!important}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false} \ No newline at end of file diff --git a/sln/src/Docs/wwwroot/css/prism-tomorrow.1.29.0.min.css b/sln/src/Docs/wwwroot/css/prism-tomorrow.1.29.0.min.css new file mode 100644 index 0000000..8fce550 --- /dev/null +++ b/sln/src/Docs/wwwroot/css/prism-tomorrow.1.29.0.min.css @@ -0,0 +1 @@ +code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green} \ No newline at end of file diff --git a/sln/src/Docs/wwwroot/fonts/OFL.txt b/sln/src/Docs/wwwroot/fonts/OFL.txt new file mode 100644 index 0000000..6843f31 --- /dev/null +++ b/sln/src/Docs/wwwroot/fonts/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/sln/src/Docs/wwwroot/fonts/noto-sans-latin-italic.woff2 b/sln/src/Docs/wwwroot/fonts/noto-sans-latin-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..30803393a2f6ab025caa82134def51076a646f16 GIT binary patch literal 39604 zcmV(^K-Ir@Pew8T0RR910GhM_6aWAK0UXEx0Gd1i0RR9100000000000000000000 z0000Qh!Y#gIvj>FKS)+VQiwo5O;$ltMh0L%Q&d4zfl4PX0D?R(eh~-?fsSzU0}F&e z05F1`1OYYzBm;BCI^XnTe}KTBb#DT$8()y+mZyif_Q7)g6Zbqr8fgC=ug4U zM%W$)QDKix_Wz%fRL0nTZQB7Ltqja4WtL?SG7VN!vGoq42phvem>yM_40aD@oXm!m z8H{2{f!4GgM0+|2s^!|s_dfFOK@1uL7eSAdBVA#05k(9b!p0TJ*PUqGOErR$$&@`@ z#9I|6p*GPOwP%+=%MDwHc*c4W-uQff!BITri4_^7lRmsF`906Ri}&1l-+`y8|Bw5I;iL zPGUQjEa+BKRSoge`3Ei5Hm3e8FY%W&X{4Hl7FwjGMN0>R!RAbzF#+ZH-g^9WS|3|YXCV+%df5D(0AVyZCG6T~5%_Wc-z z7SL!k(ul~CY>pG&>;Z6jO>tG8_KNCv#qWUV0p;E%OO(YV7Mp60eGepEV+hw6Ssp&t zet$8SX4aT(Y`TG57CHP1}7uJ_(c)PStmQ&JT_sl8VOX&Xr4# zi^@d_0!Ir6lA1jz;r5Q>y*QsxT7aZxwd6UZScMoKz~Bccec;YBdz1s{9Qu$;yC{t~ zIHH4nSppvB%UXVU35rV>ELDDsR1qWBIb6n1G1v3#9(z?AE=8!avi@N(gE3(`^%~P3 zu5-8lKSs;>i%jDp#RmCN2z1zNu0jgEcr7)xE>}u-Q8bE9k&(cd1B@Chn>+*mZH`xv zaPrp_Ari{Lxt6^h6gqll(Si8z6TOqJk#TOWbu{Q~q3M1qz6VgPIc z5FA3BRvo*n)&2A<`xl+UA+nV*AyD z&Z`#{9djmC5Nv|MW_9dUyK8mE{+A>M!mV zw;vpwoot+89_LracUIIpSF$@-n|mwx-o+RtvU^wZdpD-{&qohVtv*1?y`6_g#5lSh zo_g^^|0BH49&fHZ-Zq}Ze7ajaokUMJ!>6;>({u3Y6ZNxc{QMkx{&?~t7AewSZ0j$s zRWGgw4^kw{i^=K*Ue_1TJ$RYaVk>%iHF=d(auU5Bg|Elqn@p9v>$f{xeZjf}SZC4Y zz|}*%t*70~*~XRaeZuU(2Y?Q359p5orW<&dI)uTayIr;3bvJvP>po&+eLl##!(C~x zKBxQ^jeo9>uQ;5PP8{$P>tqj&IF0n^=c4FW3cac4`sB5z_fKE;hnL^Je|Gik_Sq}Xm(Q=B-@Y^6o$kKs&TH=;*t>u4!M&H>KYsAw z;j!`UhaWh5{_%|`Thr%1z4-Lnv+4Z8v+K{E`+U0Cc@d=-UR=63cX8q3+RL4n=U!2{ z^Xkg$&EoQ#X}MKicysx!GD$V5rq%Adw4T)0-aYG5Iq#0Y61}c5`6%00s+A8^90`!M<##?e+@{xpXM0|EKb{!odzsUkI&}= z?wv#zI4e6o6?Jq=C7!np8+7UbXH$tkIpQTCJTE>w16bM8v_h=_ybDs( zogMNd1r;FwHF7`-ll(>%ynh;@t(KhMm~nd9^m){n1m>M2kAwlDLEvhKcxwTiPY509 z3hd_^q+mSj1Pn9~`AXzaz=S{A%6pTrMRN#KH2Ki}!Mu<$R}5mhAh?5@J4WN|E=K2(0BifyL>BTC!84r+vX8DFP) zu1S>`Hsp^S32+muYX6sb*QBa=x{2q2kZNQBx4^v{?}?DL_XZI&6uWf9c-fI}z5z97 zDB`gw!C_TL7+iwUBAZTe(*v2&EOZJ_k_D^W59n_%v=8}fr(c=GQ8Y*cZ(MUg7FT+G z50bRQ1kYbu>3a~B3Gm1@3Gxlty`!^g0$x@`F%HWu$1 zK>H7_^n&3waP}y4+h(^7M~0eV`;a!o4E}@Tz#ljRb3ml;{Z+r+`}>97+7I+yy`X3G zsP5hEx`!R8>cZF!sqg7PUMwr%OhEn+cPbL z=>3A!Nmi`H;!qRMY2|2Kh}NACL{$_-QiSa28WzC|wUBx*TJgM}`>qFliQa$4`&{58 zhqM*D(n z_ce%X!U{8VJRquU@OYG|p}`WdC(`@^@-GQx4#J$dMl!1O#cE7jC{BDpX4_A{ty#TTGgX362NI+D9ja_J12@gNQQgb2vf?laKp1z%@gOKalpc(D zxepfWgpR@7WRH^`qg-6lpssjVB>@C65oD!ZnXFI3PPTtJivA?BtpJB)bVf&(N2-nD z5r+-R>CyqmtNaVy)=Hf!RKA2FZP4|Rc1}pnI0Ix8?;~9*$uv6?D?3Z5T>)8*$3QoS zB|nw4>mA@0FIUM~a+K_KV=EX_&4NH(cVzmn5uy6eXa_NMypIn>L(`|RI=|twfTa?J zUM8~kmFA;~1xr1O7EPbo^B2vGYk^JJOq)hyH5^~eH#wEpvOODeR~BSOMx}S!r9rBt z6t)uc@jRyDTC_()?23ZOh^X)myD$i~x!Cl7_@PIA!L2^vDsP_shaJtgs!2rL?iO0o zT+^7DZ>XYr8c#!56Y#-hU5$wX5hxgB{ykv~89sJHnc@F%x(5Xrw9f2xUkF1_?0`$Z?i11Km&=c5zLo zYf&Gn6`*O4G-PRX0GL`o7B)!u+`j=Txgd0LP*~(cJneO_e$EvFP>9;l)vY9B8=qU0 zY+02rcSkv9D~Xs57>aRdNRSL@5;6svf!qS!2~2_R;>RfPg;wTMnnJ3JQEdraUzbjCK%(LSuQ?i>Hl~<- z4~BZCY*lc}wWPbFH&Y%HVWgSyFzwr4J;VTbxZ#7?-$jxH117B5aT6uoc8%_PU>+i| z3o?P&f!tuCK1(^|%o82Jqa z4H?W4%h%Pl*6DnI1vcg$3&feTv1HHgeAc^p>cu6XbNNYeK-D36ju^i3!KHO%wyO0*1+tJa7K2UvM?I-AhO-gMNZv4!FJ7x>RMx1=x_pg~VXH{LDd zBu1xm-->BMo3tykZjL=CN|q~6bqUZYyVhpoj)xa3;p1_R$9z`Rm|y0ft?|1Ak5B)x zGzJ+OxU}#X;xlE=f+Z_9YzaAY<;`D!b%KQo6D~rr5~a$Nt5B&*wH*5a7sPB`h5)6V!yn+~12_4vPD=UsHob$xCaFlgLO6DCcWHscmZWdZ<< z4u^LWjj4;dVbLcn(j+lTW|p*y8hIKBT!;>Y4>5(9qq7KU*iB;tRJIrdScGuSZwe9D zkzXrt2PqzB6yAJL`0|7CCr|)PAZQ&-5DCGgg#;6HkT)QUBx?hfbc(jmN{Uq=RFYFQ zBYW+K9GsCujv{G5)qDoEI0e_L4b(*sO!pH=#zmK0UDtr@I*LAI{U`U?gVHCWn1ujkI2w{z94o7Zc6%}-%L1TF?WFCpW zI9ANNuLvx=nyHm)(*|wmiP2|+wN)#bAtbonugYT>$*H623v)ugf?Bz;KfW21Cg%8R zyA}X5!@F6VPdSu(fb1+Bx<{f||u+ThA!i-N^i3TV+ zuFAoJba7v}1bpD}L1Y-F;1=AGn3A1dc$%O>04UwHa5l>HOdD9>a1{nB6I&UQ000JA z_z3E~8wm73nDl+NLc1%w#fVRELkjQ(Pqwhh|9J8kI)M#Oj7wlqAOnQYXak%sv-GSX zVu&Gz7-D{vO91V5VjvrE_Xu`o0|roHMsWo7o&z-Qby`n~{_~5X@%Co_?^dhJ9XPMA zw+pcSPoe$<7@rTj1u#0_R%c*1e6G5FE>9r2Hzxt_4L2BE0MV#A0TQV)*bk$*gXbst zisuKsyI1wfm#0j{6?6V7zADBS{vM~*I z1wje!2i3Yvl@8@V6CTEm8t&F+-Y3gKulgIL%2L&Q+S5M|^~Dbs`Nd6Zy6OX(dvUk&{YRb3-L45P{Z=1*UQ_K&PVD$0KjN_Js~z zhVF6Ype^uQ21IRP90+DYnEi zC1l|g$#Lh5fSnRzUSNQSes?_tc!M?<0@1MAJt=7l3YrgNrepd7U?3)I!Hpn7J`FH( zn7w;Faj1!`VY`z3zwXx*vZM!=vZcZ@lZQ zy7jlV(ep&IKM=4aM}O!T+!%W)nj3oY1%C?Bk~CFf516$Ew_{YZbq*@z(I&&%VNN9t zr`uVPG3?q5Z!(rGz%v8z`lDd(5bS*cRDEF`0KjjC&zFyZ+0_@EfiqC4uC9R#F%$rp zLR1-BL>7RQ{nZ%s)xz_swfEM2YtQ_>_`cMB!^U@Q{NRD%L&d}P-#>D!?@Zxq&HgWb zYdHA!!?nX7`AKtZG=BBT_n%AmhyAPlZ@Uy4eBt2h|29=vHLRw=Um@llfzM&fVN@Gw zKia}jT{a=*rn;9|K2KLtE1Oiej||i4fAt-Sxd7moTODqmLCJ3YYr_%^7lzp8&djS8 z0`NT!sjqmni@`ln@Z$*Zd<4P?oQg(pcfTEAavQnY=?D3^fZ}TPU+OQPxbk%EwCTP> zdTEaX*Z~QwvJ$IsAmQH!hrR0dq+AF951gKx1R;Q*Q1L23dyqO6wn`DjpNJI$9P(iD zdL`{f2_|ld2U`w{GE^KI?21EtrQ%?Rs0V2gqSEnJZ6>AS0O@VnpHYPNi-m^6Q>-x2)M*t!R_~VrWhs_ z;42>XV?Pau;TRQL6WTk#>@j=F-o#~dIb9xCz?F72xJI(u+#HX&BDVjR1qPL^33`w7 z_vJ9a+;|F3+}Opt9Cs?^s{e^l{j+XVKhb@oF4acB|D}I$Yk#Gp0Kor$>&4YavkzwP z&z_&{neCqKm_0k&GJAA(->m+w7hcfeYuY7itwge8nPykpcqah1T5jKb4G`C(uhvRbSAm!u?v6(Wkbx0(ha!gM zuncV=)cUgdbc`wxz+^BD3v#uX%mj86$!<2bIUKz^F)%@MH1feT5f*Av5D@n$`aZh?zM!;Dj0 z*TfVR1DGMJWPQ#13Av`9lcnf(WB$>18!23EFD>Z2g*9NOHmFT(=@D1k+7wbs#(h|? z_2vDhc^D4!l0$#Or3)@*^V|ZyiBj*?n}sntx_TX%VE-VEw&ZNgkQpF3jxqb+v(8m* zU3e%mtoMq2$vT8Y_t+mC?#~qxjKQ^GgP)o%d0zi$)$%BgBFb)6B^AyS2}XdJ0bCauxE!gRpbXfszf66+^70w03_bf3N=~}VB_A=4N^KQA>-+$~ z9VZuECK9Ez&!;AThX8Sp!}EB?2J7)X&ZI+jEDutq!swK2jMXnN?8B=Ed;Z$5Oh)=^ z-*ILHY>6KAf?KfxSy6$0d8H`Hj~Iv zA^qksb#r$|5#C~Foj&4gI>DONRFjyr@=*Yh1jBS^*lNYagKeyUIT^1m%bjol`_H3q z7&0*D)0Tlm@Qf`~iCX-7%r{W9V@Wf*fXv5X_0*8LE58!=zX|1&f)gZiNCj)1e8#rT zL@p=OI0TL@JVV_LHTz#o%nlK12WN2(C)h`$;o-ZGM>s(coeniBDC7L;0LOFFnX}ui zqu5mbhWqiLNfc?WUx?~&jxrzE-U+M^i4}wwD5{b(PpR(=kub}H&7*7j6YS7spsgw+ z%oaT{SIx7@k71bhB|RSM9)bec^oxrTu6^()7n3C~i-q3L-99eJ;V5L%Ph)mmP@&P_ zbVy_r>r-!4F9m~XdR4UOx6|=%T{2hM1h0R_|6Q_MeCV{&5gk6v-6`oD!Xr<$zCNg# zvkNNpi>!Q%hNt+D`Tg;Kd}wLu({L8+x1|U=Rw>)0ekxki#`92FBirN@jzS(I;DKsT2h#9o6C? zaPWzCVr}ksbDa()2)!rxmR`OO(-|Vot25>e+Th%Ic~i zk<8N4XV>B{O;FMqLK*n7(J!Tk)fsKzDcqkG3g$TJm`Flujs?TN`<0kgvUnL_XU`>F z_k3p5FLNWm3fy_VuYH!nFxmrl2;2+M-$oWq&d{WpI9K@3h1xNhH`fd}!izUX|ChuN zFca@Cux;`46g5R4Rj`(+%iT&0_$e!`oE{Uf%QgdCD_-d7Q|K}hxV{&*V;gbzF}z@p zQBu&be6N;1nk44$exp#Z+1lJ2k%?#k>(LK~#2+Jys%!NoaXjtgoQfNpzDhHx{5mJK=lU8iykRK3}pt zl`pVax~#}@UqxM9Z%VeZPe=Ia6S;i zQ+WI0#URQliw3MOe~Se`>^5Lyxd#}-5$Zhcl*T#JPPU8iH}b zKfTVGID^8kgcKdTTR!f;)aw!Cfx+acVR0Qz0oZ6X#t{6+9~c#79pJIrNAEc~%OBf) zvd|`<=)|7m7qH;XadOwO{2g#J9N(!!lJAXphDV>*5vMO%Z9M7pr{WaX>vs2Z<2>9{ zC7&6gbXjC(efyTjWjNnuGw6LJx^Bsu;u!??>H3m5#OnyCd5-;_D!sPu;A^ux*XVhh z?`d=<7+}keg4Ro6$fkRB)NKOVWyQA)WqJ z9=>;J$-79Yhasn@fK15lsbM=y%qq|zIE?IhKTjlkl&jOu_w10>Wg)9XTbPBD5g$Fc zbVLfXrr1_~vq(qeuD8}#W znTk+E*bQO9k6y5~neekB#ROqM>!E91bX;rW07m;LTyVBUq;J`+^<+Y1x z!TMc3h^KqtIH_Yq|H+ImOP1$%4xFjeKTt4(!`4))VbJ;mmIt)&Q7(>R{c#<9fu zTx^b<-f8l7CsycEx!==1OR!-L=*Ch##q*x0gDDH;H8A@48(?x%sE?!ce*knR^I=m) z5py#dMbl4=VJ+LMQ~zg0FcbYJ*mCH1(ztYDZKG|RLHvPYm&;qJnh)&i>4vEt-$ZN_ zNSFIjfGB;>8t;AGK6!*|LE#Id-6szp%jb;tlIPOWOVXM2dpZNldeb3l=`xlG8us$c zGB{{nZ^#Kr>8)h0eBa5}RJhf90jveg_(>XjfQ28HEs?e~M$6Yv&wuhWnUI%m7v+_g z7lirykx@YAaBQkj5&Uty7hU{#MP{<}oxs=@9z8E@2iU(KdEWM0|JQr;P7>i@d}aN} zdGkpFvqSzXnNN0vlVZ%>u+IRNwTz<|->?40aDOnM|5yvAR^J%hH{%(jF>xAEZmdPA zz{!By4$tG6x$OyzS$RRfH2qKh&{}cHwn&)OpzQ`rrAQOLPfg{KDUhcY1qM=(R>3$G zq$6O8Wgxj%flWXfIo46M+ts8VbafJTIP5z9HJaTn+aYduc-lg%v&uvabLp?8|3G3% z&5CM}km7BRqH9C>hZOu>9;cu@|FNmvloob%O zVDynw<%s3?@}{GaZIf;ft!M)4cY3Pg`v_mYbpjnDaE@l2DciJ7{U~NI>kmGxM9;SP zr+Z@2G|f2OI>ARL({Gblp*W*85^7>{5qR$K8l-$VaN>c`mc*VrLv+tUEA=&!1JRW* z*{qO8rua{LSB%+v4qE+~0qduy%NX!zV1P^zDT^BF2;n!@yYF%Q`~LjHclEhIdQCe> zeHOU?!F!!2wQ4x8@kI*29g)wdC1-qnKVQ(>aA-XNUvJrZ6#?BEn2Os>-P}Bd^?z_T zV9*xx*6RrPuE3$V-JzSC4iU_ojazR5Zy0YZ(0|RvcCc&aV>f>DTkmtGI`o_AMVQvs z8l|0);!BRmjE4@LKdAA0vR%fK=^ z@C1^$XkLb!*W<9>>hV`C60vFHA za`T2Lq&NEmI4o#ZA7@Cy#~=gr>JQn~-~lzipuOxe~HDkwsS%HqYogrG!MiE#GTZB zZ&h;k_1LlTNw7TXdUx&deYa2UHWg%cR~T=X82(rH&TGiO!7jZ5ip7s&BL`fk=J_9V z1v*6>MM+wCzUDt~$XRkLfYK{k?&t3R@_>thx05G>wd|dIi5-}0Cfj#Tf}g0B_H`?5 zq@}_ka~;lZLGo(xh@}R{i&}kB)@OjE1y-%8&zdx6tXt2W8Z?;K z=x~eOkZ*P0+jwm}3+qMMUwhX8DQ9blOx$|BKjyO`MrK&Pb=KJfYj&<+=9sZk<7KyP ztOg%ZC3jmp+gz;zqbnge)6EIT(6HEdDP1EHRN~*j0mdDIK*?k&1WdwqC^cjPf05pz z+1#6S(v~YneEqBT;k**d!N16)r7m10h%ELIN zs=Yy%@~tgpmK8o(@cfufYc|kJ+ZM5-)X>k>6#;Jc4f1k{s-p(Sife`xo-o1Eaj+;)A2x@ zOOYT~_6jUSSB5Z2<6-#A#itgJV#nJ2CvZbpddyfVn=d00+G~iFBbA$N5M^j`6{#+T)PUXxEFJugPp_dK!Y`0q$ASt+m106Zyw_&48}{qS321pJXujb_1i#uOL4VzlhS`z>FBC`pXK!L>z5v?;i1MdE3MX$*E5u#~CBTH@~L z9B9>LDV^D+SxP%^fF0_doqOEnS73wv=}p>vV>;X?&qN$${$OxupjK{MWsxYnh>@k4 zPfr_LV75Y!{9_O4EZzAp7~d!C^+Ace{H861S;h6p^6uhFQxxuH?UrSrHjX1a;K}yu zuPb=emAnH||5(yLe1j?TO)BExd=}8xPgd@>`RkT8 zI=y0P#?63O$i3=Ol>W-a6my){-O*RA-$O$Dg@URNFHY61Jp|LZOI*I~H^p36Z4Cy5 zU!_)z(WwOBeO}@9LcB4EUwhkFd*~DQF;c%2QF%0$8fj$ALt2vc_NRWIx#w{P(=;KZ zc&%_v+xm6-l)xlIckT?!Zvr{8Z50x{tS!tM)%S-Axlm2&U3=9XrFM)_O<$lj6KIOM zvszTJ(SV7Hlx}-ZbpVHn@;8_;ae>m~jOZ%q#rtt(YiE~P-|7u&I*G^%Ne1$>ujz%l z6!uggfH<*qfDdYfb#7xzRm@RsUodTY!V}qRe$`I3&K?Wj8BZJ97cTj{U& zt5=59_l??P?C-0b5NfgiaeC*1SE$Y`#Zo!bs^pfxd1$LgFz9`v^sp2%+m$KERpeW} zMOHzUdLYBqNi0NKB(5A{?tpAc*ydK|Fjq|g?k?Z@J~jI#CHwwWPXb+PvTm}JAzHqp zeJQOW0VXwvOEZOcurRI-qU+jb7p?!&#wRO-PmoD;M!G_ z70F%PhBBw&Sg+ zuTiI{byDG~mEHZ$@0{RH%jV^8REzyT^vB!YcFzS(hUn{#0F`*W1%KU6PzXTzsCnDK zJCxYaJ;#TnW8i-BST1=I#6BW_67L)p1Ddp{<@_Js^X^{o&;k(N{iR2@kWnCx-089M z?M>aQ3lD$T0^X(?AgwYV404A|T@aR2n-vM)_F0lvbcBPq)Ek$KK%%*E74GtNe1DmM zWeFH1!=Fl0w2H<3B4{C%Ro@e{qRVmARmwz0}YhiRLt( zxU@DQPE$%I_hWkY(N``LB9x@oDggf{166~qg8I1wmMRLDlukvI^cpwr9hMrRMthpy z@6*1TQ7OLq+5IX;>uJqgD8OE7?1XTaP3iN#bn5EbnDUwO!AbGK`O;^1sbkx3*5oBGv5_NlnVP+)x*lpl zmJc&t(h`skyt-g(r60&EIbIWni2x;fCH@_PFM)qi8{mI7&ddN~R|L;%Y)X_hN{f!U zDM_fKSI0MVK74hQ07?3*t$SV4+Md3Dc)tjQO_wVA_Z>TT2F}vj5Sc;$X0w@5#-q^+ zPT=7dS))pxH6w%cvh`aa+{menaB9m~+u5{}w^%p}SrR*lEHEx^OYS~KWnNrVyS%f! zvF{dj{1REw%apK`mnvwwRE11bf?LYW{5Kx>=9^u~-erHqyqb4_p!rheg@)g(@uvDL z?hHt#^E^{-4E3XOT^L0nZUx7p)fjrm(1gy7H_vZem-|=cGT%61Jg>GY z6TX*cQP$Y3-@b3)mitt7#ycnMt%aIgP{`%;-9782MVbn8%Ski)*!If>2qmF0o^eWR z6B3|lGxWzHb?Bi0`OD?Z?7LSORNqo$nbnR9;9jaNPJc81P?oRPVlVQT|16QW>2H&p zjc8uwv9+>K38MF1FdDQ{+KDA=80D|jZhN9j30|SP6AqYy*@N=J>Z&R<fGdhuV>uT=k~&4X1r3z@^be3mj>y1JGp8cb=^CR( za>MpBXODlx?Ur!>!E#D-MC^u&uyIA@n%ip(dZ^;Y88uepwL?Pu_Z73dE^!u-Wldm~ z)OdAs?zig=K=q!nyrJ6q!Tl>2JfE|cQf)u@=w`rO;C?gZa_53sxA7tUoTMV3OEjiu zVyuSYXC>&1_i1()Mz(s8s1#73Ye&aMl@bGAR(&?k-?3@9MuSH?EQ{(=q z?pEpjkDhhod+6l2QS^-bzDF$J9Ww{r8WJ2~^&8zyqD}Gy!1}8AN1zOpo_HtYcveg3 zo`ywA4H=5C7wo((rgY@^Y%9zLY6gUG1}*Ux1!AMb{h00%>HRN1ODK5f0I6N%N4D^j zHQr+rO40RGt1_18uwG-YDTPmgc{8sB{y^Y<0roOAockcR0>5MDu00svkaM%@x?%uM z>p!IABeeWGi<2uD5x7DT)MG#8(e`os9HRySH0DD|<$6|sodnnAkDm#q+GGw_EBBBL zyA0*(wYZUlO7Gnz3GZU{?bDs$Qz{Q|8BjDA1`bs9} zc^=b67ykDlV>u5pZ=^-|D|m>SyV6y!yROXTyeD}0thw}NS6|)hzWbmX=l8DdhfRG| zFD#i}_}&f2SOKVzOnX}q&JEWJ#zeL%G;C@sT1KLKBXrQxVwm{}an^lwzL>KW+O_^Rh&7xzToA zaQy{2D8iZMJo*MH$n{hN+-pkUY7J&GtIamG%@T`Yv&nnHcjJH7_w>fE%(f|`ehT2D zj>kr>ippx=(V|aYDoP(!Y~l0v3wei^&wuZzsMU*xc(R2ZM;8XYwGX^^!2Qf(_`xZW zy;&uFR%d?6EP4B8tElDkSC?e3_rmTkZQ^N>sq{~y29m2YNd*|alfJ3{XdmtV*xqCM z9x!V9O35;(xD{bnG%o46C&#tXSNnAfbbg>&AdQYVZ;{Or1~@b}I%O$)KVDFz5>p@n zIR9RpTwK-nitWuU;o?#GzuXaX5#w8x`;RC)zFhmrV2{c8(vb=DMkE&dp{Iw zz2JOi=S>ZMuTKs?B9HC*`r4m8o|+sOq5zxQqGyk$e+_ZehI9Pr*p>CW7C}B)a&pPY z>j(i>qm#F!vvkX8K<)%AgeWLJ&{ppPp+zR znP57RCt!g*IH6}B+#l2ElE|NXA+vjEB}Z!4t2M^sOlY(Tp)xF2ZgbW z+93U5Ug4X|OTum?3~m<@gft2)NuLzv8!e*3IJL}3nr?IwDi;Y3G}jv+h9>631=(*^ z$%%1@WqDF9CSJynKdn73-`QY4^PpCm<||>1J#`WMNDY*Xrc%hSSP193&3->>Ju96f z7}&Pa<%1EsU-ZGBhEZu<^ulOlsUpTKd;PTK+5tGn@Q{ zxs5qr*B-%(T9^Fb`mGv~=S?Y0E81xW&F_}a+K+5(RpraBe^-o9vwCL43s?&z$M+S@ zUH38*f`V+qF!VSz<-=Z~;QGNWmlQIB%SU!GWR5r`|U->MoV7YEaYdZ|!vFTsA+Cwk835*4CyCcg)xcT$$ekG35=GCh3(&%}MrxBfR(+W>~IA>$-6 z4$fsUUt#mV5mNoPktKF;;Tr2pcKb!6^#hyZ*cVE_@c2LTIREf@`@!%v*Z#3j#Lg)X zk=SEzxVF!GUBt990ab4NNx*we%iTuJJ;L%uS-vPtTx4(qJ_w)8BVf!2*vz29O>#o{FlREhkQW&&^;13M^6$mlORq) zy>9oia%&5m6sFs`2@;YK<|?aKz%e_alU*Mc0;5Bfzfli{br(#%&z z#jkt4{)$lnc1Nwdi(Dgj)S!KH#m$X$fy@)Js#M1aA)8RH+5{~oP2apthSN>zQa(>{-Y<&Kk;QR-Z?mwvUu}6+7H!4(H1fq2+#d`in3l(^wxsN<$jCLe) z`m%tbDS>+`k`o-^t@ARoHK2UbJBRSj0pzdVU*}9=p5T#gUFO(*nCkderyct7J#%nk ze*hL>c4c#ppLy`8E*Ol*jHI$4^V+*2(S7_lsZFPQLd3sTh>`O;CN4TTs zAcJS#W#V@ZhI@B!0VRCkSQ*;Zhe_P?ivF}QW^GIEeu*L8bzmv=J3hKHjVA9oJE~B5 z4XrI>yuzlP+-j~OS87M{;Tkm0C5-hx^2K(_;g0jm>aXuisTcA5?e%Pr5fCE*j3MPIl;OobN^BAz6*b zq&H5X?;N$Ca;vt42?+AoX&K|uM~pW<1mZk-55~f2S^mmS&1(uq(;tFtqp#yO2 z*uIUV%(IPN9uSFJt_xgAm-|EeF}~TmW@uC7vHVCsU%=@-drSGNln*_n394oSz>jp} zP*DGJr^B^a^t9qXZd=^a*jBcbKWRw0(*;@}?N>s^9R^#v_9%m2uA1XD&lk~S@53arBF63c#s5SUNM{amg6#@7dFuH%ZUIBZdJhp~m*Rm$f z!FJvA3fKqsSUlAxRRI-q!_H>MisL~Pqu!7^Ha3pjHYAJo$C#&-+jzKIwG_jc2IH}$ z>*#rpqf+`LFT?80d)Y#mQBCCb+T@-vLr`zt}{a2Y5(F*D1t3p~M5QBk`$$<^50Bn=#duY}_IGkiJ%T5;&0Gc1R zah2Lq{|E2ivR7}3p%g!dWZEgxS!AS2sBYB7@!Ivp^^dI83t3p=NZg~KZGK2z)a2lC zbfd0p-^DzNA$||zv?|L}ICmC!f&dJx@NL4w)&YRE*rWxwg4=w%X1s})^?0f48C4vw z)aGuHkVWhA)0IdQz73xFPMphlfFuV_TVA{~}IN57U7W> zL-9K`GBC5UJkR8n=Gn^IVn5P<4_ii7qnNSocz&WkiJ$DA^iF1{*|UAK=kvIE$NbZR zE~T?b7USgm$Wv4!B~0n1yh%B?ouxiOqtG(63v?s-8U>cbz z=2GS-tWnlm>>B$bC(ZeU8|SX(zRhdkF?jFsZT!~-UBVecpYQ=ulW3Lb4KXTSAU-bs zLsFBhll&-6(f?{U%c!#J0i?C*MF`5+mJPM8WtJW7_KthZg|r0uHiGoIite} z8wq2Vaj|jCc(w6u)77RsOxsM)o8B@VGqWts7M?|8aamAH-qKTv^$}|^@qS`zV$JJz zz3%wyO81cWSd)LhzW4S0ma#Y3X?BU-WWUCNJBp6FW0_;U;|^z|Q{c2aVdrtz9`{T) z+Z}YTalh)`=lh2d@mtLT`o+he6mrVukwQUU&??1#u$;GJtGA?nWL%-bAL5_sHKU8Rer^ zG=#RIgXk6L-RQIEhv+kO5hG!0EQl4cCD>-{0qg~AANCsiXH=b=&brRc(PyL2M_-L% zQ7*bClA=uoppVu(08!9a1}LzY`Q3lMw?0^e038>^1z5dsF|2EdXzs3A9#LBw12Et% z{edG`x}u(wZ_443BHefGBMEMK#z<#!L`ww>e-W4@(=cjsfovm2-545zq5yo500a!L zoC!c7!hR4eADO%o|I2(xZi0etpqE7UDwY)zcC5IYFPotkvMYC z-Ny^%;Q-=@Cd|FWALP$62C_I=x8)PzslptLZUc>iHAD5-|;`wFB&Hh1-SK@e#d_luVM`V zb1Z^K@nL*au5T0ENTyKa*oM41v@v>&dQ2x;nbwU6Ln75%wwJS0C#wMsq0vPxO%@-ahSW`+ zL14JA!+raTc{(a-tw}>dOsUh0bEd;P_#Xa}%9oHw*$H5A=_q0Z6v8kr=4KF@7?*l= zXUn{CWy`Dlv>iHzK!C@PV^y!HgJ%ORG_tkvOsRA)pbj-xiX?)|2haaH0$RtDJ4gd`wP zrxrD|mE>k~GoNmmy9=OfPUe-HM8>9MWxIk32j<#-d+k!CV(#W!!-Ip`CN8r;1ok-S zDCDl22*9F66HwK0Y>gi96J3x{1)jSY@yj-Ow%ZUsT=KoG#R=+k9jq>Ykj9Jf$+P*k z$zc*sx_Dyf2J^7BY8ts@DYVfkiJMD!y7l&5Rl0q1WQ)akYkA1OJ|^Q@W?8RTkfm_x zD(`_gkcq0z>oKtZCxTKupr8l@m*O{sTgk^5&7CVE*m8k|`B95WS2Bg0wp;MFUlU?= zXwf{sN<&oQE}pSLD6U0*j&d>Od1YQbYsPtTHpBjwdc8IdH=3KcKetV$SkqXwqFU^p z1YW9^asnz;T#V6xDwxs~u@}!PIa4&^iSv2{-n5u$^wU}Z&aBr9Nf2n+IW&Q{(;^w> z&rsV)7idam&YpTt*Cuy9XoFAhg#!5>X?S>R{^g9=9HF$~8*UK3w4+>rSlQ&&$4te}<0GMOJsEI}5LekkBv z)ZGf6&t1p)Kv+k6qNB5`19azTYfbp=wtg0Ca(8J0A-D+ef$#Uo)CvyPLX#!!_bm&_ z3J4fa_#26TVee39+3;l$wx-MBrS~_@@m2Av-Ph03!C-E@_TRhb+uT{JznsPYiKjyV z7+Vl}@6F}zCFD-x45F*^U{!f}&^=$U-OGIUP5~JG@@}XZ?Zoym+IR?}`p&v{^tWjA zKZsco*!t(d=|pvq>P^Nl`Qd^^s|Q2ykOE6m=ZJOI@9T3(d-TSg-GdtlNO?I6 z7{Ta=x>gTC6|#Bm+-}jS-&KL>^u|l~qmSyjgA<&wVX|=7WRJ)#i3LMC#+D`hoV`wp zjtmVRIA%__(>=)rDLRCl?riOJ*mE23slEjMe0Ou1kNz3wC&uusJf3@6K77>JNX7%3x;!KQPh z9PIfWe@4zRn^z{)uZN2k5&SH-Rw#q#2%?`er zO6Y+|#U{@nlz2K27ZpnHcu`r^8+0X!kj#VMFa1|%^Dvhk8c72BwXlSY6M=GWndTI%$3c+2!zU*XS(H%BP0pzu5D+mj~CEJ>UNe)FIn+ z-j)KzCuDc|JP?r^HvaX~qfLjK4&C{M!T`YnwxwJy#U<6QB#|na7^X(U^(^KMYOIvC z*%yA^fy}D(?;=ghLvK7Q$6_&|y#YzR2A%2cziGGEoI75!r;r#~3bR7=2U0vEN*G1Q z-Mu{?4i#$6MKYb08b0IL3|YG_nD<#jsMsMV={FF{Z#zj}tlwjL9Im%XyM zrFj!Q?O|3>mW!s#0w>~z-_m;9ZZ?iNe6znR2Dcd;PSmac{#NEMU%;WhVnio|z!Drb zB`cv8Q`k5*KR#j1s~?(RaN_@oL3?|1W3$n2)D?J!FPxZqs5;1MQ30JXwABlijVyKY#!IkJD$*5`q+b+qrO}JyRTYaCCm$`CIio%er-=RvS0=DU8Do z>{J59Si1-oiNL|JalDLj?SP7Su8g;Jf!UedIUt#`FU{!ry$Nn^t+ z97{IY{&KUKr(scKtN`mmb=X-i+c68LUydi!QOxIWFGI;joTaWdsE2$IG4_YR*OaTa ziR=XC!C3?TE&&SfV`7?-&E^hK^iR?V(ZH+7HF@_i3&Y$c>*#S_E;;a zc9GkDQ+Qy|vo|At^iRhYFQ4rKv0V7V&kMgdCOn5v;j^yg$3UWGjVOyC&jbX0ZO))h zb9T&hBUzklm?!Z3?k342xHctySR4;(ms&$XS%fR4bVL!THj&KrJV_v8SR)1=yg*p{ zeyo`aXZsTz`K4%w6H;yrDp+r#pdVtcCTfPtWP6kc&YXrZas%cHzFY`Qa*FzVL`rY^ za7ad4PTM~vZm8;Qh#@E&DJ1R1JZy}$E@pyaf& zEg_XP9%iyQ%`?uLRO2>FmWw8FnZ~=5VT<8b>0G!$S|L5yByr@Nm^Vn>DthazmJGol ziv8kpA_!I!hbcjsYczP(hDqaWD>Ixn@{b+qeXVmKY|Kp^HLk4zJb_Q(lVd4)wav4I z_hz)QeKUspT-MvllaV4Y#o=g0E3>@fj*1K0-^7uS_9o&??L-Sc*w@3_zxS}pNOXEbR=Ahbq)l9ZW3)s6(y^Xb<8{5{TchPhsUVrNqS&ZHk{}`=? z3#ocfmj0i%fT0dzno#JvQvG~u2cx;eaS);2yyBKZFf`q#=$8j&Sknr*qR5bc{*w;{ zDbMSRof9`;(2UHljwlAKQ2&?!lVfdiRo`T<*D>A2bN#%_IX0U(L`0?J;H{?g=lv21N?tS_C z;uZO&qrcq1_d`fl8sw2Aedh`~suoAGPp;QR70Hb0?h|!0u$gv>9AhG4Z*}fJ-rJRg z0h=YYO{Fi=B{!rMC&ElQ8YY1gemKbOu;axv&-TmtYHd;jLUe*gbr&L_9$FAQd|!X&ANmV7Ai{7mnBi6F3LwB=SoA zEm0iRZMD#0>}}UFVaklWNEM*XSXoLi1gCpAGCaH7Q4#xHLnH4%RfR~C40$+~>r@dzMpNOs z;grj)mIhFZ^Mg|Rjo4BIg%kIpu%Z#5v}IckS^x&)XwV0}WC(Mj;x=Df#Ry9Sl-F5f ztYn@>0lLIE8#7`^iqhb*ei~;54o9TqlzBqepLnZLmRVUUJ#y!c)26qCt5h8?d6C;} zr_>;+CvUw!A9y;aw8^DHTSE(7M>C$1f|<;>JUP=bUCAt)Es2t~tlCMHGH1QgtE!y# z893a4-n6vVC`Q4%nfO2r1~8ylN{)Y$-W@#H#$U>N{&m=l{^F;8Dpw$c63snRa8B>A z0@y{2XJ9x#4uQH-*?-T*%>N^CJUR-U$>H&(c0WMW&Gda6z~3d2dEs1NNz@zZzi-w> zPqU(RoGVl6jYe0t9c0ti+qZ*reL>#Or=QO&Tda7K3r0T#wf5G|S@gmVbBODr2P(peJitc{*mx~^EQeWV^bH5J;3 zD+&&KVBsdc8OE2xFCXkGGBaLk(oOhr0Ec@P93NE~dFjg!eBs|CHR*R!m??ynQ} zg<_}|T@MB%=9g<~!ZywreZJp%WZfUVzH7$7|NmdVJAGvVcogX+CkV+AK13Jk+%hH+ za%<}cSsxcWIq=h!r;BQu2F`P~f$?)2>*5WKX$QL3$#y$S@W|7@kG6Q#HVkVVyUTmJHQ%Zqm8p-0aDsIw-4CKJ zaFS7qF@n*&`tu(;`L)~LLBq+e8``?b=%`GPhIB$GlT!tg5VDH~&3ZM>BjpgEetZKQ zPl`m@5}l-pZbOe$yiwJvWo@Vny{M*(BooaDVunA~ee|=ASI3*K1N3$2>&}F`bn~SK+sF*K`Ya$$>qK_Q z2QUUYn%ZpGPz@QD;wI;QpTCeZq9~REt-ro3^)$Dc7bQUmFHWcE<8i=&` z!Y`ft+?6+{tl0}T#G_w*^@<3B8w7-gz#K)0-|W6FGn7BCX=?{8A$Z8CLzOe-ApBI@ z2d{g*3#JRt0UiYX{vtHz_=5;V6!+Ay${`((V@ZSGeX<0Q6l~w{)lL<0%G=B}!(c#< z$D**DzR{UGnF=d4aL@vzo zqfBRqi@FkeA)Na-XXe)!8lq)&P0Z=XyL6yt!ju10#WfyUw4}q^wI5* z74#QVEp8M#fXXC)43*9BRQdeNu3HLx9n9cjl8Jeb6sk5I0@vd?(a@58g%8n0at z{yDX0I-F$j5Rj`T`s0tK4ossquJWeSDw4_6-w1;@XKM>GCYMYW(eFQPZtv|aCT7p>?Ksg`rgX^p8M$ZEN8odtX-N_Jk9?~1Ic*(n z0a)q$HWjL`;@fq9{80>Fe%Yy(sVY6q$q1Y<3en#Mu3Y_~;(|45`@iYirPkr{8j6+{k8Wmv|9zq&kH=xs|0@)ZC>2VzPHzZV*vb5%0%e!M(Z4*nYYA+$@dWo#vE%V->*Rb(-coUQ!gZRBR(sGhz${mBCuC5i zjoWkhs8{9=57wPx18_pwOJ@g^7Hh+(eAKB&7tlwU=Xmjq2B9Q+td3_*`+oDuw072` znUE6s(U}SOctE9+AyD}-U*z@Bj(HKK2mvoee=$+|t=h2<)rC{jjyskR!v0V?C?}mr zszZq06fm4mmJauz4N(@j+)9^sMWS(ew;S*I-dIA=>z7Al+|0g~j^I?&B_Josf!mfQ za!j4zr6Xc>&$?W#Rh+?%aD5}une+M!u(AI(>0)p2|DSy|o&=Sc+J?}I$sV=+Xlh^jc;R}}t%(`0$#(PE=y(A#e~yOD%V4-LBhjp`&pw`_1<{e=T31k#;V18#=<1FaHtfyuwPf z(1S#}B!j#C#$eX8p7lmN!_I2FO@=+F^Eg$m(=Ar9Sd$Hv*Mf*ADCe7YjOqM-3u6t{ z2y)kY6Ht_3Df(rj+lYPIN^r-vG)eR$kquZxU%0=bToZ@UofoImwd*Fuep+%J!Jxr_ z6ZaX6wJQ@D%@`m=1p9d;n(=fCTThDA5@kgx5U8whUp#Gi<~CJmzDCf`Gb+p;YxGTy z;Kk@k1t^yilv4z%Svpp`xN`(Cx3Q;e!3G^BnZ`sAYAdB|tXlP#+ORYn-YH4s63gaD zurl~`7?Ee(jRrL;bUQAlU0Lq2760ChneJr%I(s5ox*`(ndQ#f~3+!Mr_IgX=k7VO7la7u^r<#JA)``VpeUVo1sJ;cyioMZ$9 ziHaI$Olz)c_oBV}q(fm+p1`u!`wrtd#C<3HV!qHez{(x89?tlg>F5##_$nqm$@4am zg&5AhR}0qJErk@+5Fnw1(z2;Tc);bo^L-?-_dg~i_ZbnM>boe(3(toIV+m_#dk2PheRe|%=)+{0UWSNXIBo3$5RFWRRscp z87zA673hW9rm7Z%)^Koki>4~dSHJ%AKD$;HKj zx_mEwbESXl$=7>pO39C}s1vDFeh31uuIKi~_ju0Aa-50CZ&*2ti3&|-GnKwL(_5z5 zGG8v{)!pSLvYd>`NjIaCW*3q98v}lV{U56TlON~j_MdOP z;;&_|uz?d#cw|=Xd4F^S$Vj4bJd~TW5I7M2czC&pLXc8`4vbUq#sKh`16PCt&+okK z-9pv?flTrtDp%dp&fDoa(c z<${zNP$_LD2d2RJ?7wxHGOI=*jcqx$s_L5Xn)3a>7sLp>Wu$jQpvZXc^p{_+)RY7W zQYkxLr7Jgz#HQSZSmT8-VYbWr9h;%=mA>wm^AcL{=azq8sC zn{f=bTwoNG%!a4C@DM9Bs6NE&$u-yaTra-hFW>AQ>@1g!rwGb#k!_e32M?FBVA*k4 zk~pd?516P(N&C+ICznT_ICd1yu`d-sC<5{6oQQ^$a=IX>{-Lg4x5?-3ehKkyA0Nt> z>ht?*9UVE3XCV?LWc6Y>(u=|NbJlhzKD07D&iI*ugNiI_->>^$6C=_PWG9Mcl}?Av zA>EZkZSYM+Z?~aI=;L<2{T)Gqc4&7>w~lx!BZP7W^_GNed4#tR0mlWuTIYS+DdiDp zw33n5FQ{`KV}Vu+Jk!JGcBHs*eXGXDT=w&|Cc2Tk`EFO9Id>GLRTan}O%;*X#}?FN z#FHOy?{Z8(db~O!KB%?QLPyPdz#HRIP)X_oE#Tg2o(JwOTpd4(@5~nKv3|eeZ9lJT zi!6OK5Z59L$~4UstuSV)V#5t@%kWIydZtK}`)ZO?oua%_vquWzCz649BB&9|!e7f?$AflAxS zDx-mHD2f$Ck*Yd&+s|0lW2ImlzO0@O(`P-n3a`SePR0tG##n;bkT2QtB}19RAua|J z<6*QY@#Of#a98PGZMVTVS3|jom4dbHlEQ6tBZIa}TqIf(1NL6!P_{ERx~l83hBU01 z&tiXiz;}0c_E)R5Si4bD*SYo8sEXzhIzchtfCg$v1L=n&h25NoX#{1qd)?h`-C7oi0fl9pERUhc=>K2nOAB3VI&0t0Gx7*Y5m7#JS_y&v`B2J`p z*YY)8I}jAk@ydaCj5jmDHbMGuB{-%{S`q+VaG?vmjNKrmnD!J8Ik6e61pVZHW~7ra z<{OQz=AiR`bCxooqiB3^fTy=M?*{6NOSHCo6lQnN8k(iNl1~MHOT}xUyD~xX@f}Ct znV%8}5GO`Nnqbt((~5WW4|XNX^ZVLS5TR~l%xuVH2)ezyu&rt=Trm8r9#F&L+w(7p z?=I2w53V~xc*4Q6@Z9;fe98d?vCVlmR#THm)z;-A3}L0i590o6DCm}iW68X%#ua1S zk(%Sm?P7{bG9dfgZXa*>o@ZixvK*j$0+^&VnRTEy_j%=h1RI_17J?S-bStUCIiqNy z7mGTnL*{o0th2Sb+12u*D)~BaD)%a{Y5c2eWE=TBS%AkfxhKQZ&YUQd)0qz#uM|!hbAL6LW#d?Gl=0R9Hn~;$uAl^TN~>O zE)Q{rWf{vY+q~oTxc#u~1Zxi(0P10!o84dtg7YVoQUg?ls+PnM^}@zu=;(OwKz2_7 z3e;t4Gc{gbbUBmzdks@q>GR(^CRWi$V+_o zY+!s}t)snKPWyBYj}vz|0>=(aO!+-p5XZVZi-0VuhjD%!3KpPH&`iN9pWe_`wL2+E zr+2m4=|)=XL6aAFE0<}n4CwO#n8`sLB8Vh#H2CHR2p_#a@p7_=w)_|1%!S|n?Rx;Q z3-kNzgGGsc7MZrcwtE-?Mo^?_8vOD$#}==iUZUXxR~A}fgmb-0Cdp{CaaolmTKQs0 zi+6K~%C*H~-3GuEmA7z=I;4i<{Bbn{o_>~uOO#Xzo2TgViHLURiY~P+^N;rQ6udsu zK!j}J+!ay`jG(H*_-!e|mmLdcXj+n}(o`E36zIiZF1m>R;^Csf=L;0JY<5nc`h5em z^pI!$&OMyHJR>KN^T--KxV$G)*Vx$XxSB}Kb;(JPIJW*h8}j?Ls=R=0&Kl7Nzd*Ft zdV1xp;B~6{b4}TCMeyVq>&UIzWRj-K&t74!*_~5l2_?U10&Hzx_oX&4f?pgg#e47` zuS_9&@WuR#*KSg}OyWI^(-m>KtcX|bHo-=+k|RkLKOJ~pStVi3&Y%HQiri5CAkKPY zH|z+49O&3AIWHBS=p+Ue$%}1C@xOXlDO1|kEU{hQ%4Bla_rf@EpI4@77I{v1b^r8% zgL);E&f0NaJ%u58<;IQs&|EeS9RMguk!eDOaqsaOF3CSHT2J%a9N-gTd}oEDy8>5TPWK#58%qJ z(;p;pxSdRP+-dZ7B&`@z_AiV=WeK5m63RE_0)cAFcsw>_sWguhKMWnyc5vLr{(S^( zpP*Q5oU9rkP>h^Y>Uo?31`t;`*Nz=%nVP}0JR3=K_LgHj8lL8}#gtA=Ht!RF-usL6l;Qjzt9#`r}-ZN?+ApB1MI4f4K&{v|7-O-Pr9yUwPnTxlL0S9at76Bb2U< zR~u_=^7!zGXlo)kkOYhmMvuY~sSH;(E-Bak-+k7M$HmssQP^T)bGq)=LzKa~G6$H~ zPz_{5m2-LBuT%?-ncGjN>!Sp4`8j}`hI(F^6Rse}!!`TjsxCdgl(lz;sMr98Dh{IXZ_nOQdo)iX2UF<@E0Zn%MEuvMBR3oK80=lu|2L7p8w%L{V6$-&(Jy zo}wrm)DgjGV9TNJQyafEePC;7PHN19TksaVB}z`#=0Rbnx)-P#z`T_pxb1`V!o!K` zg=GuUR3GS_ahQ}p*5Pzfi&v|A&arloLl>U7jP6pHw1e^(_R0RJrRwd>O^<+{KY7UL( zEx$Hr(X#Dr%qXiET=uh}A@I7!zoz_4s2Lg%O??xR4*%@JE%f)FhMEs3=vWuEg8+Kk zca>aI`;dg>uB?UV!Sw~Rm(sGPDt;8YzRh8)Ha-l#E>>if_0_lD2CE#68BJ1hA*{`u zv*%k;1jF$t60i#;T!!4AZYvgn*6B8l#^ow@f{xDIzVqy!9{zTvV%0%6bcu0_modb- z<9Mq@6|=>brSqci60{@(Zj!_QU|IkzClY504CZQ>;RgopfEyT(haWN7HI90o> zUmF-faoA}>%jF^~N}!975#2`$TjogH_D1D^+i%5H8bDaULL}W(c4SH}jE*_o-cn%u z>Ab5m_8>+wBsq|QOI0r4vSs0}$8>xNvY)$lii%1Tz-RSHqA1j?QHb!v#+Fu3y1p?_ zXvt(7nwwJ|kWEoWB-84WJO>)0)LUW-ES;{Jv6E>6k0eT4%~p@*mSV2$U05Re`udIC zP2@Uzd$Sg>j;gE+S)YGZV+Js0ZYN$FPv!C#bh^||0m&TFSJqM~8HUF13EG7ptuJ0W z!=&Iq%T(~k+SxG431?_37UL*%$9d1CJjT;4gpKnYIhFasNFv$>+=KiT>-AR7S(=Wf zwfi7^tF=@f^r(z%nrc|EYBjhDle)p{N>nOA5GwV)L<%N}DfH>?p6+3V(D>@^fPJ@x z8;(Nc#Ip`@jb-TZVmw9DnU-w2Wn9|@%|};g6*=OWNtHl_evBmOX832ialPlJp$&H% zwKb2x2t{&8{>NuSmacOT-#fT0M>LLJoJzzZkywx?$?~-+U^<~_RomBA%;n-Xo>Gd3 zrg|ooz@SLM>oKtXuVz6f38!g)>RJR8smQg*2#xKVxstrHyyr&FV5$DyU_i4p)ot{^ z|Gn48Nus~=c-Hst{si7XyZ6;h3x?%4!G$$N3Pbt-O@AoM+_UexKNbJ~^Jzo=&l@{) zC*%UpuSQK$soH^8H*4lJdTbWE)oQWm6m#Mpx5IWm0kcNJ%Aze?oHPiIn;hy{$A#wATC7L6iq zwTQE7VFOPfQK;2gwa!)taq0#I8ci1J?(6G`nbe9>caP~tWG>QubCsMsXJm+BoyXH} ztaUF>Ir7T%m*)t6>Dq$Yv%P^ph+z2T0c1GuSTh7hU9;K zeDQ%SOI!aj>+=}5(ozp4hs`Poyv5Aht&j+K%h6~oCYdb*FD!&*CvZ}gt5vxsFDpfTfCUW&d zy~c=kL@!5yA}R^Whufop(AW)*3{uFy-*FG+cmK(*VWsrP zL$g=A3*dzqB1aXp_nzp|T zh0m}98nG4|LwnU}PDVJ4QHDdV=zA@RQa)JWfysrAjt`35$E|NHFN7rOE6^a^ngSRh zgxOeqP7oL@`tG53vEb5qZ=Ddcu>>polpo5&I0Dx`_9cQYLT->8V#Wakm0-Q*i~&Cp zt|wDBkQ6^R%mu@)g8=$5kfMvyga1D^QJKYq!KOw7jAHCSkYAhmLPj38lY^GNDPQs5 z(SjM(vrfJd5D@T^ymU?Xi+T^4qFS%hk9A+a{kCQ`b9>fb22oV>v9j`^mVqHjB7t!0_!n}QBe!NdY)Gd<~eWAQrJ1Y4IlsguUbZW9opG~wt@ z>o&&^Q_xg&%4|LDL*qUhxV+!yqZ_7aSr?#fId8gRnQgAWTuQ|%Kh{RhYvXC;Tc>v1 zC(>DWC!Azp_-CHyiIwa)%D%oUiQ*h&%x9|(V{kN%{b~As4?;z?k)$aq$6Ro_SwhO+ zml)RYRhlHbUPVEb?!G>)+2_=|o({_aP1OsQlfv$;uPfhw|376r?e@=kg20nPN0OFG zMZVv)DWrP#a&xS}J6}!3AsHMDT^E`<56K!%-190lEk4c?O*V?<@C$s=)}(2E?`zry z%}U^lL&RLdWb+Z)^Nvm5Ws%v|`Zs6gq@F{o-unNf@05eXT$!t z->gQ+@=R|(zv@B;rr~|E>p^D37X_R(;#7j6QGu);_$d^@R=U)N4U;7g+e@l5J7x}( z$scxYsRB)DT=c4pX9uP?gQDlwf}KSCSi5!i^_kxO=l>o_6!|Mo$1Z(dioGC zsRMwx{z~=WRbGPDO4j$?F~MLK6MQm0Tq?{?^58^=Ia^U36{Dgql|m3uR#MEuk(_b- zAjqY501F|fSCLACA?fxC$3Qeuo0(D_u;T^WmK#_1Uga}^%dJMJyN02d)xqe|{_K!s zN@ksn(snr@N^kp#S{QIy@EI6pxW8r_5*b?7Q_KvYz8~KHyOZ7s{Ev&jDF@zW>G(n# zlb9Zx?+jUB?`P~w2ftao^zA<;Xy2ORI}i=j7e5lblGm)qeGZNgcQmhAX7e83;;zYY zc1=ywGJF~T`03tAtP+;>NUK11f>k8r6P18=h*BBPe<#1jKiqZWVLvP`!%qqRRJzyE z*W0E%+Xf;9za%eA-|xsL;Bj~)KkmKvYOP@a!uHw2t&+b*!lx00PtUs<>-Lra;bSYU z5=r&w%_hM6_%^jxJv8CB@%nb4wVG)FoE2}}FY3@Ug%Mdz4NNh?Rd9i~O zqD-8ga_iV+4@N|?grU7ME;?#MIRpfa63Tf+yL>4XcJUxwiMxVn(lD;-fKjcz@foK8 z)yiCw!4RXJi~JE3Uex9tQ3)~d$Tt_rbCS>^zuuaL zrL-+yE>-l!g_m_)KXw z!`H*{xN$A7V74Z5LeDtevZE>CA+q(B&$x^uD_XL45~PunV6&(z6Do+7PjZA{(>Xq)sg+fMs{szih7i* zn=qb0pmAH4ekzB+a6E5deWDc?|0Ak(H(382v%wRjs4##?$88M7(QpD>8}}t`WjsKH zCB=W{s_cfN7zPzBQL5d>0h`YqM8cJm2Lfnq5!!+%YIbhi%d;*#F)iab*9MD zy|Rw|wmqcZ77!T9--uVn$JCNO4)tvoCI+WZYvXyhHrFu}7^v{pc9xr!0I3)cM!?0; zeLPg{2za`IOSn>kjZ-I5RjyJtkv=8>RP<%u3{2ob;5pKB*Z?jm%{k9ob4+ngFy@7F zCDE~@F8F^QLbS#>p+W(tEq^`8OCj)u+);UsHE>vO?J7&qO1ER1{&Xpf=i-Dn{_CDB zE88_mHCbsqR!L?&#B9#)$I1a&lzsCd;j{vVNkzD(hWhlhDUCe!Pa=X zsNGR4s(1CE)`o^|1boR!>Q@VReT^jEo9r)N56V{_-7$}VqZMfdCN%6bJ!^Nmaqr5& zB&2%>*zl{({rEru&n`LpZ{eS!(|B=u)20Uu&@EsK(tNxMOdLZ{@qB#f1lOQ4fxQ`A z!t3g%+EGNxr>(G8)SvnU{e|Q?Mh?~9!b`mp5M^O-d`wpzhD8b&Suf# z0=g=I4KTC7_*vWNS-$elFaD9`qBa8q7_&-V#&U2OWsLkVMdQA~2Gm3Bs}|RDkfzYo zJJZ}7w+la9CQ5LQ^hC6e+NNhr?L8Y}T~iZ1MFupMUJ#oXJoVbXUdD)Ib4vq27}6nR z=kfDoFltf+EDmi)!z%T^d`LzgTXk_=7VdAfaPgDv)9hmIN(n zN_G?v0ocT}Zl^%-WyknrPFC`z_%R@ttuW{9UpsbdA5fNT6fXts<)_%!>u3RJ#%643 zi?7YJ3iIv5B2C(T;{+VX>%%v8{`YSkuoU64o0w^g!#xrBLz1`ZDzs=^Nm>)9T;s-R zeK4x5F2kA71U@qBJeNRVW3*R|ktGe3a-uk?_pWtt7Qw1|R&+fVvp@~55)14IwqLLf zcXH?)+(rCb%nO>??Tcc}W`#t*-5k~1z}Zx5VZbZauJsyRkJsZhF8;!Cy~CI=i>yJZ zFj3={C^6tvIfYO&7$B5RYe&`;z=~mv;IoR!BveMhGf@p9%^@yE*FYN=P-b0(3FEa* zhH-{+A++*CwyD^yBWpOSmx>udSu9k`Celok;8LareKAwKZehcdtP75CSkOi{%=tY} zUTOIiOEHOp4gWE*DK?Bi1E(n8jK;R ze6~=Cpaq3A^Nk6vM=i45+OXiand&wg>fQ|=)%Lj6?3sP&dCT8p6yOXg(B1mtw9gQ_ z18M?5kaMKN;@53*)>V%L#YM1_DgXiq14FRwix17=3fv1Eu=+8DwIZw-P8cX7rr{08 zf;aJsd7oZ`Mc$)>JC>r=lPYkWptY)r)IKpfegQPo&R+WPm-deH-OrbxiwpuB+wr{EZL&XRw9JcS9z(0Nr@ znQQ`)G>%3~8?46#(VD{JB(R2NR@YHHQ$u&t98Kt~9i)d@freOeujFi_8%%Z%t0Z3v zwr$1P(uM(BRnV&Jye3g)ClNO?Rt94`6U33D2cx$~eSK?SJpA?SRCK2LC`H&5X>^r_ zj(F{;`g(v-1I!&3c*m`dE(FY^frg>w zWHA49r2-5OVb^5`(6xJizg+2>AE*p47xifBtGT*#2yB~(hjniZ$r=Kyun676E&ye< zfHm*mu`QDEBJIN-U-}*V?Tvoj%Rwn+Dz0ST2MY1yPYz~ziY=atKRgBXYfuHiLk+}E z0UQhg=>PUZFT3KR&!8Qz#4Ed_U+24;t_B+P@kV3h)58qn?s(|npPbi6l+BtYn=hkE z;2U9wQ3ioHz5-{?`e=7IT|}y52DFw~O;_KVjb3$=;)%7l^Ux--k)ek(lBX*Y&O*e1 z5&>Y#)}DK;=P{5mNX>y)co*ujs>eq<=?3i{agCAMR-n$3igoTuR~xyejIDBq(HE^2 zO`h-lfaLZKr??re9A-h#vh{6EJ6mm-P^?Pz5NHs-!I2EZ`=?GG_oDhzwP&b4$r6o% zd2626x~5Z|4yqt-7QhhGieg-$esjRqlSlx_do|1ebp8xZQqn#p4HNVX%^G$>a0*f9bL&(CRl^(q)yOsV~j1GXgppY%slZqmP_4iP;@+I+O06#$DEO7E6Z1Ty1HY5i+Yo=$js+5BEx~0uEuuq0^5sT6Xzk#p81~Fk#hgXJusL|vz}Z4 zgO@lpeQww;g>R_ZJrS@r>@;;F_U*SoO@?HeTLd`ZsY?DF@MOZPy$_-p7Cymv^<0~J zM?8${uj@<}(-rqu=!@O|j9Oad&DscmBuxar1P-eHOiBuA*|35}^iIPr)5obtTUZ@v zB27Wm@tchTB9n?IX*J zDRTcHjop8p*6yFB`*4sa;oL{4w*UHYy3)CET|<;U6#B`944HPPlHf*>*_-2F!A8 zFrWG^ig1{IdRjz1Oc9*B24XiqPCq~0eRI}X36@9E!eVR~=dOMR4C`b%v~l z3(u2^DkVupm5&T9WR9WDAsKgV_E|GGS%m%6qjBjLAQP<}LojR@BEs(Jc>wwc*zp^x zD9J$lQRR!Pl;{OS`jEI0S7#DAbJ2q8`OIk<7?Ku<*H#x;zGm}0U1#eK1u zFF-9D=D)tM9!X5T@#{Wsz5S$n&>ZcaFQT?B>NY-nSvD8De}JBG|23M@J9*2ojoh{^ zUTeMi-E1l!h;DnC{B3(_FnUPlz|HBV?i6D!1qboiE*R;NA6gFdp$5u^1P(!d|9P~{0bb|jzvsnKtc?0 ztW|am2W7q9n!4b8st%&_6#-%1@Tu^7^c_p)sG$%P^*|sD%|s5|wRzHw8-puxg^=aM zQQ!xzDbOV0%{^g^qk@b~CrICTKp=&>jYe^iYH!8B_|wZ*Q>kZGq`*6uKR`2W9AmF? zgq^$I+CR|OH@JK_XBn!^)C6NJ5KN^*4kaZwjLHzz_M8tup<)s+erqP1I~?9&mjimo zptG~J(-M<$nIG1e?3;VsXXnq&w(${xi%(@qQe{QpC4p=_pW5Toy)-<)h=(~DX%#0Zpy`mH@UfR254qwmOJ$h6Ko&0I&Au}g#_#-{)Eyd1d! zo@8yl!6Cy$dYx4%8^L-v4qRm%OEWPZH!+46?;w==erPDNjod3Gfef46VrxN;lei2t zBU`=BwY`RKdu2SdlgcY)KoC12FNFf`9dBdRQR~|@$DybI_ZFR|13G}xcGb6Sg;Q{0 zIx+h>?r|{BCF}0U>3H?X3z@t_sjSVnOEU(qJVdA<(U$`umq8b4m)=bK^RJd`RpxOQ`1=aHc-~(gfebZh#%tI(8}geo z`#Z@SbW4FFoFoTO)~x#e?H=I>yd#NuoKfJMORn14Sy(z`W~bPfY!Px$P(8j2(ttCZ z;+V#<0)|Wl8XnXVyfe>~imSkeES00mydlpjJ4#HOBUHzs!F_5DUNh2S<-l#Kgl?Z! z9-z_4lz!}qWaC$z@LdW9!+x}GV{1Twxj%66br7f%Xil{i&{fS#_cPLt)$rl4Ag5$& zHXnr4EMwNlq}VAwa9>iFY}53jOT(__d07|I+pR8(D)8Wi)^^uDCL)qnFtk`(;Pu9k zN4ceNig0b($gm5#Ec_^`vcM;DJ#cjED}w7at}B_VAzCGFMD?s@3h+eDnj|Rmz1LOG z_vDv{aD2G7b+805aP<2e#?>UuN^pG0QCaEBx*A4GGk~BRLR#L>RzyMD8g-r;AV5XIooywz>D3SQ~GXG z<-FUcm4;iWlr-Y2b~w&N9^;s_#3EYiz}I8S>cu|)s{%}J@7{4QL&z5kDZ!k$og~5Z ztkIo`m83O#K1j3e0=~bZHSYV4*Wd-uCq0DwaavGi33okLfzwMx(=GI>P`?{bnChmp&3ZMf0VlfvloE7< z94g?nv!LdfY2R?GUQkqp+uKvH_U)v&@AS|s{@7bB_K!BzyO>y+Y==Ty{5A1-O|l{1 zmhcnA{IbJh;W)1qnODg3qV&y}rDR-NxR5JXN^SWJXqD}&ixU6Pm*qLqQ64iguL{(c zuY{ZudW*-N&E@9`r%upAe6ICEir(~?jH~aUz(KY@d$Ce-yGOCOU8Vd1<@^=CqaUnx zRDq(FKquy6B-{bFHPb}_*XuUd7hUYe9t+tH% z$?OP@OpkP1q`m;T<{4B21jB(H4nTI1xkL56@FKHe`mbs8KI@C@vY4g;`i7o@=!3!} zBmoPE+RE^ezrWr9zzyr*Sl+HeUs-n-<^p$_sOY=p;GFix`dR;fo3;2qHVy`pyf7x% zOA3wlhlhy^^ql*r5iFIEy-r9vs{}LV4-x(DTUU$i8%rHCDvyb}yukanyGLDGW~h|U zvSvqmcl9MxbY-~>+)bqosvniXFL%#@2o;0IP((F@0f0&8R=Q|PB+}Wned6d#iFQ^< zccLgCb%*f2V`#uioMW?>%a;zvU01Klgv-TbqFv^AUYID>9FM1w$dzfa4}&TYTid>S zw}$fQQ6HbmwJUc$`c&sW_xT%#KP*zd)=geRPZiwL%3eQ_VY1`<++@6v(^Htos~T0i zF7m7OU1O+Lf;iAdExmUrM=dwP6);o^gEr%9Tii>(va>7JF3wDFnb&x*tBU^jKbvu7 zZ#$~JX?re24;&nL)QN-O>fe1*LV2-?z-nVUulhzUcRFz#>u=`Okrko~m>#z2VUxP8 z<+9*~yzBXqRJ)9#Wf^CaFq{Q=x)2#WSg>|9Sr7FHetTHEtQc+%+y*dxt7ITvtjVLU z-6~Aj=L@Gk5~c%D@>2E}=c^(zsj^Xyq^#N{>Q;Xr1#BK>T?qF~-Z84Tja5T`yN(0h zShSg$c3@%KkDiNwkZExaMp0r{n6WtMxXMF%C4#BJU3*++MPHtELtre`RbJt}{p5zh zR-Hn@jk=o6(?iTyyat8*HDYJMVExQoKY7g3jo|_GELyCrRER;H!2VC60Y5%DZ_Y!w zL;T$j#zeZf0N+9u9vJ5mSgITq9Y657iyECEEIdcSA5gpz+>)i@F$_zjvWX!<*n5{r zHz6=V2r@oLZ4Apmk^x3A+!GWRhYo-c@w9Mkh?>zW%|Sf{Iyb(R23#OT#@&2R>gZA? zak5c|J}~x>HcbvdfX<`$$koNp_vUY}61a)}AWZQ_PN!VCcThddq@f}jFtx&chN##x zR&^#z!I+g6!C5Pa!05g|1+2v$f^$t>=!wWUJ+CnVl6ey$H4R&4^%1jCq1U ziNQWphLE&WM&sBEa7_`xFiNK$+&0ZCU4Hu3b^9y@8UysB;xQ=Yhu{Ein1K>4M9cH5ofq>jT_%I|4LyURE=u4BmHS~;Q4RP)a4qR z4356K2snbTfnNAA$FA-4NR9_sa@iGMX3JN>C?1c4rUVrk*ja!@kD9-Tw>CF_=jF=s ziraqCf9j6QVqPA8?g=;6$gnDUG*@`d(0}jk z1C7Uz*T6aZYcRY%cHfDy$y6qrnVudt)rmkb9EpG!d`+;X#%yioxyw+=y9ba5n9e2J8;{C^qDZ1QJY%-CN*yD{qGO z0*K+*u{Ln;^Q1-+$w6u?_z%b?5vA>11Vl!*uY9u`SYAZCh!EZcUlXtew%-J-ffO4N z92f?eMZz;~doUfg)yHs+jatGN?(Z2CAd>^d>rVhrz_jw=sAg~WyP4UbD|gmO`qTwn zyr`;xKb~EN%$8xWg|qKj_zpxN9bkJB_o&*+mI+mk|^`)W$S=a8T z)51x{d!&G$3aF*rXe@{EQy5n6bAQ++M?WrCtL*~)`>kP2$)E$ZE)c14jSEzh;H)_4 zib>QS5&iQ8^Wv?uu6ZnLpGsK_U-Z2>Su8hLMY!J-jf;&8OgnFje>;EMpM0=%?DfS< z|8wKx`Sa(-gJK>2a2LZN_%}V^k5n^09wo_%=1hV4@hY_D+$L{1GyW`Q`aXX(Wmm7R zn8<8CiV2#JZ%d$jE%1j+QQd3y9agiNSGC(Yl?n+=U}7@dpXjh%dX!)#p4ypMn-N%| z3a}J7*52jD8NQ%_W6!o4Wtl~`)^Zac`Oa<6fwniC#F6j2VUdA8#+FXaVy1K^N!Bb& zOVFuvu&kr(&8cYcW=h_M!oi#-W;ChOl7#sc}@KykgSNy~nJc zMH`N?M0GwxBBSqgYgy_At9|Wd?t|uBoD0X3qA1q74byVHy>b8So$}N;#!D)yRrr-! z_gxRzuDCf;7iPJzGgjtr$8gZR#{9jrZ*S%YcjE1M zN1T4=k9NNwSkkD5hLJhVps3uRc}6Xc28MBKj)7y7%}RikG#=!5$m78NQBXWsT4Oj3 z$Qbe7m?I*V zCCHSap$XdAzC9`Z_lPFUccTSp{$r$>A2P&5Mappb;6lVy1}>`o(~;6C8km}CH?Xmg ztu*6jz-zYv0t7Jk0-yx+ZvaUE{I4HAyg}q&{fnm_!*;+B-G|PWr_06gTF;}Drwk=7%X!ajEq(t8Ts@fnf!BG_1Xv|fB& zm}mJh+*rug{UA!Nk^OGFgY%Mri;88ZCZ@DT;-H~Hs?>aH$Y?+@+yrx|in?*=)&@7jGhk@N2cyKX}AZ2LW zD|QYV3rI%#1(6sYG5+9?Vp1VxfMi09ap2r!DD{?wPkSP1YuvKzqU&29&h#`G7AeAv z@xB{F?lICD$E~942^F-&E1quXkg_2~g2OU0<~GYSy%ItanQ=~`UE09}^*qkxNxG~- zUj4Ab5Lj625&+jiD;-LNhYOzu3Jj4O`W@VWlN5wA)W#!IrN(s!{{&wk#9u;W5=LMs zacHU}Lfs~F!j_9hMEeDoMd%4Z(6N!uQ7M>8*nGJk2FJ`{MT2%Q-#s*uY>d)7su_(9 z6klFX8M5~iLi#EKH5C9{ z;7zeHVHHNHs!N|{f8)4RNJLei)MRD;1m~z};KYsY^dd6(Tix0HHQv4w@hu($B5L#~ zZ*^yyl>&dVdiGe;A=GrYMV7wlt`GKI>h13CXld$bZ##RSyu7%4SG7as)}~F0-fV3@ zedbJC*SVga&fyq#tEy_0BtJ9~4YmM|4wHuq3=fQyBz%y$GuWM30fLDE`Muy_TH27dm&M3VAb;CGGFqMz&5 zn?j!64xmTptnIgZV`$h$XHcwG=k#}>aU!5;t(v0vjs19*K?6HH9I%f8~5nPuKC5&U0ta9jvG*socGzq;F)rAMDtC*1l33 z@9QP1zD5n7K>q%?l{D)^Aze2~oK2T|Ri&L{`%9TZ3W^iV(Y+hc`TF&oE8Gq$uC6}3 z3i>kOA*SU2Rmy7UDHW|NKdFPKuhnZC?<**&jr{4W z(1w0WQuJPV{|E~I%X7!uz{BvDuy`!V`73)Te*^wtjDP62`Yf0|2GUlz4{}YO_d^zh z?*IuX&0!0oK*|mdT73YFX&81TFai6F2TVF1UI8NSR2otY*wPj(8_-*YLWxuib&@9& zbI}z(Or~iDY>qbclkU0%&(}LML#4Qm_ zg$%+)9q0~~>ZvoL*gR9AB@?XFsrBNP<#=_HKQo;%$d-8;su^h*q)S#es=>=)6l-Vg zT}q$+&7wcA;dSsQ8hI_%{7_l;qZm`g{dTX9b(`BeKt+jM66nex-o`8Zn+Fyr`~Y81 z5|=2~qoF62uO$Blsq4H@o;A)BKLh@d!+ufL)5&DMT+H9pwwF?yaU8u#e)FbYr60s7Rpz8k{%&QK76U420 z7OcCd0NP)~&73o!hT4})<>iAYOY)_?! z1CN^Pe{!V~%LY+^_?|3L4$#Nr>NbQW#BL85$O8#9!5;iTUm8+PAf68Qvf^NJyd}1;xBNyn zKMAW7_!N(b5khK7izoCS5hYudI5konX|&i!wt<_SbzJh)l?6uSgldL%JYvm{xLy5b zluAAWnHu5}Eua##ZKR?KQ?X2_(fULeyUIN~AmWK0;^w)NPrZX>Ue}XYq*`>fz9|Zc z(h?p#TRwCydsw{0VN!irl~#PEP5)xvp;9_L9RiFKfPbE$Lr2+p_eQIUPaEd(Xk2`0 zzmP#r?Ph%dxX@((1+lLVg65{xQ-X#jAwvoCwAW|3bK31;Q4I|!(t+}4VV4iH8Y3fa zLtrp0HOMjuu9fLprE=%AWy92(q56JEWOeK+D|F=_8JJ(D39B^7G6>WPTg;(1YP3-q z;kb?%j8a8TBFS=5Q4Fb0Gg+BMdGw*Ioy~soM?Ihf<`8G%%$tcG5U@NYOgU6_bV}2d zG{ah`4Fbp{8V`c?uyMbTECP63vpc>*o4aSD5McS8M#KxGgx2TXa65FXplYKCYb-cv zJG!G_O$lZ)#4@AAl~%EflgSCl9k_eh>Apjl}cZp0Z>MoGMo#a{3 z1#>V4X9$3Bu%6ki-0BmcW&q2T3~aawuE4cMPTqcXAfS~9M-ah5jSOqf# zY*8$n9lSg}_9;Fnh(FK)<#0qN2RNaYt%MlFlQZ%$BZ3 zn|Z<##|xS;-bnG}1D${`3`YE*;PHn^UH~+7uZmzP1vpQpZ0Vw|8^u6cM zPe8b}n36wPGCdR6^Bkc$($1ph=ouAPPKGfF(}l_vuKUM=CrjikQkHLY;kxwMKXlJn z$*R-ySd0;$o&{M1tvgbf2!@Cgk@N}0bK|}THM8WfV#v@NMSNW{L8c6=0XrgRmIk># zMPdrsQQ|@36>5%TOhE8!PBmg|ZHPUu!_FjqF<5iq!-os&NLkBV+|p?<_r688m~lQM zpWtJQbno%lA#q>XL8N44EX{O~ClC&qCptM#tVE*Z-okle7>JcAouT;HbO{qV49idE zsuI_i$Rd6csWBLvS}<(@Ungw{s2_j-G8}=gxfHDgP(ch}|E~ht_RC3$NB@FSTQGSf zOtM(y$Wx$5i82+cR#BtQkGUGhn(ZLOElR_gX~0kcZHoxEtYxS8m*S@Z=@y`taq)fB!)11PKU~gQ*Fujv?RW^V zBP392Z^)1W{!oQ?&ht<~gEM}z$Pz8i8Z)9@j99he+!SxrxM>q6P5CIn9s9;RC(&2- zxbLoel6>|>wG_!xrAw2cNv4gm^hK?II^^5rlg+l;Vw?Zj?t*583KS_eXWpgIpakg9 z>0#*Lsb?PP(yiBdgL?emkV=0=5=wzN>FV5_n28#Fa@Xz%i z2%*qM67r%TA-HoBzEf)?!Q=rZ(yVW9Z7wmvYrXvl~gCA(Q^}FO~hv4@znM@Z?W5Tvq#>)gCruK!(`xI&|--mzE_Ud z;m$peh~-?fr&Ki2MdHW z05E~~E&(8EC-1;8_wt@Qy3dp3u+qz5WS^h)`Rz zia6oYj6VNP&oi#@Ydhemb=)ezZjq0o!+Sy>>YkjpE6MhU10e1$(1v^94zNlpYLUn~ zBHfz3yM*LOAdL_pU_c0=w9twnv??Vaz50mtQMw>v!-gHPG*m1dkq1RYMMNwW6bp79 z8}B0!$k#npNskt?`we*7^$9xJ_!<7)^grh$ApsBO6)HNY*rZdrrjqrE=;sylt+QJy zR2Y>@>8N1!G!Sym@HCzO3T^SWNhQ*_T}*xJsE-9L;1AekWTx45?;*0Aw$t#Q?6GJit6A~hqypV zoES*9$QI!UMnINq8Sk@MZ%q$LTE5-qLlbh!F(-kgF+%3dIdJ-czYvwX z|D6jcv4Ii?9syU2-1J}4%q-ShQMDBiJOCI@c#_zTWyzB6<$-6--469iq7pi)&0;HK1j3nz{FuQ*O^P&AA6!uCIdA(LIe~Lv(9R= zr*8Eo_+f~WLQxov^c&J_^QsB){X$WzAPbk0!X@RgQ8*;p^7p2i?SJGx9(ZzC$?5By zJ{=z&_o7=L(b~ClQQ4i#B>)~lkUT9w(YH)@OPu6cLTLe!=P!tkF+V_(?~~$rzLE#x zIZ)O)#ZbC;)wnJ~7joOVZk!302NYl$^%#I;J0IwXXJ*S%%f=={JP~7DS^|U-#^LeY z^YPnDbXHcjA^(AN&c_%HqnJezvLY{QxisKgh5nH?oB2zq*z0AHD?$7i)ATg{7_(W! z>XlG}fQuDkM;{u9N%($qJO>@*piP~EDxxu5_J7j9fZ#R(x&Xccni~}q#nMEuBY;6Z z`U)@{RCq3g3Ws{Y!x<`s*5_;(tRO;cm)R{s-UH&Q&JEKHx)6P?h^P1>Po5GbDm2>a zyo;{Yn%<29cT)|gAM-C1Eb;uom%48JrhpNEet>S7i(ol~8ai0wikGB%$D7&W$SKgz zTJ@R=*2C16UT`e~+#yz1J92bwQ?qLwuzaVJ3I-cjUFqlnwRpQWPH;KchT~?R+n#yr zn@2Q%Juesf#~)uPczmYQ$FagQSHfmjPl}fZ&92NS*4~#-V|;g#ta!JW*o z-3uE1q6< zKB%v;ka5<*eF1sZW+B%Vw$Dcjk<9zPXaQ(s}QKH|0#Z zQqjM^?it3K6rGrJ2*ZD zs{at*cylNBPdxa%k?!_+qcVCT=L|P)RVkx=8A!F&e;BaI|aRKR-%_ZY?i^0u3*P+Ey%0I_|fggkCztg)mjmF#EHIA?J8R>kobJ`X>#*KGO?c*@};f1tH`Rz`8uO0k_0tf87$NJm$7x2h?P80GRc}roV`t&062TlAG#M3@CqAMc z28vGGE#QU$r-y?E@2u>PSRj`X_Ggh499!L_%&a#{2+*hsEPz3#&TD1>0x2A96GrM* zJRTVWq;jp6R}I0Q#55%ngyqt+6B=_KfUKarWU$}W>xPgLK+ln0ALZF^$q?WFbSFgZn$={mkG|}6<{FVM`LabtPie0=Ws

6xN2aupnfFxDXiRK^pXeAkgqB9}RMU^ZT}g!TZ7fwA}gqtW-%6O-sWObsxC2s(a?lO z!?0dZ$Dn%EamKT1(RMYc_KeF^tQ^HC^yzxbMN&zm6FWnkcp?$NA8_R}Qdpe5$JKbB@%%R zt}7pKv9qlmL}zOy!dzv^rY@{*!XqFdMm@*@ zwpRCaJ8W=Y6kZDR>LZ4nDGU zxeEhpm^OLsuo6n=(S&H&iWv)OrVCNhVA2@T74B@!^$2WHE@OA&PJ6rE4AisF0E%;M zOc3<#Rs<@olaAXV-A`_rRcy!DYQYynku?q}R1YWOS++ZL4(ic^mvK8h5n=0?E`|!! z90pzuBXj2YzKz4sHW8tnXZkS*lB>%pghs>};bAn2#uz)*^iz*>r2AUiG4`-c{V=6_ z-bKMqiwG?*z_{?o*ax^a64{G%1^V=wOZ4`VnX&BFuc{OEjLe8Uh+H9~Qx0E^lSX`= zX|KaKV(-RSxfM1&8w9GP!J(7`v)zpW22j$vV_*-gfjKZn^qEiv1dt+{*@OZ-*VcuqEVq+PgZ!{QvUrwg0x)^CqM9-;oSX)ENE40=p-%^{(G}pJEOi5CB zT(i7|on-@}62pK$oF%@oLW6x06@G@dGbS3f8`PMxUq(E&$%f0Z6--TwymxiQ9EMC( zM}K%qBOA<;ZMJG*?k?}^WE4@UxoY=;N*eU`d?ws0&MaSq(uKKDE<2xK^%GdYYQ^!E zDC0QebKGE^za(KNVsmZY47%~)%U)CIM@-J4+a$zw?M)A`X!=+z0$*0go{qQKV4ATU zvfLq#FhXVx7No6Uv_Gt^iSigOQdz(VKI7&TOTa4`ly*=@T@7Qbk*w2}COkKzSL(~` zat%(p{C$1%7$&18Cay)lGyu9}Z-gLCfEk{LnfMKcCIX!0+o0!IlNF5gk}Y7KTQJ3I znW2(F!S5Y#(iF>N_pj7zRkXMPbGRs4CJw{Z+$J-#L15{G40ZtvDH`neVm8RR!7BH( z9t%UeIt8GK4Yt@36nR&qo?Zk4^bs3KFm$lP@MQ3Y9oxM&67ti zfKGA${P6B_;|qB%BNw7Z?AMw_zmyyU5#de zk2I6lNg%_YPgL~c`Eye$Q4bx_00~2WY4ePBOt@~NyghvGqd8oQRiczTp`sJ9eAMIX z^WE^gzNdtti7P^PBTzoW-%;MxM0T`NE~@f{i#9#(G3V3dUTNToZi;J_u%r;hy zsusF5*sV^mnuDw%aPvosKInFCT=;?Dxe8bP96SHM89`ARNZi+2V$a0cun+v2d_o znY8Ip_hJW(@nBHc!ggSA=v0oJkX+EYVv|whiQx65@#foIN0~oH#p^4YU?FHi&4vpD zBpfbc5E;QKFshV3n_;#)BoVGG;QG284!wF_PIXJn6q z2!|Yn$Sd@YT+$AA1(bB4`G=A&G*@A+b>ya7IBwI_hwBceewyy$8o)G&=^=qfqj8J+ zp$ucrOEHGQNU@4NEG`NQo#6;4K`_TfxrFuGjgAF#? zWV7B_cW-jVKdyR|s+&n;Ur~;g;FQT_>DyIGkU|Co5Fnv)Zvq7m34L&vP}_JS480=s zWZWP)nQia<`pLr*fKJXxgJ{up zfeZ=cC}Cyy7(pZ`?5pHxl2bOEK9oPkND7CmAqFT^OMp#q2L@nJL0CW{4>JTQ+8*Hy z63_u204hG6K_=;^su7&ApOaiw<`YX`2`qsnFmGGz(=BeWI6?$Skg@V-4}(9q7@_?P zB@|q_=;EBPkbc0?{JD^^`LYKV6y`(H|Hklvf#S&Q%wz~XvM@Cd{EwcWUj&}Vb}4W> z5gdosND zjEQm5&*#_@;?r&deSz~+_Em%s$^5wfIJHW^_|wPz4^;17Z%7Kbl>k-mums5(a2#{A z(tu4)1_eM3!gFxigNjr^OCH-zxW0dO&U^B_&sDy`6fR*Ts2on3Pw0eMY~bh?d9__@ zLQnGG`8!`g5UlP>uUVJQ00hQCDX-PcX$gMye3La3EFPpk}!x?Z**PbDdRItkRbE~XhM!)>%DSUr=ls4kAr zVX%}byFC_bK6b3@FInfy0NukLDf#SaN{hYx{41KA`lqZzwNC5Z9$nG6v;*puf@~MY zUz@^OKmw~-vW=ECyt2V-yJ|PM`$^IV!JmIB);$*LeMVq^ zMvfh`4IDQZI&S89UE2M|ki*+h_eoIgCoxaTg731MXT-MCb%qBb#Tje#j9=U|MKel&DZVr}7vZD{4zUV^ZF635%ao_zm34U1#pR*4T z{x5eBnLG7VW-)+7pUsvQ%!lvzSLc68Krmy~LsHOMD8MFKG=g+h;3S|iN9eI~n-Cx9xYH~Lv-&AOI8ZAAU3S-Qvs&-uAXKP*ARJ0J%BLF#JLP0n zG1{Ap4=m0?2+$ui{34)PU^c0%{@h53@!>F7$b15++cr1SFxk4AS7mEfanYKU ztZmH-7OgC&@8D=uT6-vF%~CSmx&%EUvY0L0*mU~#xWChF@Zs8Fc)rut^UdnsTT@}8 z9`Qo!si8m8$|*Pec5x_Gh!EgM5=G*B+qTR!2rAs#tlOU0GeCem*=s8zO{>D}QWS9U(qL^@zuoWNP{`kLzg6pb zTHn_eqo4;Uh@tj zE;h}TFwWE$-UQ2ts(?-K(2?PRWFs>=vvEYffc@T!%LL%5)RHpWXxOy0ERgM5R#x;I zT9%i!9>|+klr6)4tt@*Ck0GrpN3$`lj-IHnj-WxaJyKg9&@4cgvjFtE9U$xo_>Ayr zr1+A=QDS)nUMvDk4`5Sbn2Z;RWbFJRo>yqjgu~JVD2LqeVgABGA>h6&B3dNEThFFc zT7;e#sE>t~*Ufd$#e=Cy`66!GmODUi=9*#sxMyyTD+_Fu#N72;&q3O(ud>5pJlz5Vz_N;pv^y`V!yv241uGj0@1AYoQYPTm6g16LeqY@k) zb<*mYG6a|;lo5`S=By~jQI?W_pNyLda*$6xH63{;F$B?91gHSXOSf6UdBH{O~~| z4i`V-1o^t)!cuahYRk1SxswydTQZlM;4XvAR}iDy%0h5H@-4Ao&sxk z{|x&2S0U>tdY)NBI<=pMu0$Pgl|4hvtl@Mz%!6^v719u+WJ$!lrHE zw|E;0lM$fjYGM<}Xl~OEyx{-1ohHHonpK`~JC=p3b?jdXxT}T^D{T60`EI9C<6?3| zcM{r$tvwg*uyoKOUIt{K)d_D3yf_tbd}JPPGhWQ2ROvSok2l`{wvCWSftO)ETl$2+(61?9S=UH zsjIBLYQ`D)^4t2Ery-8HukcF&7D8UWg?iCKR2FWf{2P;gzjVv7bl(_Si8_dYA>ya0xbfKU zdjE_;4tQ`RHO9o;Bv~uDhz%9<^#r=zO~JbI4{URQRG&NzQQRYP@!_Bge502}mFtU{ z)c&XgmW`fI^v-63lt93TZ-_9+jMGQz$;hTC#g@D@LxrJgw{=VrE|%lLcu zrbpD4A}urSw$;RUv?l4PHO{L?Q7hJ|Ml9mwtU_w6L*RAme(Cu%nt=$mFVIDUgM>V) zQL?lPlwaM|zHK$m0NSrhd@7dF_9IPtm3ExhJ}HA6Hrdf9%KTo4w%3`?$HSd}4Qs_c zOF@pFeY1`AYnlSEQ)?MBkJCr{=hMK}N8 zj#R(27^!3x>;MI2VhSexb(9czI?a>0`$!;>Kuoby!n?ey6*#s~+}Qh4;_8j&*6?jK@fHniB={p(_g{wM4&Wn;M$Tk4? zV`Q$k%Uv~i+T)%KNnJyyNk~Q6wsab&5qX5)lO&cyRrnIVgS_$pw7%#*%g)UrC=?sTlc~klI_5AM^tK_@Rpj)gvp^jqn#S- zr6L_lE8RYzZ)6T1M*nuZF?Z31m&9nP0Mi<|FIw`XFix2ATl^1YLX#*|yQ)ERk>Lgj z&7QLql&L$ z&v=XEb=O?qUus!yLApDwY%=*oSh|yA-JcQRSsd@)g&0G(>{jY0O9gtJJUCG=OYk)uo2ENAB2S81 zB>ab>*LV4u0uQZr-c%QkwW-}FXmau<68BBYKi;OM;uR1ow^wE#p({;XTfMHhs@qYe ze?Wg-U!7!ZdQ&xUGFaV?@=sqlI<)3p*(V+=+-E;W%jJGi zJJk+0$X~2-#}4UTfX0$85y5P{^+6Hjl%uJhF({FAP6z^2+=C+RAk)5aWPjP4%%LK=nod{ za|KI-`~6ZmW<&YdG_XF|Wb(YwUpj@;hd;S}+ZtRBv_D_*DqTkCtb$|vu>=}W78$-klhKaIi5bR@FvbKL~dsD zKk(3x%+=A}hyzox{=R+3jved$)F+!G)U~B71L`Ku8H0lb_SQ6On6rTb)RZ5Q-Qz8! zqKZk#H~!I=kgbfw9d*>0P-t9KEt+C%!Iyv{ZjKve;W)s` zSMv^&S4hh`PDDDley}LU@xj=-dg&XT=Q-WRv&pSl4_5VYeT$4=R{F5fp?w4E-Y??=k?`!Gg4kn{Rj@6A}(Qq6YjJI7% z9H+qCDK(3?RkK4YK2|1vD}g%{y3{6^(*_K~;kncpj+fm1aZq@ypYc`IxNh;OV9|*h z#zs6cV)^~q`}-XrP6)d40=&&&9L0sB-|qqhF~9#X6kp1lyK?!nb+s?NlozIR#)Z4q zH>Io)&Ek*r#rvcUgz}oC(e|w9(E|w`a84lXgi7L8LnteM#y=^eKz+&>5=h;Ui^$A$T-Yfh9?H$Chq8OFT9{7!=wp__*E@E88m5VCXWa;Jc4&#=?Xvi%d*9;1QTC0FUFXA1;Hyp_G2s4J zOlHJ|H!zI|@lcYNV!)>LbZL;Qwp zB&X|>@*)s_6&a5JZV)7{Bs z+^;ky9gqZf>pJ*T97JI<1xn&9OYirD{UMKu??I&}|2TQ+-G-C)UcFYxeaxlmnj?^6 zdZ5(kXqYIV7=SL?gFfk*AA%P>I&mwo-;ba0xzRmw z0KGJ^ed4jmnGe$R_Xt=yBK`*XT|Po%X=ZFtkji0UZdXx%Xd%$`h+;@`4PZcy|)jRf-lwk*u4bpQx&zt9Pfd549w9 z?SYL`9*NW@L$*V?ndrp+x7EATv5fw(=U{&evhwas_Kxv(%WXsBx4>PIDNVVc-}HBb zOe!~P5_3_?+OGL(&{0|da8n;^B|nbkzZp||lUZ%}_)TZ`JqMkM_g;bN^w!$oP8kb6 zagOq;&p?Wq5nFzlDtz(8Cl&>_)oP1t+g5%VfbTB({dUp3Kphn9t#WJ=xdPmNch)#L zh{e^3`ZdAplS^#*dvd-zM`DUC>5dKhgsHoEIX_rOsDtgf6WN1z&R+Ri@3Xue(bP@F z6(#4Y32SrgNu;`7 zjRlCVNrHFM!=+o}9jkS*16PHoDJ~V;t3E88>(*JxX;|TZgCRzDLVfG*Mry zHTyfC!E~-jVaj>C}^63o0S+~Kp-zaPpe&Eip zIUAxL{S-;-N;W(7n`PAesthIFHvsY ze;pj-CobQJt(%FsbbVfJZD{iY8Cy@rwoNA#Jf6N~dlZk~cgypU>mF*KdNkvOo3l8Q z>pohR{}}M@dCqXuP&zm7d1Tr{l!qy$kHdl9f27!P{X&^}PfUoiC2L=o89hZK8Jor@4{vPoBmJV45to^f(>VCzr zF*j{jx@sX{b2{5o#UZ#MSUpJnT&W3h zlznnfE)dax7B`-(p(Z&*>8ea@-yUaN)8#;2cn=QGBYC*~&Te8`5Ls&$tL~C5&HB83 zm2Pi0kT38lusBzhx{x&^7N0cOu!ioNm}M9-B{%1Wvr(y2prq#_55jeTydZ7icKLI1 z(awtO)XWbmiK?E-PT&lj_>=is%a`&LiVYQ{KZkoqN@Z^!;B&D~n|{!57_Q1k7YSX2 zyeB*vZ7_w#9q{U0*1E3Wjo~gIQH!%xt?sQLV5Vj;dN9GLoyo=|sj%3@35Z%ezu(AL z+~?wN101d)DSp3Zk=L6W()IM|;?{Bl5leJ8Td@e?ZC)&-5r^Yq)6(%ho63r>8}lnK zaN5u=-%_u1Ux9>an*E#{CIu~mMlriqSvSr@(h_+JYtLkm{Z6}E!AQHBvwvsd0d;DY zs(8KW2PWgkrk0Nw%nyOu1zP%)&&UrhXD>96U8-f{h!9xc$o#Mcu`F;Tr-46*$Sl43 z%EPBK-+%p1+JEGqtFJ^&WZ=P1G#}7y%N3TkXL7EnIfCZWlDT!+#6^+uV|vQflBME{ zeUwGjk8+%Gxw7VHK@Jq$az|^ssysM-pB%_`Un-XU;=B+uZ~CWorwj;bU~DJSwnn=&%wW zH4~%@#B|=Nc0VI%D(!OX{NgJVo@M?#lqADUjOlL_8>d(;x4k)&hl{gdo-6OV;~ozj zs4_1@jw9xfEX3oD>et-tx!DN)1b7sxZ?TtHlo;c~XY=@;QZ5JYci24^P71i$t6m(n zt!O^UskVG6tUP~<7vE3^$IO$5H#1Oj*%*RPOrb83V>2vuDPk|Q$uyM2JwEL zMd_PlU2VW8(Np!uyt}_-vtRwUMav5wu61JHSnrvOw(jAB*jrzW)>V5A*YFOF+}*lDU+tSG+Gyx0ieUT!F7M z!&76%y}ZMnV!ycaY2LL42+Q(pfZ;alhZe^FCxTZ!BVg{BNvUS$cNnzlSpnk#kmp!l>*+C+F7w$pq!BK56yUIjOgVZ4k-s#CxX=fW+wC3m-)!cEVaB`8ZkJ0uY9m1Y~+UZLO+9S8>> zD->Q|Py$~czn;QL#bnHE%d1~q5Kqe3QvU__VGhvk+Dkv_R!Z#Mo{~9Cj?hu2o2;?d z2{~(b^0c^osYIuQU(~CJu(4pTDb_F>ylU(sJFuG3C|}m43rPC{2I^g3ctj0t=h5zV z3*LR|GHf`g`BY=$Q*_#4xApL|0{UG$D|`<)R+ZYZx*Jhea%O}*`}~{rpVVw{A`mji zQOeFMWviIb)x;Ja+^eGv!T*ymTjYYcvzWAsz)(IIT}xmXgr=#Wju)- zyxT@Kp!Kf1yTSIc`iOqDi2d~rT^_?rK}K7+H!>Nle&QCm-gxTKom#Y4X}Y&16kxdI z!0RI`50ClRTDiu!_w{>Geh|N`1*OVr{PHdz&~oLIWnn=VqW<%v<^L#BA8Ou?DJ3JL(OrS;!71Yqma!2DgK_% z_2qM@&vR%$-8eS9b>mw;C(2^gu2;V9(U!wLr-^%)1SLYpfeeqtafe27`v-W>D{23RaIenN zuMgB88Z}M6t0D-a(eb1#W!*PE-T~_IPz&BfTB5~l9DiLQnrs7ENi3E1xijfRJdyUR zF_9?nkJ0)J1U+N59fqL8U=R-V44xTrZ>pPdPv&b3%O0N&_UMrp)snI{-<@7sP^=P;06eBo8@{N#TSWIIQzfq^OnMy-=0(L$JHK z0Nt{`7l(Y5LdE4c1TzW3gPhdB4$ zv;UycIN1S zo~8HLb-UU*ORg1sO|ByniwaM0O=_I9Ke}KhsA;+^p;lKKZ~DQR&c1)+ntfU_uh7gt z7B=x^eQryni|0bh90LsUT%_Hm9q<`5Ri)s3KpP~-!lR)Ettv!4ivU~SXB<=xgWQdgeX80;djv>Cm{*lkWl`?YM+bS>y%QN4CRR2dd=AxCp1#+pHNXf z2Jmol>SHrs9+Rg!%^!H?im!~7Z0m=e5#KVab1)dR^e?se`1gPC&FXI?@!CoM^sp=Z zVeS%@8547YW{4B?%1nu1xxf}p+zqVk_4YDwY7myhIzH zOaS%b5s5@)U(Ng{qM>Fl8qSVJ534X3#Gj4RCS4Od^4q$xN+9lTt7_wR!Tnk20;>Qf z2Q~jlRz%rn7e^SgzUbOS4ZU!08-C~Tu=n=eG2;qFFPb^>)HMjb1DE2U z?XxkY<%W3ZX|47tNc|_I`}P-&^K|-UD)n+%=3Bt9U0K%}qqb~Ja~dc+2emm9rfweT z;gG0n2d^rLy}b~PrA0$m5Gt`>k?O`9P8&+#Q2Px9fwVC~ke~kE&D1CI{b4h~jr}&U z+gZ#D&M3$qoIp2{(+x>${i6%zNjUfH(R^r7`Kp-BrkqhK&QSH0OI`&BZp1WIS$ml| zkap%^53~E4fLYUvFFN@9U1_Fyn*e_yKobkkT+qdL{qFw%0*<6Nlh2X+=d7YpsZksu zpNo9*=V)T14s5J05{md1H87Q{Ykls~#WAldmLtH^S1z{Kl~vl3;5TV3Wul^DNUW=_ zr%>-MlBF9L+GWT<#H^znY?sz=D|ASowjtx|0QvEd>B#)S6UW)^oE!EgLU9hZxZv@y zhfG)Ea*VQ+l>&N>W2e(cKkAhU>2@$K9+)0|`F{xSQ#Bm(yR#NtcblJJ zJdhd`r@?70_D2-P-UVT*Si5)m7XEr>>(zYWRjtf*;OJxV`(lr=Hp2EU3N^}DvU^lN zb%<+6FRN*(u|(%oqV0gJOe=j7Sprp)@(N!< zjyC8H*>C?tV0xDBrPOq)B(NWc6#~R9d|&XRLNp{}?kkfRj@977Xliy2w2pOM^Of4O zkfq4jmRY`%YtTJ0!n1qdYTK=Glg2d!*WzjNOd7<=z$Sk7o6!glCOqrzsBT07m+!oY zyXy4Z$A3gavYJ16nU4w~&ina4d&SFR(g3|3lF6=Kem2MTS44&1=Cph|im=7yH#4_4 z@D%cah8yl3>$S~m>Y66=l!bQ+hJWr2y&8;fjDHlGDK)W0doe(1)XFz-z=i<}*l=J2 zEn#Bx0R;~moRrpG;N`mA^4IN^xNZ*ZjvEegW#Wz{K>=_i##xOlVS}>7n*?n+SdOU< z1KHFY1nYL!`L>)|;aIuIb};F?dw34(E(qf_-OgepALMSZ4A~)aRiFXJmL0r1z{zpZ zadDWngXdJ@aSUXrT+;@Yb#Dq6>s@_W&R^)Z8!AKI^fo#SzETn=2xH~#P%i7K7HsUk$)Hq80x(-j_Ripht@^925e5tZYJ2uxU95N8hMcLL=oMQjN3%yO zqCE#fL(Ys&9D+56;*{_~BNjb+VrJb2p%5wK$biz0KHUEgv%6{q*u6($2Nl3&r?RZv z*Gh@8afrT^bX#i$KdZpxG8uhvH1m-~^y~{GYc4gFm(2|Fh%u+U3I%Qv2+`kKp-f zk*%}g?Ebg^lDT0Fbskg;{|$`tCNyP@Z)kHh_5xsMduyb1s{c^|u4S+}Hb^qiPc7U^ z0i_;E+v45|YXgEEK*w68hN6O9?CWqX!TPBLVG5<57$_?ahHJDkOXeSshHXm7Lo1$C zaVzZ0pev?FZ-`(Bo0|J1WAGFLfj~3G@^gU2fmu_dj>w$NWu*|YEI1?n%`>vq{Z4Y*772SMH#0&NUawX zQ17Fjp$*aQq@APB(_BTrzZGiTOIB|&0*q;y1+B$yFCBqEDAB9+K43W&0z9?>(R*F|SVe~OnF z>WgjSxVTTeQG85%Qv9j-ocLeKd4jjEPqvDR|FJUMUP@!F{Rk8_)&SK@_OZ+%Ey&2Dc@0PR8Cb$ z)u#GHeTVv#`fJSsOHa++nx{0cX#Rp!kPX@eeGC1kb!gMtG3|Eko!S?*AL#bzPU{!i zMCh04zk*+1zv}-pEVOku+-R6JR*d7uO~#vz4;kMyeqvf+A7 zkJ+!a@3%h!gBOd!aB@Is$a%pNh@sf8KXVm;VKAH*fN)*{I=}Oqdz8ui_SMU#Cf&`o zFwoGO&uhvrpL&7pc{x`kCoZQc0ZMHN0#};#=B(@ghyGP7tfvxME4v`TB`;kJOz46J zs>ffSvrYHk8vzH~O1j_b-}>n#CUT;tXyFQX-kqr^1 zy*>MN_NTpbsxgMs%j(Yjb(+$Z2g%p;(D~Qfp0Y85i22j3yYtsc>!Glla9G*X)^$I* zKldIFd!Z`nw3yfEz12I(cULM(v3ve@!obt>@2`BAt05AGKUKYW{&m(Fg5ZT0lOZgR z@Gw4r-;I9F#5k1KW3Klw%V<)GM*FRvKoFa7h?C|AMj)EGE-g+uu<_rHj7OzPH$NGMekv6RE7fxC znkHb139^a`oAC7_l+EjLg(N&Sacrh=5kyjk5Fqy%%7=TvP?~)>1l%=$Lt3b-vdtX< zAZ60=5>My3{Jf#-Z*qtvf%Wd#cj**fEqLzG6Sykc*6gU95&7ige&Q` zL<;d(o{_?hT>~*1laNn%63`F`2q625f9ggIf#0MmDj+A)L`9jWgIkn5vOJfS=(nWO zoS!x+em37CeQPxeCa1CS+;Ao6_FbbMFbMt*@p0p!l3%t2elc2{YO9;^n4521oVKwf zB=7cgP}0891&Lcqg6Hvtj$cIs#J1MTqz|yZ`tl?%*I%ntS`g`INNB_=QZX`pU%kM%)btTT&j!l zJ5YkM4XMC6!x^s&VCObRFsMQk#ySTvXAr(>Wckhh2+$lugu;x&6Q&SQ7`ic*rOJjF zm1$&^#MhvbABnL4tw_;|uKUPZkPw5N{~HJkUA$1~pbdf7Q!_!d&VX2Ns@8uY+l?2> zZe;kOq2Y)*AcD|pM)S`{Lu#-lEab;yUNoL-MG{Q8er7TR$x(usxG4r0VP)C^oPlZE z^s3)~+44q?8~1s?#|650Jk4RLK#|VIdPcJ(ltS6Z2K|E{I->p#@ZDPjA}jc%iyHrQ z4_IVfD6P)^jG1qd>hdP>zT{pc!s3z%Rw&2Je5aL{Upy=?$|u6L9DxI^j(WDi5xzMH zUaj6h_wORU_XbUWdkqxqhu;R1@uU3l9XftU;LOYu8 z9`fJ!9wn$XriA=ActaEHoKLWtH$O2H7$J->;p?t*z}P_@A%Hjm&7(Qs#fAO8>)H>1 zYTovm#Da6&9#~c>c!33N{2cLaFC3Q$+@PJVot%*yUM7gK-~&^h%E)XjmchGM10p$M z6p*zOrI&B?sZPBt?x)H&UAOnTdkBPgeI#Y_J$D@eO){6_UZRqSJ>nI+m z053q$znlCArym>(-@Pwi2PpCodTXD2SJZjqyZ>Id-vmqtKJ=g;GC#aAnj%Y@X+6>o z2Lcdnb;BOawc!h@(6h4h7_6fvY%Y!#N^QM9Z^h2tM^6u)-F?}+>mov*A4eSi@%~qU zo9Nf4m*uwHo2o{Q9zA*7nU~iI-MAH3HG4))+}-jldAcMEc|}+8vW6-(Zc*KKZe~Gu z!<)*6df1m4kC_lnEgZ0BaDz9yT`X@pl1;PH!7h3>Ydxp6x0 z{fpKnp^{ll5nu)C5-;M;TsQV5>M#y@Y`P zEGzer6zB#^fG~<7<57Y)G){61`G6RyU_rZv*y-};dZTA($AC&fm31_7l;a|zMzkbQ z7%DBg>3Lm?{lzlRb~%&rw7?`h7N`p&n;MC`3NH$UFbzp= zzn+3R>+G{-UPM@|%J5P!CfYUepLh?+%4~5W^iNmdT9TWjyC?OYw+3{Htx=o+KpZie z<|sH4kD%m4ej$i=D0nc#|LeAX-LM|GlpQ zvsaWqT)ukKmS*$U4b6!uQ>HxM^bcLD;>Z-3en|eJ8R};}-9PODDovwb)yS6xK72M= zJ^H_6s>-}-eq|t$TJx$Pj{C9=e&~fO;-Ll7Q1S4>#zZ@gs-spq!YVLuSzZ#)-8rwv z0O4zt;Z->CDe@sPRB~>1Z&=JX*%@t{+{;a~vI7!PL`unj5pfG%NPOM^H)>mDS+C|E$9Jh=yo_yEbH8%4}lQ5N4)^gP3?`V}ksb0Zf9U>X<< z@jv?GWpF)vQ7Ol-rz0%q0wh7v5PlGt5=0R}>~Kf-mmDYLd5#k`)3PlUaxCr4YLC8} z2Kohb4?`~mp=9cEMy`LmFa-Fm`gN5Gn$zhZS#A%tAW0%u@JB1F2;v%LVZ@Udm136F z{_gdsQFnKg<@eh7v?9fW%xTukF>iPHe1`)X8)AOFI(mLzJe z^9nE_hkPx1*MRnCJuYU2+9oq-`Wc@a#_=sfP#&ZP$%e_KIrX3a>6cg=z^$j=T{kk6 zToycsPvOtw6=eD%#FIygA9nfij0L0}j&q&yDEv8-mC4Oa?8pS(Wws9(h!n1)AYny- z3=*UioY7`$t#OmKz$(v#WEN<^P{`1>Xsmgx>b7eTcXo7)mQ7Ux>x?^Pe*jECS1ikr zCJGtDJ5sq0iqjfJZcfAtS(}kluDX6wX{8biZ`yON6k;OJL=igl3B~}<5MX7pGDZM) z*iB&sq-j^s_H($^!YN6p7zzzSp2G&JV$+kvog%cIE>A&klY*vy1fc}OJf9yQ8+6V+CAn@g` z%khDc6o~>BKc2HkkJoCMjK(nj70~=L5eJxIo_G7H*u;dv7%5^_7PD`=D7|FEa6Isz4N z??~vf>)XQfg6AS*GVD8!vqsI-mr0w%X&Vl4(|b@5HGBBU_#uAIB1&BAZV}7o^TCMS zt@_icX_&DcPfJt>sQ%}=OGVswo`*Nh)2HhOD|pZbfm5k>O4&PAGCVx4N>;6Gu3J_L z6_6Q4X`E24{taB7{8sAVO5m&sj!gS3xu6XjaKfm)rwLv>B0M+r-4kY>o9#KKUj#59 z;l6OfDq_ZBeW9zx4q?<8iV^W{$x?uFjy`ZVNu>O894GwPbpfI7)Z}qrcGejE$#3Vj z(3vpLftO3*;gd3PWYb7%;VzC!ns&;Lm>9c*8I34>;LtMRrFyUegj=nP&D&I$G0v1K z756qXzF6vL2S}x9JT;fNkCTBe;WP1V&r2|*TQH%);inlzm_urVR&S!iH_urKihK>p zY}c*C+kgG)=wN=`mn2PZeP|jbGFRgFr-cM);+nOC#!@N&2;@ttwYq;>mDeTdUr;!O zxq;fZZ{;4%)FR&=8&J@@)Ap>NfiUJCkdIHL0Dx7I#4RENKtdgVJ}vngzN3)cR^B_SSp>Q)l|M# zOh07fD(nXAqo* zcR*TLU{s>YhwM47?OES>1b?<4V+1 zO)pxq!WKjp8dyp*>XV!{oJ>}D!;RlEd_V9N*)%6(>MqKt7qobXZJi(W{<=&xm+j|X4qRFE~@z{ z&-mR!o?{$U6=K?H`-rVzzb#z9@aol22X##aYWi#)kndeW%f<5(#fBGq;Cl*%`ZI|= zP=;fO-s z^^1TIg-9f>Bjx#Ns3Hl13waMcq7NG<`0~}n^d2|J$IC&FTrf^M`B-3sf#nRuVHQcH zR{r)F?zsEpxOr$9M%i$5QfSm&Lmr{lCXeXuq)xhlV@6|YR9#t3K|!^6aivi38SbgqvHz$ zId1DX(=c-S{~p=*ck3x53ATt6O0kDmjb&Nfd*EH|H1=`pRQbLrE$ca13aL1WPACJ8 zci&sT^K7t==ibGk=MsTS}k`^ z2QedUOuXxdiho@ph$VEsmhNG2M2GaBEZtvp-lvGc{<9-Yv&s1;lcZA!)yNA@L_fI$dW*dT8HXy zKnZzy&t!l#(t6WL&}Ddk{eEk3BX3BP!@YM`hc-RIhixW_`U39j*wmxT6N9^&;_%2Q z-u1&;yL@zp#r0X0+|cX2K!`{ZUP02#*$AZ}DgrHA=173q<4&JtX492)?X_) z1%?AT!1dJ9UU#wVvc@joc)sfbC?a;HPE#uB0GdV+K1q{Aj5pr(T~nU!q_FCU(I}p& zz;JlV4GFwy=YsBf3A+gA$urGITQ37mLaNgSPw56H&@>{u|87}NcHdctllMHAA>UUQ zFcMhy|6cL;Z-`Fb11}Hr_{`_>@44Z(k77<(Y42~&UHWQ+LyV3DcmNN295V^j-^VQo z>)M}fKHPi&r+t~@#3%eS;_v=v9Ftu~(ip2hxHvbr2to(4bn?$ra;o?F()iwgwYOIP zaIm*`5PS>S`IaL`w)H-F!D#Hx-Kw_N%`fRfp$O-Fplt0{~U1{N|GWD!2vsU&1$ ztId{<8h@TvU15mBDWTZl2a9wUh(q)i-b+E5<`f9t!PYFw-~i3VxA}kq93`d{S$uCr z$o%%OHzQr*{V6=597~))2mF7p-EOrG8+`@-Z+y%2x}f~_6ZnBf9c)Qr&A%C@L6`aU z_v%~6$BG@|=0d#Z!=S@qDvG3ooX#03lDkgrN+!=`Y=jDg?Mq-VR>7`E>dPCl#>Sfm z+KAeA`(%M7`J4ICJvf78eyv*gH5?)nv|$i?NwxSmO^xt)4;z1aS2_8UjlWelWe~N% zGF^Pb(sp{swFuPPGYTEQuhQKfbzR(?GuqG6pG;acwe{uA|F=U`<>lDc#(Ro|Qn-Vjw> zx?)}B>QP{XMmTQ!?)L@*gEXV0(((eD?fV`#((_X6+Bk+^g+`XXL)@hUwpcvdNUFR0=gT0sp2c z`**$f(5XsF;=zox=+J6F8oY&D6Ym^&i3CJ(x~0?g@8|?R zKa63(0PtDqoW2j`(m?ED^q|AJAq1gFSvnRhQ-qS!UH-I1%VuY#*e1kj!^9xaj!;`x z^Y9Miuj6D`rYgJ?J!=mp?@OG^d}xlK##c?p3UDnt-kJr4GwW z98P&5$fC-~(uUOw4eU72F#Q|~@H$hIII!l9Mjt!M*?2=u;&E&Vqp44mN0!I%T?3g- zEff|-)

~5ap;cBUhCtBWQ;Xc1X5tYy!z-ubO+-%?4!EvLsRgOfVx!8i!mxZ7tZR zSVTdnA*d>rpVbq;$R8%DCEiWzVGy`VWL;{qb_h{POSLzI$4_5E+Z;;fobf)g(#fL1 zL#^}H9CoRQ-`UN8o5xNEZp8t2ekB>j4iUo2fg;I@qQkVA_#5nR8#c3tgL1s9*rus# z?4?8mEXX8Fw<0x7o-lu%B+34Q46Apf);Z%EJplX+sb$KAswpRRJ>B!lW z4eld^lgECxmLkPAGU_Jp^9fLO{+srF^r6kL<9#>5*MGKkWUGPayp0$)#QfvTRonJI zUN&{?5I?lC4_$s$(N(om=4sO3KzronTB}$bmQu@JxVZcW_}gaC>C_6Di1#%}p!wzO z5|Jd@dkUNrqA-O6`z(L#zRwRI4~@Kj_43u|*YA&7o8SHGC+nGbyZR@}OYc1xxbxoX z@9Vws1CEzh(8qGqZaZrCme#>wMCUTHj%-?2Wumoy z-`LV!(X@q3ZlpNR|87EQZvOHaNu@S7URF0X)Tz|h)ito|{s+RzDf0Fkx9mH2`P{y( zTlZCxDjSW6!DR5I687W*o~cU2Vlw3h<>n;=i+?uRTuz7GW-?ivFxV*kYwoAqY&Hi1 zBY2pIHuP{fI90}0<1JyJYq7}Uo}PJ;=p=5nVSOmr0lPo< zUM>fBzq^JLJ z#9S#26pUcw$puKlfCh)1FgR$K>g9T6k9jTX|yS0IIw!@6#;pwN1k`ksS(-p>7J?9^G2+tun?Qqfl{4I2>WggLy~low=yyIzV- zK~Tz?OsN#zIf2nzx3aR;rO8A*8TTQ&geV^^t`0j!-RHBvS!lGGgf!w;>s|=lyrYd} zD7eK5ElG-{uFK@fCc7Ec8#6a5h}~uup&Pnm70zW;Jffalm;)kYn&SqQ5!yTT9l#uj zbVlpf8-K2H?#=z2Xw^!b<4m`+MrVpfr0C(@-Y6Vi5gD#Ies>-|X7Qcw{CwX8UA(?G z=F0IS6-ocA)gfG=2J>%!R>@)$c?PkNT}FCI(6MYylC(yzOx#d3%j8dn1Clke(-=_T zw@B_gS#|~2?`z>Y3#wC_gn{SM19KIT^7I9w!tqq@@p4^ahJ#)^{CMN-O|nO@Z(e(P zqRfZWj|{k+-&Qlqvx6)X^g8RCFhZX=M>`FRUG&Jgr?<$4? z-PoN{Y%6A$&C9p@l_tz{McFm|UNCtCQ+Kejsbob}#q*ou=G}VPjmxslA5Crkk(?t= zioswQ3ZyAU%bm5Q54Zi4o4L@+yBrj`#C4$_YE%54L1AsnIg(jsQ>7}5 zS!pvb-G0`#Oj}RnqX5)ClA2QJl(H5fL}S@JNmCU$S8#3ZzFh9tE)|T#$tYMKxPF$e z=PLApw<^`!@_W2=bLEVYy#4%nHr!fAklVw(aE~_9UuOys|JH_P7zfjw(*m8yaN@-Pp8)*6)DJ7^_IrB=DS%;VsbL(oMYhTEe?`x zVPa5DQdh<=1w-zOuvt6mt;nLv4*Z8x>{M(TuiR@iaQBF8V`_BXxW;sQt@Gz6G>#%7 zZm2wu#P&i5$Xg)78Dn^wW>H1mwHq67kQzPpx!k46SS*=}crn}32IAxKGR_&_bUynV z(4BW4@iS#vkvKh&b`oO@Z*J&KlvimM0#H#P))8)*cv+b+xQ{cS4~QJGY2>i)!7EtN zWWi;rpK|YPeLvFZQYYaK?7Ty86)uh)ycu*uq1WRa!8X_uv+E{gkrY@a-rCxeYi4F0 z1GSLU8H|q)iQ2(X=f!iz6dwI6WXpor!6{`RcghmK@f0-3_QKceqUo2gwj9k@3&(GX5ZG*6l@7KhWs~mBx+l2DgR#^iY6S#lvpe-ht;7Xv2u-k{wiIu zBmC1eJILQ(3k54QTRwun^Z2Lc^ZDPw(k4`!Rn;{dr!Lp6S6;Or>-JQl_Ha8( zu!1{e#(@G9(dfsIwM1y4&n3;UPsQIG3d8ib4DGXCyZ(3|Jyc$l zL%v8f;sLKA-05mQ%+wBrnmJ7MXozE^n&hA)K_j}boPnj>$mb1^K%_{pG)-|*aV{ZEy_~#2 z5GAX?R?Wk*Qrk*gg~g2MG3X?e{nkhGehGW@bOX!DES!84lz5^P7^P`|g>pj(VM#R@ zZV?e7mIiS1jDx7+IORxoT_dYn;>#ciJcNIDl1`;wUyXTdqlhmQ0XPOnxyU9< zf?}gJ4Kx;d80i9seZ#*#Ejm33S!pinEDPdlx^~v@YnLdH%E3H8zr&xmAIOhJ<_24Ixscs%uP!-6FI`Q$we{@q@>_j;mEq-(f8*uZA!V1x+f{_zUf+RsW zlLvzi8})WuK689*zim@%%`W9r0}QWl6a3=zKmnV-91fai2SAJ?@VQi8Mp?nG35&j zX{mJE_eP4n>x$4O^)%y(t|^@bf#eNG^@YpKh zX-#sUabATLL#%3>dRp0Ggd+JT6Yez~@6xML9D9ax!2LLg6U0y!S#PU%sohzOA6 zlke?%7rCJYT6p!xAGfFuCG1oI8S#HgaA2uR5Glp#NL3PXTav^#G*hB1NLHU`>Am>u z?`0Up$x?NQuPKL59BBb)en4;%A$kok8NsDzBA)4UjEN2b2g?feSc%8gTD zo18Bc^5xcW`YXx#Uv{0k*_Wu}#NiVI^Y7M6y|-`QI=^T4!WuC%HJS|y0iVyKlNPJG zm1f(O3aO-6kwCyJ9 z_n8SUC~0lG{%KPJ*--5lm#3$v?R0fHCeYI}FfJ=Aaf+@j&+)%E3QA0knMN_DTM(iU z2Y#%!hbvwEbg$!)i^Gw}j-jtnr~VR$Cq%@9;TZYh*Y;ionUC8)g4wHJ)i{MD#SM~D z&YLlmkzenW&OWv-ln*QV{~f1)gY?E}?9SaJ5?ju|7=nWwX061)`jYZIJswY(2|bzq z)x3pkk4tuP9A^gzDvFuF+dAJCy8HaRLlF4$ee>d3C23@>|BM(eV`3hcIrKf-!h=qo zS}mt8fyzjK9#P07;%HeC9)ms!(kAOk>>3SwqOC2>o6Ba4TWYH26VX&67P78}h6ii_ zEgAIu94+Hl{a5uK|8MzeYW?q1pDjj&vvgggPa=R9gkc;bGvbr)y&IQKi3RyuJwMgo z-+BHl$~OiFd!FAD7rOd`W-vne*mf(xwiM;gtY3mnM-$rE&0Te7OD-S==gOEMv4-LZ zm8fB~?tcA38`GdM2sp3qUTfwd(}m3>h>e?3KH<(=Bt1X2 zqNv0zWRbDFB)HUBVm*CebR~du8Fo!qWBVXx04;o7U|jnxT^5A*l)0u><=UEe`+P8k zCEXS<$m=BIu{8*2QRPs_61@HSn~w>}!Mb~M^az~q{%Dr`aB>gXFoa`x4BtD`q>*7s znMm^L=W3m;)21{~BaJ7Mv2=OlV?e=(U~qtut?ebn#s;YGw2ETpQGWlD=Z^CRJKwbH zy#7gpwX_1{*`&%0M%8p(Qxj9 zOg9K#ipiP7}nnS;cPZ?Uxy2qXM!-eW+GuBt1JjnJbz2lT zp66(-6zGz40@~h+mU}&64jCFys6-bU94tInzkTwgic(M0WTQ605YMih+3Uk8a;Vqy z;m9-2rG)Ht|NSXHZZARPyt2D{UL`+1NWuuh;+t=L;7+<*#O5Xa?xX@X=m!qs0em|f zF87;wA24k8#Ir1PSe>76N@d%1Hw<)10qC~uE+C153G7=3ZHZPherMF$pueqRk{VL# z**Y`!Csk!E$VeTSosE=5T(-(Y5I9`xoVS<1I%CFW z(Eh%8I=LbV-7yR{d|sF3Cx6EA-cv z4kQ=gOEES#q$gG?AnoMg(7imAYet19#qQ-$p3bVMsuN?#TpVA;yN+j3mcgnNAUeXh zkIZ*9v-=DCgt@9vy>7QA`f%p{;Dk9`B%0YXRaS&zlgPNGZz%ZUM(_6_M5Vw@+=Msf zSZ6UB3%}+_?VQC;@ddst%-TgUa~g-;$hp8n;~vl`OPipbK)fAoRxHBsR4L{2JkPhv zCPn%nB?=#ONep62{%zO#vODj83%%^#v$7eEMkk%4**Ic6cZVCl6ERjC;C{H@W>nCi zG&kL-GGR-0!Rjn5>$)c!GFLOIa;3F`!UHa4&1j>*#wBcb69-5)Alj;5&ppRzdAO13K%0kk`|Z2$8a#>HHo70@j|PZ*-WJLCEV* z>cYHlE+NY0;5jy@oXWX*4iu=a`NCC>N!nnHw7l$wb6|R!cS3DQSakY5A){bym`XYv z$i1A8k`Y&c5N>k%k*^0JVu3UqpnIP_y1dd-Z&&);N*kz7x9 zcEH@$lk57HZD4TzW}V}4M8X{bg6NT3$@AjvIw;8x1;Z4X`OGo=4gZ3_mz?T@Q66y7 z@VagDB`#Y2|87FrwrqN>1*&JWHItZgEiv-#&KNU_dFH%=0;O3xPIDbLocsjPi3%}* zhB>QCIe%*wvD|5Hq9hN637X>w@-Zrr^h;*KTl&D@GXxqpd}##vuD?t4>SOg==UFJq z8pVa2<&Cs;a$I>sx)jPNE(x`Q<=Psh929#~8lE-dG?&*jnW#%^Y~kpC#Au_2Ajv2) zDuiTm(zmEibw`V2F0>~U83YAmT(Sy+!AKE><>H(|VW6~i0oQ(uZ5q{=2o+hl+|rJ= zaWR@k^f*1*dJ{=oMLm~Gp-|06h+~7XE6o4TX{9Yh*=hT(Va6UeXN|_u-;RP~Z3tF{ z@{@^luDFU-AiuM+1)5d?(;R@(EtZi&l@LenOat%GAVEd)KmbG#ad&4H=>?xWmRMUwjXo zE!P`h<&(-@h?KFazNaPhDY@_)Jcd7uG|H)q4JD0mG0=tDQI|#~XqeWDq%}YuCKyl* zTTiVGC_B34QCS3v?X}6;;XDgfy7W*SptOC3V@t}GMy;YAH8sZbj-#oQ2+dRg%^BXd z;|c-gcC<3^1cqWb%WX_CS;JfWGX@y{P6R2|s)*PISPz?d%i)`x>d*6!qw+sEOY- zO!Y2}L6ngU62=*8QS%HdW1zdmoDZtC`BT)T%QOenDhs7OJS0(L(h#NLtII*MK=vboMqGy7&*3X7#^3zWt;M# z@8M9c2yUcw0iJV-b|bWmoch`Tnb^&F6R6^~T$({xWsY%^+~YKsjk9w6q^w|}7_XSa zBd~nqZ3)$H!NeVZ`Q+5uQ?JHHy8hU>vFkplZA?|9(UCHvVF;t3&~8+(G3d&gF&pb;#_fv0c$%gGsl1@A9Pr5Ny3CU(nrBfX@VXelage;O z48ifaTDkF}*^W7KPxV)!&Ynac;C3)igjm@0;q&cGvWGw+03W&?`wUB-Oi8x%f)zVazsK9eVZ7myd%z>k|A$8SjKH?7~IO0E9R^ zcEa%hYq{$RYbX}Y#vyk=icbBM^`}@zJ}L?cg*n72YQ(XK6j z4Z?(CL@34}FQOPauUj%TgIGK{4!1+g)4(QcR}ys8C`r17^gJf7EW z1zpD_o#DndvnVDxV6ByCPcJ?)V5y?hg}5o3N}#r}OjZ8a5&+5;KrTw6EQ>YH4%7UN zE}|rW?;R3SFdm(Kt#9}uxi^DjlLQ8<-jK5g$s~oOIM$uhFu_)%)!)Cxy-233vv#-N zZKZgCOtDnd1K$xCY5udZN&=oTQxN#w^+{WlW=42WW7(Kzgb-ES0QP{lwsxmg|Jkw!jyW?g(U zzd&f%i=Wy`kV-j$h#H?B?Y6#h1N{-4)(HUvOgMvqFC|7AEcckSNo;H4<8ici>1zv8 z0R7ZPRdQL>bR3hY;4>Rs9{g${s{)P^vL=4bQ9QCdCvZCaHE+xE3Bv3U z2zPXN9R!bd`JX9^H>_UWT)XMYOMnq{K(L}ElSS?j!5JZIsOwQ-bvRsf=U`rniAiL; ziHI_o(i0gAwpO4tL$`w1)VRn9qCN}69P~g(iu1C+nMI~^m`vrEOYHE?hz?K+wTm&o zzv2o#`R8ey4(BKR-TyBX=W=!<)GE;vSH1@8;Q#nofI!#-ylY$^_)p*$ikIqW0JC2clIzh4pX@E;HEby%_Qo zP12J05>BC=5`8XspRaZ+*M=^Z*mS@7$&c`3l&m0LeZ3l6FJF@A=)k>TTsq!kUIKBX z)D2ojOFh{7&*YiQSFhW!e$$ng@CEDoOse#H4?v}jo{G5QD5h`?UXR~xp=jE_YyU_J z&RJ!P#sbdW%?&2V8-=4Q&HAChOI~xHJ~Rfa8j=Rv6!W@vQQU=`cl(#xZWdO)_;+lw zj>LcqghyWv^?cU2SH7T6CaOcci!&kR_ z5(bM>b7kRrZZemHtH)V(=ZPz_%1=^6a$q@&r=C0IIFmXj|&t=aM@*>|d;x z+14t_tygb7eCkN+aoW%D^i_IXOaKysQ09$jIBixqfH^Mwl~&;C46Qqm3`M*yW2 zte8BeT0*#y(tyI?661-2ifr4yW$3QYnEGDwydJ1G{d#v@L53PwFu23c{*KFqdkYkp z2rUn6+w4%&)D@Gmv}afr$5*&mva;0Boj~(g8!3u^^{y=2wzRrRC-b#67jzq%rug-) zh9vQ{6$6PE8~D9(;i{fkpb0s)mRmF4b}ewn(+{r#-7%P2rl}Yie<>ZbdOe%1CVRS< zw-u`godwmJez>&wii`Kg%Vn<@j7`Unn-@bIE>=LxSkglU6^t&fqeVwK%SUdv>{&<`y>TyCdpe?n(0cM6UDxfoD@wDCF7pHPyHzNR#qtecf$Vla;FTGq8PZ;U8{MP^l zz<;XhD;VB>nBKPg>C5&aeXo5xeP0|8D)ZdKNLx}5b<*_!UKk+*=KuWb@e2^Ye0_Q_ zAMVZk$`#sWTmPTN8x0Kg0-fhOXUdz{%vC z5)`t6HF!S#cb)|Dx8TkFN)F(i3LQ_$6npD}{SUj1eSN|HjS+V3f_>Kz|6{|IPhBDB zH`q0H^@33ru=xcuY=>!BmM|H`Nnr>`%P3V?3C=Q3wD8Ru-yyx4J%m#MG=ZeLy}Dl3~SQdLPO0cD1aVRy^~6~}Q)DSFZisx@V+xqQ7Rd91(=lwY^A%BsSI%%i!*<}UO+Xo#a zcn%s~Aze(GJ>+AHJr%j!9R4zG!SnFfVC5}4*RGq{v1iNL)h^z4pk5zH$YHZVxN@fYtQ?r^*86I1(5|m=|*_ z6)9Gi1-0Y6hST0OML=eWHmT~aez_G^S~auTPFu^wYBi9oT6}&b)LRxMmpQSm*W&g% zTuz5-?CRK)6rWdUM}O{-5gAnVun-3GCniKuwv!1}4rrwvo)#qYfrX`IydkVlSGFz* zl;OeI%|h5w*qw!mCBtdZ&gvOKF!KW7@P+OsjNKX;r6Q%3Q*q z@z2h0TZAb9q3pVYt~tGC1woW7N+&FUHkv9DsT}T_MQM>HPT6U;G^6GGP7Yuk0Ilcy zc$R+D|4^+%!-_ffRqE9D=XF%SnOQ{I&R1Z-?%FbuXBunIdhWqFmw^Con&GAxxoni3 zxC|?@(Q*!9FlaeWXFMKdx~YjADOm$wD5=mq?8>@a)u93f-Sw!O7Erk>)k@1(wVU@3 zX+P9J3-7A5tMN&55MUi;b(~UJ&|Xd2k;;#G7DDBC&RW;KLNXms#S2aRK}2K`OL2=-IBRTR))Gm^l%+`d}f2dn_I1%KulB zKWLw2w~A8TV(D!S3*t>FLf6H8U_MRjP+@r5l;ci&!C6a7uCai=nvo8NEY$%v}&>?jZTyw~Dle*#K?f3pVXy{6lOyai0O(rl@{7)Lg(p5F1h0g$YHd*KZ>nJlN0j9Iz8DALhsPF*HPQR!-tQZk7U zc|56CrWFOsqbK#^hpWQ(#q2@s`BTndzdF49e*G#P`&nXqeY7H^d}g!JYPlEO5N^Vo z@H2*DV#3WQ7Yy_Ceq|z;SyEv6VE4k18ja!PU2Zg=H{Rmr>i@X+M!eUS*(X+g{9PbKL2bq>UBI6g7N5GKcI0u_~Y|6Y-Lu^*X zjCxNUgXTHBZSmM}ZtaI@Hl9-D&ksKkTzrsik^8K%gUC%;h328v;b}9DCGD(}O-rwd zgSRh9!L4u&Tvf=;!qy?s%kzSGi1u0Wtx zm!#Hns@0-Q`%A_L5F4-VRR-;4KE&FahR>N_3&xX)w0By9h$M&*4(pP?`p!A-d5UeG zJy{2CG@BbTZ`&%bOqOc5`1t@7N$TyUf(Q6*?|INLhsB3tIYZB#QYa-l+A*FWc(k%Q z9NFDox!kD&v33TQB7q^{D%^)}sBxfj zoDqQ;Sd`X=joDs!oA;m3*3zWV#0khF`Ib&7H&K2@;q5oS)YK`{_DUPhBm*=|5QgIA zVNnj`oeRZ6XXdUlC)@C`-OgF-r*GaOVN{y_!X6~2_w@RMf9oeVPS=NgntrB3mUVx# z3DdKlYXcLq+k5l_T{)jY+8#4XAp;LT#Q1Piwe0^#e-_!{y|;enxd1rYZ%$?I{dIjk z0-nWZou4OQIS?vjS?yTs9*2i4$1A5Ij+nfWF)XUpWd$dsb-r#uNT(3vba9Wlk>0a^ z7R9u{!n=9Zd!BXVEUucSTUCZvLMY>h9~`o(+sj17&Kz=TD{GF@B#~}vyGc1f5js|6 zHl9lQBhPdArsr}Zd|r#NI@A~_sg=JufV4CUohAvTmXydu~c~|Xt4xO|L4U4mK zbiWD+liDeEwe9o7_fpE@u%Ipyv2r1Ko*JV~*4O}x?B&v>rBua-ZarTKdK?vrL^;OV zQHNws5b^Tj$0Q-81g2l!L>;KFUtE4|3RY0cyGBle$hQ49>4n7$47y*1TzL^E+gjHe z+`sktSIo%}PMN|jY4j%B_i>8;>Jqr)5$Ot}D$=P1W-1;rNXW^JN2q`o}vsNjBEGl+oWLgBS zw6Zq26ta>uqgHAdjxjs%7nZfq5vy|ynThlzY#W)<5J)Dyw(fH}sNsEtgP`Y8B{R~z z#45#br1nNBPGjx6#VFH#|MW5m%x#6eaSB~WpG8V_O#uA&)Am86<=8>5QWzg31zdkf)I zLa^I&&vgvtBX)ui)YUZFT?@rc@r1a7{O3aGN2>p83=G`=+kNH+K2 zL<<_Nl3JkJKGZrt-D?vA2#P35FiFtaAx2Hs%Aysh;S~nfCkW$D9TXkhr!g;%&w_*O zF%GS*E!GmtT55m?osPW-P;Yie46~2&dSmdcFu4e$YhvEW!%cC+e^oDc!@+Ut5(cH=~oIoiG*8i5Mg0*uxDqyDS>S}B2B2bOu&e>=hkAg-$ z6~;jpw}g{ zckkc-@VN=izq;N_jK}+QRc=?~X=pCCC(b|rV+4<#nmL6q0>=tXu~T7|*`T&(IXF3% zLx5<;vN=1!AfC-$9rWmS%dh#=C-+_96&xHAOihI%qkbBsN7O}u`wM@OV<4a)1sn0D z+FR8ul1I=)r`_og&K3+%h{N@ctIw$d8WgPkw!;cj(B8aIDt8WVK?V@Gnih5%Xr;*@ zMA8EiSNvnq6p!*FqHiltSGs!*&vXfq(;t`q3NAYNd@i2MZ>d`8aG3JX|2SYn1@yq` z@M|*u7=ERPZH}`Qpj)~o;81RA(4rEt)~f1#sRkJuX}ydw544-G*Kk(+s^=fL^dmbD zFvuV}4&GGv>VkS69^HDe7Fec|fLWMF0ct0O*37cpGHL{_#*LsBn= zCJq!e#Rx_RvBC2!8I;H%cBsgIfyPB*$#4R0xqKEI&K5tNeg$GVfk*Hm{GQF6i9IT> zqHUg7=9XQR8|1~G5AgN2o73LP)r~P;21DESL@`O6Nc^oSa7_guWs<1Y8fps3m5VZb zt!x;YtGlMNn|-a@TQ!rQ5RCrevQbr&NE9DrvpURrYFxpVGTId zShvQ<|9ctgBRT?~6+^IBfp9S)JA`otfjlR88shk>$WbXR{9Y6y#=wfP8 zK4Cc5KY7%4_B=V#-_V1UW4^#=RT5h-8_&*W@n9+kJfiza26hw68xJ7JqYGBIrLb?? zxHFM8oU8Z=?1WtfCk#Qkvz~UsGuz{YF;xWqFnf~;U&y`;QdG`s?R$%avn5e+c3#!x zw26C76`43wD)mN_;b8Ee5CtM^2}nsX{6iRUoCi>|}^d)EV;zkDyV0tc;q;&DO^eNN)kdE=Q9Zd04$jOfY<`?y9nY0;2(@f zK+homKm>Qt{wxmOTNu`H05-uUMqFG>cY|xt)?#l8gyLK}0XfEqCM2E2liijVte_O> zL}Tc(_$KKKdH==fDjV%Qc2R$@dG|f9TsqE_=opy1K!$tr>E7ss7Qa5y} zWQ%qtof(N_ZBg-z2U2ug3^ajpP!6$Qv|}V3MQnAD&_(&xquqSRHJ);p#toNku) znH5744lSUQ2eBGBtTaN%?RveEo(i%OID%KlArLIPMbrz%j2-#4F=ps9oH+%hY795P z4K|(B%276Lsvv}-zzMo#8xj*GQ{|}+Yg4)slo4gk7HJ?Q1|`~XJz`=fO(zXX8lT3H zZ1*j`+GQtd(AO3Ne8mhZGaP4Zlf2vOxOR+ecRD6Tk4x4iD#l-cIa>g?~pj=C*!u+b3?65o^;M7>~)I!-DKGJ<=r z!jjhH0k{iC^hM(6>81DX^|qs55*LwGaT~f7UMY3CaUDt`Pp>(G+B>ZrV0GG5x5i9} znOH2pqtIv?m$Ixt&`gFp$L79Zx-mne6zu$Ljgu=AEhQ5z6)F z@1Y6zhwUEdU2#wW<@cHkppglh(Sv-@XCiyb$m|{CRHBdZVHa#~;O25+JTsAYgyn#f zx*86nO(&-&l`c2qq0OX(wX%GHYf{LGCmFIebe+@JOMN*I2964G#Q#{AMw%CXuFDFy zzb@nXGRoiG1xh?Z{#*hh;HAOWy{jm>_#bPxk@_vE&qwU)y1gNqvoKVAjzYjZh- z4+ehIW*pt2+w|QcLw7G>@$gnW2KkNmrtjID*mi0|id+gSq|cv2AoAFq0BaW=z^ zcs+h{Q!zBu9|jyas*DyR==+uvm7>M-Xrpp}J_U}0Cu?6IpmafmQ#{?QnI|}Q&y`h7E08T^ ztOI{<`oz-2O#ncl27jD6*=)CniwPdHymR2qO!%Ba;e|BXL z5}*IQ`q!OXQUoENJ-b)?{?kpG*7N@y(ara7oBNv+LB1io4}{I(AyN+(pP(9y z&4a3>iV`j_dn(M;ab+CXt0b~5+|EY^%1;~MH634N7}2tA>|i=!S)^H)ljC-$anaYJ zZ0eh=m!=9AqP~);#EXg_KI;Ji!Af!ytTm}?FIKO`yR4@#qF>M2j9>WGjHx-MHcu!N z2*e7t2GYp+0v?B1gDygb&B$UL+kyV_)CPVv6inCIp`1$t*`23~~c8KBFUfU)Sd+&2(*JydBP8$@`#gmRNpGwAo9keL#ZT| zxj;wxXYXfUuPQTH2>Mszmo=0{9WrcJL4<1qjE}->1n&{pxt*r0?)1ci689-q7*&x@3~aaclR`L&jvH z+#ZBs+VW_SCYUpt8)xJFfz?48N`amK7?j%YUA5}az}OPg{RBS8{;%i#6WfU=R|R9E6m;@` zoHD`JWX6A0uvY_m?e{cb-NUQqFZflWs>|;*93KVX{r=uN0PyJn9rg=u){`CH3Xos` z5C}`vPXYX^2s>c(4sW*8Y!*$z>+q2K!<`CzqY?L9jz+rR*3H5ypJD4I_b^35GdgLA zk&7KlgP}6yNP6457el5CR)A>^z!J`#-c*TjB*D(_XRfmth;=I!COVnmn(ODdLY5Q}uH8|HiT zIvn^N6I7iLP+sgU=f~w~9%NGvoC6Mk6rFrxz@m^%7i1~&P#_SHuWT+PlJcTaU6-Us zWo#f5*fa(NQWW+&^(F^}f>UDTEeR3G1M;P(X$B;RyS>P+3D@ohrx)G+tkkqP;&30-BB4C_E65XW?>cU@Y0jhS1}S z^MNdZa54u*CF9`iQjDON1PaagfJzj-t->xg3x5eO$UKS}zP8LyYsK^r8 z29hGuOWl^N*hWOla}gbi`)zaPBSZ)v&ejU0VitslSJqcgssib2DY<=FgYHTxytug>KBG(w)b`JyFa@(o7~(`bfEplj@q2 zM|jQ%=4g9;`G2Ioqh-h324{%)Wk+Y-z-9VT3aND5J+ zT{b8d#XD=FB*{U*p4~6oWYlu2{iN)0$ljnpT~MLY`cOhNSQT`r)#XKyu+w2beD_nc zqi(qFm=vkjN^?`X9=-0kW%@DsUWR-5fgP7=%sLMYx-ZK|pRMT5v*pT{r$CcJf0;XB zecC^-3oP`(B1ZjLgUMoZ(h-Zx%R|0EC=yGgGA+5bjzU*Y-@wqw*uG}T*hvu~+f`o<$n@$^B*9Kl47J()wS&_9BdNUAZ!)LwBb3IRu?eGd9T6Uhrck4O^ z@+@4kv+nuQY3>GsG!bsL?R_my6D^;2csaO5`WaMgNQkREan7YzUa0Jc~UqyPW_ literal 0 HcmV?d00001 diff --git a/sln/src/Docs/wwwroot/fonts/noto-sans-mono-latin.woff2 b/sln/src/Docs/wwwroot/fonts/noto-sans-mono-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..dbf1319aa29a2c0f909fafdac0fb5d314afd6b1f GIT binary patch literal 32072 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 ize=Object.create;var Ox=Object.defineProperty;var aze=Object.getOwnPropertyDescriptor;var sze=Object.getOwnPropertyNames;var oze=Object.getPrototypeOf,lze=Object.prototype.hasOwnProperty;var o=(e,t)=>Ox(e,"name",{value:t,configurable:!0});var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var Io=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ir=(e,t)=>{for(var r in t)Ox(e,r,{get:t[r],enumerable:!0})},BX=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of sze(t))!lze.call(e,i)&&i!==r&&Ox(e,i,{get:()=>t[i],enumerable:!(n=aze(t,i))||n.enumerable});return e};var Xs=(e,t,r)=>(r=e!=null?ize(oze(e)):{},BX(t||!e||!e.__esModule?Ox(r,"default",{value:e,enumerable:!0}):r,e)),cze=e=>BX(Ox({},"__esModule",{value:!0}),e);var uze,z0,ID,$X,gk=F(()=>{"use strict";uze=Object.freeze({left:0,top:0,width:16,height:16}),z0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),ID=Object.freeze({...uze,...z0}),$X=Object.freeze({...ID,body:"",hidden:!1})});var hze,FX,zX=F(()=>{"use strict";gk();hze=Object.freeze({width:null,height:null}),FX=Object.freeze({...hze,...z0})});var MD,yk,GX=F(()=>{"use strict";MD=o((e,t,r,n="")=>{let i=e.split(":");if(e.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return t&&!yk(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return t&&!yk(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return t&&!yk(l,r)?null:l}return null},"stringToIcon"),yk=o((e,t)=>e?!!((t&&e.prefix===""||e.prefix)&&e.name):!1,"validateIconName")});function VX(e,t){let r={};!e.hFlip!=!t.hFlip&&(r.hFlip=!0),!e.vFlip!=!t.vFlip&&(r.vFlip=!0);let n=((e.rotate||0)+(t.rotate||0))%4;return n&&(r.rotate=n),r}var WX=F(()=>{"use strict";o(VX,"mergeIconTransformations")});function ND(e,t){let r=VX(e,t);for(let n in $X)n in z0?n in e&&!(n in r)&&(r[n]=z0[n]):n in t?r[n]=t[n]:n in e&&(r[n]=e[n]);return r}var qX=F(()=>{"use strict";gk();WX();o(ND,"mergeIconData")});function HX(e,t){let r=e.icons,n=e.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(t||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var UX=F(()=>{"use strict";o(HX,"getIconsTree")});function YX(e,t,r){let n=e.icons,i=e.aliases||Object.create(null),a={};function s(l){a=ND(n[l]||i[l],a)}return o(s,"parse"),s(t),r.forEach(s),ND(e,a)}function PD(e,t){if(e.icons[t])return YX(e,t,[]);let r=HX(e,[t])[t];return r?YX(e,t,r):null}var jX=F(()=>{"use strict";qX();UX();o(YX,"internalGetIconData");o(PD,"getIconData")});function OD(e,t,r){if(t===1)return e;if(r=r||100,typeof e=="number")return Math.ceil(e*t*r)/r;if(typeof e!="string")return e;let n=e.split(dze);if(n===null||!n.length)return e;let i=[],a=n.shift(),s=fze.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*t*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var dze,fze,XX=F(()=>{"use strict";dze=/(-?[0-9.]*[0-9]+[0-9.]*)/g,fze=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(OD,"calculateSize")});function pze(e,t="defs"){let r="",n=e.indexOf("<"+t);for(;n>=0;){let i=e.indexOf(">",n),a=e.indexOf("",a);if(s===-1)break;r+=e.slice(i+1,a).trim(),e=e.slice(0,n).trim()+e.slice(s+1)}return{defs:r,content:e}}function mze(e,t){return e?""+e+""+t:t}function KX(e,t,r){let n=pze(e);return mze(n.defs,t+n.content+r)}var ZX=F(()=>{"use strict";o(pze,"splitSVGDefs");o(mze,"mergeDefsAndContent");o(KX,"wrapSVGContent")});function BD(e,t){let r={...ID,...e},n={...FX,...t},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,T=y.rotate;x?b?T+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let k;switch(T<0&&(T-=Math.floor(T/4)*4),T=T%4,T){case 1:k=i.height/2+i.top,v.unshift("rotate(90 "+k.toString()+" "+k.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:k=i.width/2+i.left,v.unshift("rotate(-90 "+k.toString()+" "+k.toString()+")");break}T%2===1&&(i.left!==i.top&&(k=i.left,i.left=i.top,i.top=k),i.width!==i.height&&(k=i.width,i.width=i.height,i.height=k)),v.length&&(a=KX(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,d,f;s===null?(f=l===null?"1em":l==="auto"?h:l,d=OD(f,u/h)):(d=s==="auto"?u:s,f=l===null?OD(d,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{gze(v)||(p[y]=v.toString())},"setAttr");m("width",d),m("height",f);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var gze,QX=F(()=>{"use strict";gk();zX();XX();ZX();gze=o(e=>e==="unset"||e==="undefined"||e==="none","isUnsetKeyword");o(BD,"iconToSVG")});function $D(e,t=vze){let r=[],n;for(;n=yze.exec(e);)r.push(n[1]);if(!r.length)return e;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof t=="function"?t(a):t+(xze++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),e=e.replace(new RegExp(i,"g"),""),e}var yze,vze,xze,JX=F(()=>{"use strict";yze=/\sid="(\S+)"/g,vze="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),xze=0;o($D,"replaceIDs")});function FD(e,t){let r=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in t)r+=" "+n+'="'+t[n]+'"';return'"+e+""}var eK=F(()=>{"use strict";o(FD,"iconToHTML")});var tK=F(()=>{"use strict";GX();jX();QX();JX();eK()});var zD,Yn,G0=F(()=>{"use strict";zD=o((e,t,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(t)&&!Array.isArray(e)?(t.forEach(a=>zD(e,a,i)),e):Array.isArray(t)&&Array.isArray(e)?(t.forEach(a=>{e.includes(a)||e.push(a)}),e):e===void 0||r<=0?e!=null&&typeof e=="object"&&typeof t=="object"?Object.assign(e,t):t:(t!==void 0&&typeof e=="object"&&typeof t=="object"&&Object.keys(t).forEach(a=>{typeof t[a]=="object"&&t[a]!==null&&(e[a]===void 0||typeof e[a]=="object")?(e[a]===void 0&&(e[a]=Array.isArray(t[a])?[]:{}),e[a]=zD(e[a],t[a],{depth:r-1,clobber:n})):(n||typeof e[a]!="object"&&typeof t[a]!="object")&&(e[a]=t[a])}),e)},"assignWithDepth"),Yn=zD});var vk=Io((GD,VD)=>{"use strict";(function(e,t){typeof GD=="object"&&typeof VD<"u"?VD.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(GD,(function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",d="quarter",f="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(_){var A=["th","st","nd","rd"],M=_%100;return"["+_+(A[(M-20)%10]||A[M]||A[0])+"]"},"ordinal")},x=o(function(_,A,M){var D=String(_);return!D||D.length>=A?_:""+Array(A+1-D.length).join(M)+_},"m"),b={s:x,z:o(function(_){var A=-_.utcOffset(),M=Math.abs(A),D=Math.floor(M/60),P=M%60;return(A<=0?"+":"-")+x(D,2,"0")+":"+x(P,2,"0")},"z"),m:o(function _(A,M){if(A.date()1)return _(O[0])}else{var $=A.name;k[$]=A,P=$}return!D&&P&&(T=P),P||!D&&T},"t"),R=o(function(_,A){if(w(_))return _.clone();var M=typeof A=="object"?A:{};return M.date=_,M.args=arguments,new N(M)},"O"),L=b;L.l=S,L.i=w,L.w=function(_,A){return R(_,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var N=(function(){function _(M){this.$L=S(M.locale,null,!0),this.parse(M),this.$x=this.$x||M.x||{},this[C]=!0}o(_,"M");var A=_.prototype;return A.parse=function(M){this.$d=(function(D){var P=D.date,B=D.utc;if(P===null)return new Date(NaN);if(L.u(P))return new Date;if(P instanceof Date)return new Date(P);if(typeof P=="string"&&!/Z$/i.test(P)){var O=P.match(g);if(O){var $=O[2]-1||0,V=(O[7]||"0").substring(0,3);return B?new Date(Date.UTC(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,V)):new Date(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,V)}}return new Date(P)})(M),this.init()},A.init=function(){var M=this.$d;this.$y=M.getFullYear(),this.$M=M.getMonth(),this.$D=M.getDate(),this.$W=M.getDay(),this.$H=M.getHours(),this.$m=M.getMinutes(),this.$s=M.getSeconds(),this.$ms=M.getMilliseconds()},A.$utils=function(){return L},A.isValid=function(){return this.$d.toString()!==m},A.isSame=function(M,D){var P=R(M);return this.startOf(D)<=P&&P<=this.endOf(D)},A.isAfter=function(M,D){return R(M){"use strict";rK=Xs(vk(),1),Zu={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Z={trace:o((...e)=>{},"trace"),debug:o((...e)=>{},"debug"),info:o((...e)=>{},"info"),warn:o((...e)=>{},"warn"),error:o((...e)=>{},"error"),fatal:o((...e)=>{},"fatal")},Bx=o(function(e="fatal"){let t=Zu.fatal;typeof e=="string"?e.toLowerCase()in Zu&&(t=Zu[e]):typeof e=="number"&&(t=e),Z.trace=()=>{},Z.debug=()=>{},Z.info=()=>{},Z.warn=()=>{},Z.error=()=>{},Z.fatal=()=>{},t<=Zu.fatal&&(Z.fatal=console.error?console.error.bind(console,il("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",il("FATAL"))),t<=Zu.error&&(Z.error=console.error?console.error.bind(console,il("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",il("ERROR"))),t<=Zu.warn&&(Z.warn=console.warn?console.warn.bind(console,il("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",il("WARN"))),t<=Zu.info&&(Z.info=console.info?console.info.bind(console,il("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",il("INFO"))),t<=Zu.debug&&(Z.debug=console.debug?console.debug.bind(console,il("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",il("DEBUG"))),t<=Zu.trace&&(Z.trace=console.debug?console.debug.bind(console,il("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",il("TRACE")))},"setLogLevel"),il=o(e=>`%c${(0,rK.default)().format("ss.SSS")} : ${e} : `,"format")});var xk,nK,iK=F(()=>{"use strict";xk={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(e=>e>=255?255:e<0?0:e,"r"),g:o(e=>e>=255?255:e<0?0:e,"g"),b:o(e=>e>=255?255:e<0?0:e,"b"),h:o(e=>e%360,"h"),s:o(e=>e>=100?100:e<0?0:e,"s"),l:o(e=>e>=100?100:e<0?0:e,"l"),a:o(e=>e>=1?1:e<0?0:e,"a")},toLinear:o(e=>{let t=e/255;return e>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},"toLinear"),hue2rgb:o((e,t,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?e+(t-e)*6*r:r<.5?t:r<.6666666666666666?e+(t-e)*(.6666666666666666-r)*6:e),"hue2rgb"),hsl2rgb:o(({h:e,s:t,l:r},n)=>{if(!t)return r*2.55;e/=360,t/=100,r/=100;let i=r<.5?r*(1+t):r+t-r*t,a=2*r-i;switch(n){case"r":return xk.hue2rgb(a,i,e+.3333333333333333)*255;case"g":return xk.hue2rgb(a,i,e)*255;case"b":return xk.hue2rgb(a,i,e-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:e,g:t,b:r},n)=>{e/=255,t/=255,r/=255;let i=Math.max(e,t,r),a=Math.min(e,t,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case e:return((t-r)/l+(t{"use strict";bze={clamp:o((e,t,r)=>t>r?Math.min(t,Math.max(r,e)):Math.min(r,Math.max(t,e)),"clamp"),round:o(e=>Math.round(e*1e10)/1e10,"round")},aK=bze});var Tze,oK,lK=F(()=>{"use strict";Tze={dec2hex:o(e=>{let t=Math.round(e).toString(16);return t.length>1?t:`0${t}`},"dec2hex")},oK=Tze});var Cze,lr,Nc=F(()=>{"use strict";iK();sK();lK();Cze={channel:nK,lang:aK,unit:oK},lr=Cze});var Qu,ta,$x=F(()=>{"use strict";Nc();Qu={};for(let e=0;e<=255;e++)Qu[e]=lr.unit.dec2hex(e);ta={ALL:0,RGB:1,HSL:2}});var WD,cK,uK=F(()=>{"use strict";$x();WD=class{static{o(this,"Type")}constructor(){this.type=ta.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=ta.ALL}is(t){return this.type===t}},cK=WD});var qD,hK,dK=F(()=>{"use strict";Nc();uK();$x();qD=class{static{o(this,"Channels")}constructor(t,r){this.color=r,this.changed=!1,this.data=t,this.type=new cK}set(t,r){return this.color=r,this.changed=!1,this.data=t,this.type.type=ta.ALL,this}_ensureHSL(){let t=this.data,{h:r,s:n,l:i}=t;r===void 0&&(t.h=lr.channel.rgb2hsl(t,"h")),n===void 0&&(t.s=lr.channel.rgb2hsl(t,"s")),i===void 0&&(t.l=lr.channel.rgb2hsl(t,"l"))}_ensureRGB(){let t=this.data,{r,g:n,b:i}=t;r===void 0&&(t.r=lr.channel.hsl2rgb(t,"r")),n===void 0&&(t.g=lr.channel.hsl2rgb(t,"g")),i===void 0&&(t.b=lr.channel.hsl2rgb(t,"b"))}get r(){let t=this.data,r=t.r;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"r"))}get g(){let t=this.data,r=t.g;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"g"))}get b(){let t=this.data,r=t.b;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"b"))}get h(){let t=this.data,r=t.h;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"h"))}get s(){let t=this.data,r=t.s;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"s"))}get l(){let t=this.data,r=t.l;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"l"))}get a(){return this.data.a}set r(t){this.type.set(ta.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(ta.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(ta.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(ta.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(ta.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(ta.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}},hK=qD});var wze,Td,Fx=F(()=>{"use strict";dK();wze=new hK({r:0,g:0,b:0,a:0},"transparent"),Td=wze});var fK,Bp,HD=F(()=>{"use strict";Fx();$x();fK={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(e=>{if(e.charCodeAt(0)!==35)return;let t=e.match(fK.re);if(!t)return;let r=t[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,d=s?255:15;return Td.set({r:(n>>u*(h+3)&d)*l,g:(n>>u*(h+2)&d)*l,b:(n>>u*(h+1)&d)*l,a:a?(n&d)*l/255:1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:n,a:i}=e;return i<1?`#${Qu[Math.round(t)]}${Qu[Math.round(r)]}${Qu[Math.round(n)]}${Qu[Math.round(i*255)]}`:`#${Qu[Math.round(t)]}${Qu[Math.round(r)]}${Qu[Math.round(n)]}`},"stringify")},Bp=fK});var bk,zx,pK=F(()=>{"use strict";Nc();Fx();bk={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(e=>{let t=e.match(bk.hueRe);if(t){let[,r,n]=t;switch(n){case"grad":return lr.channel.clamp.h(parseFloat(r)*.9);case"rad":return lr.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return lr.channel.clamp.h(parseFloat(r)*360)}}return lr.channel.clamp.h(parseFloat(e))},"_hue2deg"),parse:o(e=>{let t=e.charCodeAt(0);if(t!==104&&t!==72)return;let r=e.match(bk.re);if(!r)return;let[,n,i,a,s,l]=r;return Td.set({h:bk._hue2deg(n),s:lr.channel.clamp.s(parseFloat(i)),l:lr.channel.clamp.l(parseFloat(a)),a:s?lr.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},e)},"parse"),stringify:o(e=>{let{h:t,s:r,l:n,a:i}=e;return i<1?`hsla(${lr.lang.round(t)}, ${lr.lang.round(r)}%, ${lr.lang.round(n)}%, ${i})`:`hsl(${lr.lang.round(t)}, ${lr.lang.round(r)}%, ${lr.lang.round(n)}%)`},"stringify")},zx=bk});var Tk,UD,mK=F(()=>{"use strict";HD();Tk={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(e=>{e=e.toLowerCase();let t=Tk.colors[e];if(t)return Bp.parse(t)},"parse"),stringify:o(e=>{let t=Bp.stringify(e);for(let r in Tk.colors)if(Tk.colors[r]===t)return r},"stringify")},UD=Tk});var gK,Gx,yK=F(()=>{"use strict";Nc();Fx();gK={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(e=>{let t=e.charCodeAt(0);if(t!==114&&t!==82)return;let r=e.match(gK.re);if(!r)return;let[,n,i,a,s,l,u,h,d]=r;return Td.set({r:lr.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:lr.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:lr.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?lr.channel.clamp.a(d?parseFloat(h)/100:parseFloat(h)):1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:n,a:i}=e;return i<1?`rgba(${lr.lang.round(t)}, ${lr.lang.round(r)}, ${lr.lang.round(n)}, ${lr.lang.round(i)})`:`rgb(${lr.lang.round(t)}, ${lr.lang.round(r)}, ${lr.lang.round(n)})`},"stringify")},Gx=gK});var kze,ra,Ju=F(()=>{"use strict";HD();pK();mK();yK();$x();kze={format:{keyword:UD,hex:Bp,rgb:Gx,rgba:Gx,hsl:zx,hsla:zx},parse:o(e=>{if(typeof e!="string")return e;let t=Bp.parse(e)||Gx.parse(e)||zx.parse(e)||UD.parse(e);if(t)return t;throw new Error(`Unsupported color format: "${e}"`)},"parse"),stringify:o(e=>!e.changed&&e.color?e.color:e.type.is(ta.HSL)||e.data.r===void 0?zx.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?Gx.stringify(e):Bp.stringify(e),"stringify")},ra=kze});var Sze,Ck,YD=F(()=>{"use strict";Nc();Ju();Sze=o((e,t)=>{let r=ra.parse(e);for(let n in t)r[n]=lr.channel.clamp[n](t[n]);return ra.stringify(r)},"change"),Ck=Sze});var Eze,Oi,jD=F(()=>{"use strict";Nc();Fx();Ju();YD();Eze=o((e,t,r=0,n=1)=>{if(typeof e!="number")return Ck(e,{a:t});let i=Td.set({r:lr.channel.clamp.r(e),g:lr.channel.clamp.g(t),b:lr.channel.clamp.b(r),a:lr.channel.clamp.a(n)});return ra.stringify(i)},"rgba"),Oi=Eze});var Aze,$p,vK=F(()=>{"use strict";Nc();Ju();Aze=o((e,t)=>lr.lang.round(ra.parse(e)[t]),"channel"),$p=Aze});var Rze,xK,bK=F(()=>{"use strict";Nc();Ju();Rze=o(e=>{let{r:t,g:r,b:n}=ra.parse(e),i=.2126*lr.channel.toLinear(t)+.7152*lr.channel.toLinear(r)+.0722*lr.channel.toLinear(n);return lr.lang.round(i)},"luminance"),xK=Rze});var _ze,TK,CK=F(()=>{"use strict";bK();_ze=o(e=>xK(e)>=.5,"isLight"),TK=_ze});var Lze,Tn,wK=F(()=>{"use strict";CK();Lze=o(e=>!TK(e),"isDark"),Tn=Lze});var Dze,V0,wk=F(()=>{"use strict";Nc();Ju();Dze=o((e,t,r)=>{let n=ra.parse(e),i=n[t],a=lr.channel.clamp[t](i+r);return i!==a&&(n[t]=a),ra.stringify(n)},"adjustChannel"),V0=Dze});var Ize,Qe,kK=F(()=>{"use strict";wk();Ize=o((e,t)=>V0(e,"l",t),"lighten"),Qe=Ize});var Mze,Je,SK=F(()=>{"use strict";wk();Mze=o((e,t)=>V0(e,"l",-t),"darken"),Je=Mze});var Nze,kk,EK=F(()=>{"use strict";wk();Nze=o((e,t)=>V0(e,"a",-t),"transparentize"),kk=Nze});var Pze,de,AK=F(()=>{"use strict";Ju();YD();Pze=o((e,t)=>{let r=ra.parse(e),n={};for(let i in t)t[i]&&(n[i]=r[i]+t[i]);return Ck(e,n)},"adjust"),de=Pze});var Oze,RK,_K=F(()=>{"use strict";Ju();jD();Oze=o((e,t,r=50)=>{let{r:n,g:i,b:a,a:s}=ra.parse(e),{r:l,g:u,b:h,a:d}=ra.parse(t),f=r/100,p=f*2-1,m=s-d,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,T=a*y+h*v,k=s*f+d*(1-f);return Oi(x,b,T,k)},"mix"),RK=Oze});var Bze,Ye,LK=F(()=>{"use strict";Ju();_K();Bze=o((e,t=100)=>{let r=ra.parse(e);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,RK(r,e,t)},"invert"),Ye=Bze});var DK=F(()=>{"use strict";jD();vK();wK();kK();SK();EK();AK();LK()});var zi=F(()=>{"use strict";DK()});var Gi,Vi,Fl=F(()=>{"use strict";Gi="#ffffff",Vi="#f2f2f2"});var ar,al=F(()=>{"use strict";zi();ar=o((e,t)=>t?de(e,{s:-40,l:10}):de(e,{s:-40,l:-10}),"mkBorder")});var KD,IK,MK=F(()=>{"use strict";zi();Fl();al();KD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.useGradient=!0,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||Je(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Je(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Qe(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Qe(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},IK=o(e=>{let t=new KD;return t.calculate(e),t},"getThemeVariables")});var ZD,NK,PK=F(()=>{"use strict";zi();al();ZD=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.clusterBkg="#302F3D",this.sectionBkgColor=Je("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Je(this.sectionBkgColor,10),this.taskBorderColor=Oi(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Oi(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Qe(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Je(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal"}updateColors(){this.secondBkg=Qe(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Qe(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.background,this.taskBkgColor=Qe(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=Ye(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=de(this.primaryColor,{h:64}),this.fillType3=de(this.secondaryColor,{h:64}),this.fillType4=de(this.primaryColor,{h:-64}),this.fillType5=de(this.secondaryColor,{h:-64}),this.fillType6=de(this.primaryColor,{h:128}),this.fillType7=de(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330});for(let t=0;t{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},NK=o(e=>{let t=new ZD;return t.calculate(e),t},"getThemeVariables")});var QD,ma,Pc=F(()=>{"use strict";zi();al();Fl();QD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=de(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.clusterBkg="#FBFBFF",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=Oi(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!1,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Je(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Je(this.tertiaryColor,40);for(let t=0;t{this[n]==="calculated"&&(this[n]=void 0)}),typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},ma=o(e=>{let t=new QD;return t.calculate(e),t},"getThemeVariables")});var JD,OK,BK=F(()=>{"use strict";zi();Fl();al();JD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Qe("#cde498",10),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.primaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))"}updateColors(){this.actorBorder=Je(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Je(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Je(this.tertiaryColor,40);for(let t=0;t{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},OK=o(e=>{let t=new JD;return t.calculate(e),t},"getThemeVariables")});var e7,$K,FK=F(()=>{"use strict";zi();al();Fl();e7=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Qe(this.contrast,55),this.background="#ffffff",this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.rowOdd=this.rowOdd||Qe(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){this.secondBkg=Qe(this.contrast,55),this.border2=this.contrast,this.actorBorder=Qe(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},$K=o(e=>{let t=new e7;return t.calculate(e),t},"getThemeVariables")});var t7,zK,GK=F(()=>{"use strict";zi();al();Fl();t7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=2,this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.nodeBorder="#000000",this.stateBorder="#000000",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));",this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});if(this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||t,this.cScale1=this.cScale1||r,this.cScale2=this.cScale2||n,this.cScale3=this.cScale3||de(t,{h:30}),this.cScale4=this.cScale4||de(t,{h:60}),this.cScale5=this.cScale5||de(t,{h:90}),this.cScale6=this.cScale6||de(t,{h:120}),this.cScale7=this.cScale7||de(t,{h:150}),this.cScale8=this.cScale8||de(t,{h:210,l:150}),this.cScale9=this.cScale9||de(t,{h:270}),this.cScale10=this.cScale10||de(t,{h:300}),this.cScale11=this.cScale11||de(t,{h:330}),this.darkMode)for(let a=0;a{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},zK=o(e=>{let t=new t7;return t.calculate(e),t},"getThemeVariables")});var r7,VK,WK=F(()=>{"use strict";zi();al();Fl();r7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#2a2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=1,this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily="arial, sans-serif",this.fontSize="14px",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},VK=o(e=>{let t=new r7;return t.calculate(e),t},"getThemeVariables")});var n7,qK,HK=F(()=>{"use strict";zi();al();Fl();n7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=ar("#28253D",this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.clusterBkg="#F9F9FB",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#FEF9C3",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.noteFontWeight=600,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.compositeTitleBackground="#F9F9FB",this.altBackground="#F9F9FB",this.stateEdgeLabelBackground="#FFFFFF",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor;for(let a=0;a{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},qK=o(e=>{let t=new n7;return t.calculate(e),t},"getThemeVariables")});var i7,UK,YK=F(()=>{"use strict";zi();al();Fl();i7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.filterColor="#FFFFFF"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.compositeBackground="#16141F",this.altBackground="#16141F",this.compositeTitleBackground="#16141F",this.stateEdgeLabelBackground="#16141F",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},UK=o(e=>{let t=new i7;return t.calculate(e),t},"getThemeVariables")});var a7,jK,XK=F(()=>{"use strict";zi();al();Fl();a7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=["#FDF4FF","#F0FDFA","#FFF7ED","#ECFEFF","#F0FDF4","#F5F3FF","#FEF2F2","#FEFCE8","#EEF2FF","#F7FEE7","#F0F9FF","#FFF1F2"],this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let a=0;a{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},jK=o(e=>{let t=new a7;return t.calculate(e),t},"getThemeVariables")});var s7,KK,ZK=F(()=>{"use strict";zi();al();Fl();s7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=[],this.filterColor="#FFFFFF"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.rootLabelColor="#FFFFFF",this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},KK=o(e=>{let t=new s7;return t.calculate(e),t},"getThemeVariables")});var sl,Sk=F(()=>{"use strict";MK();PK();Pc();BK();FK();GK();WK();HK();YK();XK();ZK();sl={base:{getThemeVariables:IK},dark:{getThemeVariables:NK},default:{getThemeVariables:ma},forest:{getThemeVariables:OK},neutral:{getThemeVariables:$K},neo:{getThemeVariables:zK},"neo-dark":{getThemeVariables:VK},redux:{getThemeVariables:qK},"redux-dark":{getThemeVariables:UK},"redux-color":{getThemeVariables:jK},"redux-dark-color":{getThemeVariables:KK}}});var ga,QK=F(()=>{"use strict";ga={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},swimlane:{useMaxWidth:!0,lineHops:"arc",ignoreCrossLaneEdges:!0,optimizeRanksByCrossings:!0,automaticLaneOrdering:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75,donutHole:0,legendPosition:"right",highlightSlice:""},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:"",nodeWidth:10,nodePadding:12,labelStyle:"legacy"},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},treeView:{useMaxWidth:!0,rowIndent:10,paddingX:5,paddingY:5,lineThickness:1,showIcons:!1,defaultIconPack:"",filenameIcons:{},extensionIcons:{}},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16,randomize:!1,nodeSeparation:75,idealEdgeLengthMultiplier:1.5,edgeElasticity:.45,numIter:2500,seed:1},eventmodeling:{useMaxWidth:!0,padding:30,rowHeight:32},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},cynefin:{useMaxWidth:!0,width:800,height:600,padding:40,showDomainDescriptions:!0,boundaryAmplitude:8,seed:0},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var JK,eZ,tZ,cr,Wi=F(()=>{"use strict";Sk();QK();JK={...ga,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:sl.default.getThemeVariables(),sequence:{...ga.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},gantt:{...ga.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ga.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...ga.flowchart,inheritDir:!1},external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ga.pie,useWidth:984},xyChart:{...ga.xyChart,useWidth:void 0},requirement:{...ga.requirement,useWidth:void 0},packet:{...ga.packet},eventmodeling:{...ga.eventmodeling},treeView:{...ga.treeView,useWidth:void 0},radar:{...ga.radar},railroad:{...ga.railroad,fontSize:void 0,fontFamily:void 0,terminalFill:void 0,terminalStroke:void 0,terminalTextColor:void 0,nonTerminalFill:void 0,nonTerminalStroke:void 0,nonTerminalTextColor:void 0,lineColor:void 0,markerFill:void 0,commentFill:void 0,commentStroke:void 0,commentTextColor:void 0,specialFill:void 0,specialStroke:void 0,ruleNameColor:void 0},ishikawa:{...ga.ishikawa},sankey:{...ga.sankey,nodeColors:void 0},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","},venn:{...ga.venn},cynefin:{...ga.cynefin}},eZ=o((e,t="")=>Object.keys(e).reduce((r,n)=>Array.isArray(e[n])?r:typeof e[n]=="object"&&e[n]!==null?[...r,t+n,...eZ(e[n],"")]:[...r,t+n],[]),"keyify"),tZ=new Set(eZ(JK,"")),cr=JK});var $ze,Fze,W0,o7,Ek=F(()=>{"use strict";Wi();vt();$ze={nodeColors:/^#[\da-f]{3,8}$|^rgb\([\d\s%,.]+\)$|^hsl\([\d\s%,.]+\)$|^[a-z]+$/i,filenameIcons:/^[\w-]+(?::[\w-]+)?$/,extensionIcons:/^[\w-]+(?::[\w-]+)?$/},Fze=o((e,t)=>{for(let r of Object.keys(e)){let n=e[r];(r.startsWith("__")||r.includes("proto")||r.includes("constr")||typeof n!="string"||!t.test(n))&&(Z.debug("sanitize deleting dictionary entry:",r,n),delete e[r])}},"sanitizeDictionaryConfig"),W0=o(e=>{if(Z.debug("sanitizeDirective called with",e),!(typeof e!="object"||e==null)){if(Array.isArray(e)){e.forEach(t=>W0(t));return}for(let t of Object.keys(e)){if(Z.debug("Checking key",t),t.startsWith("__")||t.includes("proto")||t.includes("constr")||!tZ.has(t)||e[t]==null){Z.debug("sanitize deleting key: ",t),delete e[t];continue}if(typeof e[t]=="object"){let n=$ze[t];n?Fze(e[t],n):(Z.debug("sanitizing object",t),W0(e[t]));continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)t.includes(n)&&(Z.debug("sanitizing css option",t),e[t]=o7(e[t]))}if(e.themeVariables)for(let t of Object.keys(e.themeVariables)){let r=e.themeVariables[t];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(e.themeVariables[t]="")}Z.debug("After sanitization",e)}},"sanitizeDirective"),o7=o(e=>{let t=0,r=0;for(let n of e){if(t{"use strict";G0();vt();Sk();Wi();Ek();Cd=Object.freeze(cr),ya=o(e=>!(e===!1||["false","null","0"].includes(String(e).trim().toLowerCase())),"evaluate"),Ks=Yn({},Cd),Fp=[],Vx=Yn({},Cd),Rk=o((e,t)=>{let r=Yn({},e),n={};for(let i of t)aZ(i),n=Yn(n,i);if(r=Yn(r,n),n.theme&&n.theme in sl){let i=Yn({},Ak),a=Yn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in sl&&(r.themeVariables=sl[r.theme].getThemeVariables(a))}return Vx=r,lZ(Vx),Vx},"updateCurrentConfig"),l7=o(e=>(Ks=Yn({},Cd),Ks=Yn(Ks,e),e.theme&&sl[e.theme]&&(Ks.themeVariables=sl[e.theme].getThemeVariables(e.themeVariables)),Rk(Ks,Fp),Ks),"setSiteConfig"),nZ=o(e=>{Ak=Yn({},e)},"saveConfigFromInitialize"),iZ=o(e=>(Ks=Yn(Ks,e),Rk(Ks,Fp),Ks),"updateSiteConfig"),c7=o(()=>Yn({},Ks),"getSiteConfig"),_k=o(e=>(lZ(e),Yn(Vx,e),_t()),"setConfig"),_t=o(()=>Yn({},Vx),"getConfig"),aZ=o(e=>{e&&(["secure",...Ks.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&(Z.debug(`Denied attempt to modify a secure key ${t}`,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith("__")&&delete e[t]}),Object.keys(e).forEach(t=>{typeof e[t]=="string"&&(e[t].includes("<")||e[t].includes(">")||e[t].includes("url(data:"))&&delete e[t],typeof e[t]=="object"&&aZ(e[t])}))},"sanitize"),sZ=o(e=>{W0(e),e.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables={...e.themeVariables,fontFamily:e.fontFamily}),Fp.push(e),Rk(Ks,Fp)},"addDirective"),Wx=o((e=Ks)=>{Fp=[],Rk(e,Fp)},"reset"),zze={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",FLOWCHART_HTML_LABELS_DEPRECATED:"flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."},rZ={},oZ=o(e=>{rZ[e]||(Z.warn(zze[e]),rZ[e]=!0)},"issueWarning"),lZ=o(e=>{e&&(e.lazyLoadedDiagrams||e.loadExternalDiagramsAtStartup)&&oZ("LAZY_LOAD_DEPRECATED")},"checkConfig"),Lk=o(()=>{let e={};Ak&&(e=Yn(e,Ak));for(let t of Fp)e=Yn(e,t);return e},"getUserDefinedConfig"),Gr=o(e=>(e.flowchart?.htmlLabels!=null&&oZ("FLOWCHART_HTML_LABELS_DEPRECATED"),ya(e.htmlLabels??e.flowchart?.htmlLabels??!0)),"getEffectiveHtmlLabels")});function bs(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:Ik;cZ&&cZ(e,null);let n=t.length;for(;n--;){let i=t[n];if(typeof i=="string"){let a=r(i);a!==i&&(Gze(t)||(t[n]=a),i=a)}e[i]=!0}return e}function Xze(e){for(let t=0;t0&&arguments[0]!==void 0?arguments[0]:sGe(),t=o(Tt=>bZ(Tt),"DOMPurify");if(t.version="3.4.0",t.removed=[],!e||!e.document||e.document.nodeType!==jx.document||!e.Element)return t.isSupported=!1,t;let{document:r}=e,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:d=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:f,DOMParser:p,trustedTypes:m}=e,g=u.prototype,y=Yx(g,"cloneNode"),v=Yx(g,"remove"),x=Yx(g,"nextSibling"),b=Yx(g,"childNodes"),T=Yx(g,"parentNode");if(typeof s=="function"){let Tt=r.createElement("template");Tt.content&&Tt.content.ownerDocument&&(r=Tt.content.ownerDocument)}let k,C="",{implementation:w,createNodeIterator:S,createDocumentFragment:R,getElementsByTagName:L}=r,{importNode:N}=n,I=gZ();t.isSupported=typeof yZ=="function"&&typeof T=="function"&&w&&w.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:_,ERB_EXPR:A,TMPLIT_EXPR:M,DATA_ATTR:D,ARIA_ATTR:P,IS_SCRIPT_OR_DATA:B,ATTR_WHITESPACE:O,CUSTOM_ELEMENT:$}=mZ,{IS_ALLOWED_URI:V}=mZ,G=null,z=Zr({},[...hZ,...d7,...f7,...p7,...dZ]),W=null,H=Zr({},[...fZ,...m7,...pZ,...Dk]),j=Object.seal(Xx(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Q=null,U=null,oe=Object.seal(Xx(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),te=!0,le=!0,ie=!1,ae=!0,Re=!1,be=!0,Pe=!1,Ge=!1,Oe=!1,ue=!1,ye=!1,ke=!1,ce=!0,re=!1,J="user-content-",se=!0,ge=!1,Te={},we=null,Me=Zr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ve=null,ne=Zr({},["audio","video","img","source","image","track"]),q=null,he=Zr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),X="http://www.w3.org/1998/Math/MathML",fe="http://www.w3.org/2000/svg",K="http://www.w3.org/1999/xhtml",qe=K,_e=!1,Be=null,Ne=Zr({},[X,fe,K],u7),He=Zr({},["mi","mo","mn","ms","mtext"]),$e=Zr({},["annotation-xml"]),Xe=Zr({},["title","style","font","a","script"]),Fe=null,Ke=["application/xhtml+xml","text/html"],xe="text/html",mt=null,Le=null,ft=r.createElement("form"),wt=o(function(De){return De instanceof RegExp||De instanceof Function},"isRegexOrFunction"),zt=o(function(){let De=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Le&&Le===De)){if((!De||typeof De!="object")&&(De={}),De=Oc(De),Fe=Ke.indexOf(De.PARSER_MEDIA_TYPE)===-1?xe:De.PARSER_MEDIA_TYPE,mt=Fe==="application/xhtml+xml"?u7:Ik,G=zl(De,"ALLOWED_TAGS")?Zr({},De.ALLOWED_TAGS,mt):z,W=zl(De,"ALLOWED_ATTR")?Zr({},De.ALLOWED_ATTR,mt):H,Be=zl(De,"ALLOWED_NAMESPACES")?Zr({},De.ALLOWED_NAMESPACES,u7):Ne,q=zl(De,"ADD_URI_SAFE_ATTR")?Zr(Oc(he),De.ADD_URI_SAFE_ATTR,mt):he,ve=zl(De,"ADD_DATA_URI_TAGS")?Zr(Oc(ne),De.ADD_DATA_URI_TAGS,mt):ne,we=zl(De,"FORBID_CONTENTS")?Zr({},De.FORBID_CONTENTS,mt):Me,Q=zl(De,"FORBID_TAGS")?Zr({},De.FORBID_TAGS,mt):Oc({}),U=zl(De,"FORBID_ATTR")?Zr({},De.FORBID_ATTR,mt):Oc({}),Te=zl(De,"USE_PROFILES")?De.USE_PROFILES:!1,te=De.ALLOW_ARIA_ATTR!==!1,le=De.ALLOW_DATA_ATTR!==!1,ie=De.ALLOW_UNKNOWN_PROTOCOLS||!1,ae=De.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Re=De.SAFE_FOR_TEMPLATES||!1,be=De.SAFE_FOR_XML!==!1,Pe=De.WHOLE_DOCUMENT||!1,ue=De.RETURN_DOM||!1,ye=De.RETURN_DOM_FRAGMENT||!1,ke=De.RETURN_TRUSTED_TYPE||!1,Oe=De.FORCE_BODY||!1,ce=De.SANITIZE_DOM!==!1,re=De.SANITIZE_NAMED_PROPS||!1,se=De.KEEP_CONTENT!==!1,ge=De.IN_PLACE||!1,V=De.ALLOWED_URI_REGEXP||vZ,qe=De.NAMESPACE||K,He=De.MATHML_TEXT_INTEGRATION_POINTS||He,$e=De.HTML_INTEGRATION_POINTS||$e,j=De.CUSTOM_ELEMENT_HANDLING||Xx(null),De.CUSTOM_ELEMENT_HANDLING&&wt(De.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(j.tagNameCheck=De.CUSTOM_ELEMENT_HANDLING.tagNameCheck),De.CUSTOM_ELEMENT_HANDLING&&wt(De.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(j.attributeNameCheck=De.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),De.CUSTOM_ELEMENT_HANDLING&&typeof De.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(j.allowCustomizedBuiltInElements=De.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Re&&(le=!1),ye&&(ue=!0),Te&&(G=Zr({},dZ),W=Xx(null),Te.html===!0&&(Zr(G,hZ),Zr(W,fZ)),Te.svg===!0&&(Zr(G,d7),Zr(W,m7),Zr(W,Dk)),Te.svgFilters===!0&&(Zr(G,f7),Zr(W,m7),Zr(W,Dk)),Te.mathMl===!0&&(Zr(G,p7),Zr(W,pZ),Zr(W,Dk))),oe.tagCheck=null,oe.attributeCheck=null,De.ADD_TAGS&&(typeof De.ADD_TAGS=="function"?oe.tagCheck=De.ADD_TAGS:(G===z&&(G=Oc(G)),Zr(G,De.ADD_TAGS,mt))),De.ADD_ATTR&&(typeof De.ADD_ATTR=="function"?oe.attributeCheck=De.ADD_ATTR:(W===H&&(W=Oc(W)),Zr(W,De.ADD_ATTR,mt))),De.ADD_URI_SAFE_ATTR&&Zr(q,De.ADD_URI_SAFE_ATTR,mt),De.FORBID_CONTENTS&&(we===Me&&(we=Oc(we)),Zr(we,De.FORBID_CONTENTS,mt)),De.ADD_FORBID_CONTENTS&&(we===Me&&(we=Oc(we)),Zr(we,De.ADD_FORBID_CONTENTS,mt)),se&&(G["#text"]=!0),Pe&&Zr(G,["html","head","body"]),G.table&&(Zr(G,["tbody"]),delete Q.tbody),De.TRUSTED_TYPES_POLICY){if(typeof De.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ux('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof De.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ux('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');k=De.TRUSTED_TYPES_POLICY,C=k.createHTML("")}else k===void 0&&(k=oGe(m,i)),k!==null&&typeof C=="string"&&(C=k.createHTML(""));xs&&xs(De),Le=De}},"_parseConfig"),St=Zr({},[...d7,...f7,...Kze]),At=Zr({},[...p7,...Zze]),bt=o(function(De){let it=T(De);(!it||!it.tagName)&&(it={namespaceURI:qe,tagName:"template"});let We=Ik(De.tagName),rt=Ik(it.tagName);return Be[De.namespaceURI]?De.namespaceURI===fe?it.namespaceURI===K?We==="svg":it.namespaceURI===X?We==="svg"&&(rt==="annotation-xml"||He[rt]):!!St[We]:De.namespaceURI===X?it.namespaceURI===K?We==="math":it.namespaceURI===fe?We==="math"&&$e[rt]:!!At[We]:De.namespaceURI===K?it.namespaceURI===fe&&!$e[rt]||it.namespaceURI===X&&!He[rt]?!1:!At[We]&&(Xe[We]||!St[We]):!!(Fe==="application/xhtml+xml"&&Be[De.namespaceURI]):!1},"_checkValidNamespace"),me=o(function(De){Hx(t.removed,{element:De});try{T(De).removeChild(De)}catch{v(De)}},"_forceRemove"),lt=o(function(De,it){try{Hx(t.removed,{attribute:it.getAttributeNode(De),from:it})}catch{Hx(t.removed,{attribute:null,from:it})}if(it.removeAttribute(De),De==="is")if(ue||ye)try{me(it)}catch{}else try{it.setAttribute(De,"")}catch{}},"_removeAttribute"),gt=o(function(De){let it=null,We=null;if(Oe)De=""+De;else{let Yt=h7(De,/^[\r\n\t ]+/);We=Yt&&Yt[0]}Fe==="application/xhtml+xml"&&qe===K&&(De=''+De+"");let rt=k?k.createHTML(De):De;if(qe===K)try{it=new p().parseFromString(rt,Fe)}catch{}if(!it||!it.documentElement){it=w.createDocument(qe,"template",null);try{it.documentElement.innerHTML=_e?C:rt}catch{}}let yt=it.body||it.documentElement;return De&&We&&yt.insertBefore(r.createTextNode(We),yt.childNodes[0]||null),qe===K?L.call(it,Pe?"html":"body")[0]:Pe?it.documentElement:yt},"_initDocument"),Ze=o(function(De){return S.call(De.ownerDocument||De,De,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),Ee=o(function(De){return De instanceof f&&(typeof De.nodeName!="string"||typeof De.textContent!="string"||typeof De.removeChild!="function"||!(De.attributes instanceof d)||typeof De.removeAttribute!="function"||typeof De.setAttribute!="function"||typeof De.namespaceURI!="string"||typeof De.insertBefore!="function"||typeof De.hasChildNodes!="function")},"_isClobbered"),tt=o(function(De){return typeof l=="function"&&De instanceof l},"_isNode");function at(Tt,De,it){qx(Tt,We=>{We.call(t,De,it,Le)})}o(at,"_executeHooks");let ot=o(function(De){let it=null;if(at(I.beforeSanitizeElements,De,null),Ee(De))return me(De),!0;let We=mt(De.nodeName);if(at(I.uponSanitizeElement,De,{tagName:We,allowedTags:G}),be&&De.hasChildNodes()&&!tt(De.firstElementChild)&&vs(/<[/\w!]/g,De.innerHTML)&&vs(/<[/\w!]/g,De.textContent)||be&&De.namespaceURI===K&&We==="style"&&tt(De.firstElementChild)||De.nodeType===jx.progressingInstruction||be&&De.nodeType===jx.comment&&vs(/<[/\w]/g,De.data))return me(De),!0;if(Q[We]||!(oe.tagCheck instanceof Function&&oe.tagCheck(We))&&!G[We]){if(!Q[We]&&Bt(We)&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,We)||j.tagNameCheck instanceof Function&&j.tagNameCheck(We)))return!1;if(se&&!we[We]){let rt=T(De)||De.parentNode,yt=b(De)||De.childNodes;if(yt&&rt){let Yt=yt.length;for(let Ht=Yt-1;Ht>=0;--Ht){let pr=y(yt[Ht],!0);pr.__removalCount=(De.__removalCount||0)+1,rt.insertBefore(pr,x(De))}}}return me(De),!0}return De instanceof u&&!bt(De)||(We==="noscript"||We==="noembed"||We==="noframes")&&vs(/<\/no(script|embed|frames)/i,De.innerHTML)?(me(De),!0):(Re&&De.nodeType===jx.text&&(it=De.textContent,qx([_,A,M],rt=>{it=q0(it,rt," ")}),De.textContent!==it&&(Hx(t.removed,{element:De.cloneNode()}),De.textContent=it)),at(I.afterSanitizeElements,De,null),!1)},"_sanitizeElements"),Wt=o(function(De,it,We){if(U[it]||ce&&(it==="id"||it==="name")&&(We in r||We in ft))return!1;if(!(le&&!U[it]&&vs(D,it))){if(!(te&&vs(P,it))){if(!(oe.attributeCheck instanceof Function&&oe.attributeCheck(it,De))){if(!W[it]||U[it]){if(!(Bt(De)&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,De)||j.tagNameCheck instanceof Function&&j.tagNameCheck(De))&&(j.attributeNameCheck instanceof RegExp&&vs(j.attributeNameCheck,it)||j.attributeNameCheck instanceof Function&&j.attributeNameCheck(it,De))||it==="is"&&j.allowCustomizedBuiltInElements&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,We)||j.tagNameCheck instanceof Function&&j.tagNameCheck(We))))return!1}else if(!q[it]){if(!vs(V,q0(We,O,""))){if(!((it==="src"||it==="xlink:href"||it==="href")&&De!=="script"&&Uze(We,"data:")===0&&ve[De])){if(!(ie&&!vs(B,q0(We,O,"")))){if(We)return!1}}}}}}}return!0},"_isValidAttribute"),Bt=o(function(De){return De!=="annotation-xml"&&h7(De,$)},"_isBasicCustomElement"),qt=o(function(De){at(I.beforeSanitizeAttributes,De,null);let{attributes:it}=De;if(!it||Ee(De))return;let We={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:W,forceKeepAttr:void 0},rt=it.length;for(;rt--;){let yt=it[rt],{name:Yt,namespaceURI:Ht,value:pr}=yt,Hr=mt(Yt),Er=pr,kt=Yt==="value"?Er:Yze(Er);if(We.attrName=Hr,We.attrValue=kt,We.keepAttr=!0,We.forceKeepAttr=void 0,at(I.uponSanitizeAttribute,De,We),kt=We.attrValue,re&&(Hr==="id"||Hr==="name")&&(lt(Yt,De),kt=J+kt),be&&vs(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,kt)){lt(Yt,De);continue}if(Hr==="attributename"&&h7(kt,"href")){lt(Yt,De);continue}if(We.forceKeepAttr)continue;if(!We.keepAttr){lt(Yt,De);continue}if(!ae&&vs(/\/>/i,kt)){lt(Yt,De);continue}Re&&qx([_,A,M],Ot=>{kt=q0(kt,Ot," ")});let Ct=mt(De.nodeName);if(!Wt(Ct,Hr,kt)){lt(Yt,De);continue}if(k&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Ht)switch(m.getAttributeType(Ct,Hr)){case"TrustedHTML":{kt=k.createHTML(kt);break}case"TrustedScriptURL":{kt=k.createScriptURL(kt);break}}if(kt!==Er)try{Ht?De.setAttributeNS(Ht,Yt,kt):De.setAttribute(Yt,kt),Ee(De)?me(De):uZ(t.removed)}catch{lt(Yt,De)}}at(I.afterSanitizeAttributes,De,null)},"_sanitizeAttributes"),vr=o(function(De){let it=null,We=Ze(De);for(at(I.beforeSanitizeShadowDOM,De,null);it=We.nextNode();)at(I.uponSanitizeShadowNode,it,null),ot(it),qt(it),it.content instanceof a&&vr(it.content);at(I.afterSanitizeShadowDOM,De,null)},"_sanitizeShadowDOM");return t.sanitize=function(Tt){let De=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},it=null,We=null,rt=null,yt=null;if(_e=!Tt,_e&&(Tt=""),typeof Tt!="string"&&!tt(Tt))if(typeof Tt.toString=="function"){if(Tt=Tt.toString(),typeof Tt!="string")throw Ux("dirty is not a string, aborting")}else throw Ux("toString is not a function");if(!t.isSupported)return Tt;if(Ge||zt(De),t.removed=[],typeof Tt=="string"&&(ge=!1),ge){if(Tt.nodeName){let pr=mt(Tt.nodeName);if(!G[pr]||Q[pr])throw Ux("root node is forbidden and cannot be sanitized in-place")}}else if(Tt instanceof l)it=gt(""),We=it.ownerDocument.importNode(Tt,!0),We.nodeType===jx.element&&We.nodeName==="BODY"||We.nodeName==="HTML"?it=We:it.appendChild(We);else{if(!ue&&!Re&&!Pe&&Tt.indexOf("<")===-1)return k&&ke?k.createHTML(Tt):Tt;if(it=gt(Tt),!it)return ue?null:ke?C:""}it&&Oe&&me(it.firstChild);let Yt=Ze(ge?Tt:it);for(;rt=Yt.nextNode();)ot(rt),qt(rt),rt.content instanceof a&&vr(rt.content);if(ge)return Tt;if(ue){if(Re){it.normalize();let pr=it.innerHTML;qx([_,A,M],Hr=>{pr=q0(pr,Hr," ")}),it.innerHTML=pr}if(ye)for(yt=R.call(it.ownerDocument);it.firstChild;)yt.appendChild(it.firstChild);else yt=it;return(W.shadowroot||W.shadowrootmode)&&(yt=N.call(n,yt,!0)),yt}let Ht=Pe?it.outerHTML:it.innerHTML;return Pe&&G["!doctype"]&&it.ownerDocument&&it.ownerDocument.doctype&&it.ownerDocument.doctype.name&&vs(xZ,it.ownerDocument.doctype.name)&&(Ht=" +`+Ht),Re&&qx([_,A,M],pr=>{Ht=q0(Ht,pr," ")}),k&&ke?k.createHTML(Ht):Ht},t.setConfig=function(){let Tt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};zt(Tt),Ge=!0},t.clearConfig=function(){Le=null,Ge=!1},t.isValidAttribute=function(Tt,De,it){Le||zt({});let We=mt(Tt),rt=mt(De);return Wt(We,rt,it)},t.addHook=function(Tt,De){typeof De=="function"&&Hx(I[Tt],De)},t.removeHook=function(Tt,De){if(De!==void 0){let it=qze(I[Tt],De);return it===-1?void 0:Hze(I[Tt],it,1)[0]}return uZ(I[Tt])},t.removeHooks=function(Tt){I[Tt]=[]},t.removeAllHooks=function(){I=gZ()},t}var yZ,cZ,Gze,Vze,Wze,xs,ol,Xx,g7,y7,qx,qze,uZ,Hx,Hze,Ik,u7,h7,q0,Uze,Yze,zl,vs,Ux,hZ,d7,f7,Kze,p7,Zze,dZ,fZ,m7,pZ,Dk,Qze,Jze,eGe,tGe,rGe,vZ,nGe,iGe,xZ,aGe,mZ,jx,sGe,oGe,gZ,Zs,H0=F(()=>{"use strict";({entries:yZ,setPrototypeOf:cZ,isFrozen:Gze,getPrototypeOf:Vze,getOwnPropertyDescriptor:Wze}=Object),{freeze:xs,seal:ol,create:Xx}=Object,{apply:g7,construct:y7}=typeof Reflect<"u"&&Reflect;xs||(xs=o(function(t){return t},"freeze"));ol||(ol=o(function(t){return t},"seal"));g7||(g7=o(function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;a1?r-1:0),i=1;i/gm),eGe=ol(/\$\{[\w\W]*/gm),tGe=ol(/^data-[\-\w.\u00B7-\uFFFF]+$/),rGe=ol(/^aria-[\-\w]+$/),vZ=ol(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),nGe=ol(/^(?:\w+script|data):/i),iGe=ol(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),xZ=ol(/^html$/i),aGe=ol(/^[a-z][.\w]*(-[.\w]+)+$/i),mZ=Object.freeze({__proto__:null,ARIA_ATTR:rGe,ATTR_WHITESPACE:iGe,CUSTOM_ELEMENT:aGe,DATA_ATTR:tGe,DOCTYPE_NAME:xZ,ERB_EXPR:Jze,IS_ALLOWED_URI:vZ,IS_SCRIPT_OR_DATA:nGe,MUSTACHE_EXPR:Qze,TMPLIT_EXPR:eGe}),jx={element:1,text:3,progressingInstruction:7,comment:8,document:9},sGe=o(function(){return typeof window>"u"?null:window},"getGlobal"),oGe=o(function(t,r){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return t.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),gZ=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(bZ,"createDOMPurify");Zs=bZ()});var KQ={};ir(KQ,{ParseError:()=>Pt,SETTINGS_SCHEMA:()=>Uk,__defineFunction:()=>Ut,__defineMacro:()=>Ce,__defineSymbol:()=>Y,__domTree:()=>XQ,__parse:()=>HQ,__renderToDomTree:()=>fS,__renderToHTMLTree:()=>YQ,__setFontMetrics:()=>tQ,default:()=>GVe,render:()=>o8,renderToString:()=>qQ,version:()=>jQ});function fGe(e){if("default"in e)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function bGe(e){for(var t=0;t=i[0]&&e<=i[1])return r.name}return null}function KZ(e){for(var t=0;t=Hk[t]&&e<=Hk[t+1])return!0;return!1}function NGe(e){if(e instanceof ws)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}function PGe(e){if(e instanceof Ad)return e;throw new Error("Expected span but got "+String(e)+".")}function tQ(e,t){Fc[e]=t}function X7(e,t,r){if(!Fc[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),i=Fc[t][n];if(!i&&e[0]in CZ&&(n=CZ[e[0]].charCodeAt(0),i=Fc[t][n]),!i&&r==="text"&&KZ(n)&&(i=Fc[t][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function BGe(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!v7[t]){var r=v7[t]={cssEmPerMu:Mk.quad[t]/18};for(var n in Mk)Mk.hasOwnProperty(n)&&(r[n]=Mk[n][t])}return v7[t]}function Y(e,t,r,n,i,a){ui[e][i]={font:t,group:r,replace:n},a&&n&&(ui[e][n]=ui[e][i])}function Ut(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(zk(s,t)),s=[]),a.push(n[l]));s.length>0&&a.push(zk(s,t));var h;r?(h=zk(ia(r,t,!0),t),h.classes=["tag"],a.push(h)):i&&a.push(i);var d=Mt(["katex-html"],a);if(d.setAttribute("aria-hidden","true"),h){var f=h.children[0];f.style.height=$t(d.height+d.depth),d.depth&&(f.style.verticalAlign=$t(-d.depth))}return d}function cQ(e){return new Sd(e)}function T7(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Ei&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Ei&&r.text===","}else return!1}function EZ(e,t,r,n,i){var a=Po(e,r),s;a.length===1&&a[0]instanceof Nt&&QGe.has(a[0].type)?s=a[0]:s=new Nt("mrow",a);var l=new Nt("annotation",[new Ei(t)]);l.setAttribute("encoding","application/x-tex");var u=new Nt("semantics",[s,l]),h=new Nt("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var d=i?"katex":"katex-mathml";return Mt([d],[h])}function Ur(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function sS(e){var t=oS(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function oS(e){return e&&(e.type==="atom"||FGe.hasOwnProperty(e.type))?e:null}function pQ(e,t){var r=ia(e.body,t,!0);return Mt([e.mclass],r,t)}function mQ(e,t){var r,n=Po(e.body,t);return e.mclass==="minner"?r=new Nt("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new Nt("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new Nt("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function cVe(e,t,r){var n=oVe[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[t[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[t[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function uVe(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Pt("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],i=[n],a=0;aAV".includes(h))for(var f=0;f<2;f++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=cVe(h,d,e),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=_Z()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function cS(e,t){var r=oS(e);if(r&&TVe.has(r.text))return r;throw r?new Pt("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Pt("Invalid delimiter type '"+e.type+"'",e)}function IZ(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Gc(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!d)&&y.pop(),x.length{"use strict";Pt=class e extends Error{static{o(this,"ParseError")}constructor(t,r){var n="KaTeX parse error: "+t,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var d;a+15e.replace(lGe,"-$1").toLowerCase(),"hyphenate"),cGe={"&":"&",">":">","<":"<",'"':""","'":"'"},uGe=/[&><"']/g,es=o(e=>String(e).replace(uGe,t=>cGe[t]),"escape"),qk=o(e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?qk(e.body[0]):e:e.type==="font"?qk(e.body):e,"getBaseElem"),hGe=new Set(["mathord","textord","atom"]),ih=o(e=>hGe.has(qk(e).type),"isCharacterBox"),dGe=o(e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},"protocolFromUrl"),Uk={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(e=>"#"+e,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((e,t)=>(t.push(e),t),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(e=>Math.max(0,e),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(e=>Math.max(0,e),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(e=>Math.max(0,e),"processor"),cli:"-e, --max-expand ",cliProcessor:o(e=>e==="Infinity"?1/0:parseInt(e),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(fGe,"getDefaultValue");eb=class{static{o(this,"Settings")}constructor(t){t===void 0&&(t={}),t=t||{};for(var r of Object.keys(Uk)){var n=Uk[r],i=t[r];this[r]=i!==void 0?n.processor?n.processor(i):i:fGe(n)}}reportNonstrict(t,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(t,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new Pt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var i=this.strict;if(typeof i=="function")try{i=i(t,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=dGe(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}},Bc=class{static{o(this,"Style")}constructor(t,r,n){this.id=t,this.size=r,this.cramped=n}sup(){return $c[pGe[this.id]]}sub(){return $c[mGe[this.id]]}fracNum(){return $c[gGe[this.id]]}fracDen(){return $c[yGe[this.id]]}cramp(){return $c[vGe[this.id]]}text(){return $c[xGe[this.id]]}isTight(){return this.size>=2}},j7=0,Yk=1,Y0=2,nh=3,tb=4,ll=5,j0=6,Cs=7,$c=[new Bc(j7,0,!1),new Bc(Yk,0,!0),new Bc(Y0,1,!1),new Bc(nh,1,!0),new Bc(tb,2,!1),new Bc(ll,2,!0),new Bc(j0,3,!1),new Bc(Cs,3,!0)],pGe=[tb,ll,tb,ll,j0,Cs,j0,Cs],mGe=[ll,ll,ll,ll,Cs,Cs,Cs,Cs],gGe=[Y0,nh,tb,ll,j0,Cs,j0,Cs],yGe=[nh,nh,ll,ll,Cs,Cs,Cs,Cs],vGe=[Yk,Yk,nh,nh,ll,ll,Cs,Cs],xGe=[j7,Yk,Y0,nh,Y0,nh,Y0,nh],Fr={DISPLAY:$c[j7],TEXT:$c[Y0],SCRIPT:$c[tb],SCRIPTSCRIPT:$c[j0]},I7=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(bGe,"scriptFromCodepoint");Hk=[];I7.forEach(e=>e.blocks.forEach(t=>Hk.push(...t)));o(KZ,"supportedCodepoint");na=o(e=>e+" "+e,"doubleBrushStroke"),U0=80,TGe=o(function(t,r){return"M95,"+(622+t+r)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+t/2.075+" -"+t+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+t)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtMain"),CGe=o(function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+t/2.084+" -"+t+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+t)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize1"),wGe=o(function(t,r){return"M983 "+(10+t+r)+` +l`+t/3.13+" -"+t+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize2"),kGe=o(function(t,r){return"M424,"+(2398+t+r)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+t)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` +h400000v`+(40+t)+"h-400000z"},"sqrtSize3"),SGe=o(function(t,r){return"M473,"+(2713+t+r)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},"sqrtSize4"),EGe=o(function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},"phasePath"),AGe=o(function(t,r,n){var i=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` +H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},"sqrtTall"),RGe=o(function(t,r,n){r=1e3*r;var i="";switch(t){case"sqrtMain":i=TGe(r,U0);break;case"sqrtSize1":i=CGe(r,U0);break;case"sqrtSize2":i=wGe(r,U0);break;case"sqrtSize3":i=kGe(r,U0);break;case"sqrtSize4":i=SGe(r,U0);break;case"sqrtTall":i=AGe(r,U0,n)}return i},"sqrtPath"),_Ge=o(function(t,r){switch(t){case"\u239C":return na("M291 0 H417 V"+r+" H291z");case"\u2223":return na("M145 0 H188 V"+r+" H145z");case"\u2225":return na("M145 0 H188 V"+r+" H145z")+na("M367 0 H410 V"+r+" H367z");case"\u239F":return na("M457 0 H583 V"+r+" H457z");case"\u23A2":return na("M319 0 H403 V"+r+" H319z");case"\u23A5":return na("M263 0 H347 V"+r+" H263z");case"\u23AA":return na("M384 0 H504 V"+r+" H384z");case"\u23D0":return na("M312 0 H355 V"+r+" H312z");case"\u2016":return na("M257 0 H300 V"+r+" H257z")+na("M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),TZ={doubleleftarrow:`M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:na("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:na("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:na("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:na("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:na("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:na("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:na("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:na("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},LGe=o(function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z +M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z +M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z +M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),Sd=class{static{o(this,"DocumentFragment")}constructor(t){this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(t).join("")}},M7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},DGe={ex:!0,em:!0,mu:!0},ZZ=o(function(t){return typeof t!="string"&&(t=t.unit),t in M7||t in DGe||t==="ex"},"validUnit"),xi=o(function(t,r){var n;if(t.unit in M7)n=M7[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,t.unit==="ex")n=i.fontMetrics().xHeight;else if(t.unit==="em")n=i.fontMetrics().quad;else throw new Pt("Invalid unit: '"+t.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},"calculateSize"),$t=o(function(t){return+t.toFixed(4)+"em"},"makeEm"),Ed=o(function(t){return t.filter(r=>r).join(" ")},"createClass"),QZ=o(function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),JZ=o(function(t){var r=document.createElement(t);r.className=Ed(this.classes);for(var n of Object.keys(this.style))r.style[n]=this.style[n];for(var i of Object.keys(this.attributes))r.setAttribute(i,this.attributes[i]);for(var a=0;a/=\x00-\x1f]/,eQ=o(function(t){var r="<"+t;this.classes.length&&(r+=' class="'+es(Ed(this.classes))+'"');var n="";for(var i of Object.keys(this.style))n+=Y7(i)+":"+this.style[i]+";";n&&(r+=' style="'+es(n)+'"');for(var a of Object.keys(this.attributes)){if(IGe.test(a))throw new Pt("Invalid attribute name '"+a+"'");r+=" "+a+'="'+es(this.attributes[a])+'"'}r+=">";for(var s=0;s",r},"toMarkup"),Ad=class{static{o(this,"Span")}constructor(t,r,n,i){QZ.call(this,t,n,i),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return JZ.call(this,"span")}toMarkup(){return eQ.call(this,"span")}},X0=class{static{o(this,"Anchor")}constructor(t,r,n,i){QZ.call(this,r,i),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return JZ.call(this,"a")}toMarkup(){return eQ.call(this,"a")}},N7=class{static{o(this,"Img")}constructor(t,r,n){this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");t.src=this.src,t.alt=this.alt,t.className="mord";for(var r of Object.keys(this.style))t.style[r]=this.style[r];return t}toMarkup(){var t=''+es(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=$t(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Ed(this.classes));for(var n of Object.keys(this.style))r=r||document.createElement("span"),r.style[n]=this.style[n];return r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+$t(this.italic)+";");for(var i of Object.keys(this.style))n+=Y7(i)+":"+this.style[i]+";";n&&(t=!0,r+=' style="'+es(n)+'"');var a=es(this.text);return t?(r+=">",r+=a,r+="",r):a}},Gl=class{static{o(this,"SvgNode")}constructor(t,r){this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},rb=class{static{o(this,"LineNode")}constructor(t){this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t="e instanceof Ad||e instanceof X0||e instanceof Sd,"hasHtmlDomChildren"),Fc={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Mk={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},CZ={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(tQ,"setFontMetrics");o(X7,"getCharacterMetrics");v7={};o(BGe,"getGlobalMetrics");$Ge={bin:1,close:1,inner:1,open:1,punct:1,rel:1},FGe={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ui={math:{},text:{}};o(Y,"defineSymbol");ee="math",Lt="text",pe="main",ze="ams",hi="accent-token",jt="bin",ks="close",Q0="inner",xr="mathord",Hi="op-token",No="open",ib="punct",Ve="rel",ah="spacing",Ue="textord";Y(ee,pe,Ve,"\u2261","\\equiv",!0);Y(ee,pe,Ve,"\u227A","\\prec",!0);Y(ee,pe,Ve,"\u227B","\\succ",!0);Y(ee,pe,Ve,"\u223C","\\sim",!0);Y(ee,pe,Ve,"\u22A5","\\perp");Y(ee,pe,Ve,"\u2AAF","\\preceq",!0);Y(ee,pe,Ve,"\u2AB0","\\succeq",!0);Y(ee,pe,Ve,"\u2243","\\simeq",!0);Y(ee,pe,Ve,"\u2223","\\mid",!0);Y(ee,pe,Ve,"\u226A","\\ll",!0);Y(ee,pe,Ve,"\u226B","\\gg",!0);Y(ee,pe,Ve,"\u224D","\\asymp",!0);Y(ee,pe,Ve,"\u2225","\\parallel");Y(ee,pe,Ve,"\u22C8","\\bowtie",!0);Y(ee,pe,Ve,"\u2323","\\smile",!0);Y(ee,pe,Ve,"\u2291","\\sqsubseteq",!0);Y(ee,pe,Ve,"\u2292","\\sqsupseteq",!0);Y(ee,pe,Ve,"\u2250","\\doteq",!0);Y(ee,pe,Ve,"\u2322","\\frown",!0);Y(ee,pe,Ve,"\u220B","\\ni",!0);Y(ee,pe,Ve,"\u221D","\\propto",!0);Y(ee,pe,Ve,"\u22A2","\\vdash",!0);Y(ee,pe,Ve,"\u22A3","\\dashv",!0);Y(ee,pe,Ve,"\u220B","\\owns");Y(ee,pe,ib,".","\\ldotp");Y(ee,pe,ib,"\u22C5","\\cdotp");Y(ee,pe,ib,"\u22C5","\xB7");Y(Lt,pe,Ue,"\u22C5","\xB7");Y(ee,pe,Ue,"#","\\#");Y(Lt,pe,Ue,"#","\\#");Y(ee,pe,Ue,"&","\\&");Y(Lt,pe,Ue,"&","\\&");Y(ee,pe,Ue,"\u2135","\\aleph",!0);Y(ee,pe,Ue,"\u2200","\\forall",!0);Y(ee,pe,Ue,"\u210F","\\hbar",!0);Y(ee,pe,Ue,"\u2203","\\exists",!0);Y(ee,pe,Ue,"\u2207","\\nabla",!0);Y(ee,pe,Ue,"\u266D","\\flat",!0);Y(ee,pe,Ue,"\u2113","\\ell",!0);Y(ee,pe,Ue,"\u266E","\\natural",!0);Y(ee,pe,Ue,"\u2663","\\clubsuit",!0);Y(ee,pe,Ue,"\u2118","\\wp",!0);Y(ee,pe,Ue,"\u266F","\\sharp",!0);Y(ee,pe,Ue,"\u2662","\\diamondsuit",!0);Y(ee,pe,Ue,"\u211C","\\Re",!0);Y(ee,pe,Ue,"\u2661","\\heartsuit",!0);Y(ee,pe,Ue,"\u2111","\\Im",!0);Y(ee,pe,Ue,"\u2660","\\spadesuit",!0);Y(ee,pe,Ue,"\xA7","\\S",!0);Y(Lt,pe,Ue,"\xA7","\\S");Y(ee,pe,Ue,"\xB6","\\P",!0);Y(Lt,pe,Ue,"\xB6","\\P");Y(ee,pe,Ue,"\u2020","\\dag");Y(Lt,pe,Ue,"\u2020","\\dag");Y(Lt,pe,Ue,"\u2020","\\textdagger");Y(ee,pe,Ue,"\u2021","\\ddag");Y(Lt,pe,Ue,"\u2021","\\ddag");Y(Lt,pe,Ue,"\u2021","\\textdaggerdbl");Y(ee,pe,ks,"\u23B1","\\rmoustache",!0);Y(ee,pe,No,"\u23B0","\\lmoustache",!0);Y(ee,pe,ks,"\u27EF","\\rgroup",!0);Y(ee,pe,No,"\u27EE","\\lgroup",!0);Y(ee,pe,jt,"\u2213","\\mp",!0);Y(ee,pe,jt,"\u2296","\\ominus",!0);Y(ee,pe,jt,"\u228E","\\uplus",!0);Y(ee,pe,jt,"\u2293","\\sqcap",!0);Y(ee,pe,jt,"\u2217","\\ast");Y(ee,pe,jt,"\u2294","\\sqcup",!0);Y(ee,pe,jt,"\u25EF","\\bigcirc",!0);Y(ee,pe,jt,"\u2219","\\bullet",!0);Y(ee,pe,jt,"\u2021","\\ddagger");Y(ee,pe,jt,"\u2240","\\wr",!0);Y(ee,pe,jt,"\u2A3F","\\amalg");Y(ee,pe,jt,"&","\\And");Y(ee,pe,Ve,"\u27F5","\\longleftarrow",!0);Y(ee,pe,Ve,"\u21D0","\\Leftarrow",!0);Y(ee,pe,Ve,"\u27F8","\\Longleftarrow",!0);Y(ee,pe,Ve,"\u27F6","\\longrightarrow",!0);Y(ee,pe,Ve,"\u21D2","\\Rightarrow",!0);Y(ee,pe,Ve,"\u27F9","\\Longrightarrow",!0);Y(ee,pe,Ve,"\u2194","\\leftrightarrow",!0);Y(ee,pe,Ve,"\u27F7","\\longleftrightarrow",!0);Y(ee,pe,Ve,"\u21D4","\\Leftrightarrow",!0);Y(ee,pe,Ve,"\u27FA","\\Longleftrightarrow",!0);Y(ee,pe,Ve,"\u21A6","\\mapsto",!0);Y(ee,pe,Ve,"\u27FC","\\longmapsto",!0);Y(ee,pe,Ve,"\u2197","\\nearrow",!0);Y(ee,pe,Ve,"\u21A9","\\hookleftarrow",!0);Y(ee,pe,Ve,"\u21AA","\\hookrightarrow",!0);Y(ee,pe,Ve,"\u2198","\\searrow",!0);Y(ee,pe,Ve,"\u21BC","\\leftharpoonup",!0);Y(ee,pe,Ve,"\u21C0","\\rightharpoonup",!0);Y(ee,pe,Ve,"\u2199","\\swarrow",!0);Y(ee,pe,Ve,"\u21BD","\\leftharpoondown",!0);Y(ee,pe,Ve,"\u21C1","\\rightharpoondown",!0);Y(ee,pe,Ve,"\u2196","\\nwarrow",!0);Y(ee,pe,Ve,"\u21CC","\\rightleftharpoons",!0);Y(ee,ze,Ve,"\u226E","\\nless",!0);Y(ee,ze,Ve,"\uE010","\\@nleqslant");Y(ee,ze,Ve,"\uE011","\\@nleqq");Y(ee,ze,Ve,"\u2A87","\\lneq",!0);Y(ee,ze,Ve,"\u2268","\\lneqq",!0);Y(ee,ze,Ve,"\uE00C","\\@lvertneqq");Y(ee,ze,Ve,"\u22E6","\\lnsim",!0);Y(ee,ze,Ve,"\u2A89","\\lnapprox",!0);Y(ee,ze,Ve,"\u2280","\\nprec",!0);Y(ee,ze,Ve,"\u22E0","\\npreceq",!0);Y(ee,ze,Ve,"\u22E8","\\precnsim",!0);Y(ee,ze,Ve,"\u2AB9","\\precnapprox",!0);Y(ee,ze,Ve,"\u2241","\\nsim",!0);Y(ee,ze,Ve,"\uE006","\\@nshortmid");Y(ee,ze,Ve,"\u2224","\\nmid",!0);Y(ee,ze,Ve,"\u22AC","\\nvdash",!0);Y(ee,ze,Ve,"\u22AD","\\nvDash",!0);Y(ee,ze,Ve,"\u22EA","\\ntriangleleft");Y(ee,ze,Ve,"\u22EC","\\ntrianglelefteq",!0);Y(ee,ze,Ve,"\u228A","\\subsetneq",!0);Y(ee,ze,Ve,"\uE01A","\\@varsubsetneq");Y(ee,ze,Ve,"\u2ACB","\\subsetneqq",!0);Y(ee,ze,Ve,"\uE017","\\@varsubsetneqq");Y(ee,ze,Ve,"\u226F","\\ngtr",!0);Y(ee,ze,Ve,"\uE00F","\\@ngeqslant");Y(ee,ze,Ve,"\uE00E","\\@ngeqq");Y(ee,ze,Ve,"\u2A88","\\gneq",!0);Y(ee,ze,Ve,"\u2269","\\gneqq",!0);Y(ee,ze,Ve,"\uE00D","\\@gvertneqq");Y(ee,ze,Ve,"\u22E7","\\gnsim",!0);Y(ee,ze,Ve,"\u2A8A","\\gnapprox",!0);Y(ee,ze,Ve,"\u2281","\\nsucc",!0);Y(ee,ze,Ve,"\u22E1","\\nsucceq",!0);Y(ee,ze,Ve,"\u22E9","\\succnsim",!0);Y(ee,ze,Ve,"\u2ABA","\\succnapprox",!0);Y(ee,ze,Ve,"\u2246","\\ncong",!0);Y(ee,ze,Ve,"\uE007","\\@nshortparallel");Y(ee,ze,Ve,"\u2226","\\nparallel",!0);Y(ee,ze,Ve,"\u22AF","\\nVDash",!0);Y(ee,ze,Ve,"\u22EB","\\ntriangleright");Y(ee,ze,Ve,"\u22ED","\\ntrianglerighteq",!0);Y(ee,ze,Ve,"\uE018","\\@nsupseteqq");Y(ee,ze,Ve,"\u228B","\\supsetneq",!0);Y(ee,ze,Ve,"\uE01B","\\@varsupsetneq");Y(ee,ze,Ve,"\u2ACC","\\supsetneqq",!0);Y(ee,ze,Ve,"\uE019","\\@varsupsetneqq");Y(ee,ze,Ve,"\u22AE","\\nVdash",!0);Y(ee,ze,Ve,"\u2AB5","\\precneqq",!0);Y(ee,ze,Ve,"\u2AB6","\\succneqq",!0);Y(ee,ze,Ve,"\uE016","\\@nsubseteqq");Y(ee,ze,jt,"\u22B4","\\unlhd");Y(ee,ze,jt,"\u22B5","\\unrhd");Y(ee,ze,Ve,"\u219A","\\nleftarrow",!0);Y(ee,ze,Ve,"\u219B","\\nrightarrow",!0);Y(ee,ze,Ve,"\u21CD","\\nLeftarrow",!0);Y(ee,ze,Ve,"\u21CF","\\nRightarrow",!0);Y(ee,ze,Ve,"\u21AE","\\nleftrightarrow",!0);Y(ee,ze,Ve,"\u21CE","\\nLeftrightarrow",!0);Y(ee,ze,Ve,"\u25B3","\\vartriangle");Y(ee,ze,Ue,"\u210F","\\hslash");Y(ee,ze,Ue,"\u25BD","\\triangledown");Y(ee,ze,Ue,"\u25CA","\\lozenge");Y(ee,ze,Ue,"\u24C8","\\circledS");Y(ee,ze,Ue,"\xAE","\\circledR");Y(Lt,ze,Ue,"\xAE","\\circledR");Y(ee,ze,Ue,"\u2221","\\measuredangle",!0);Y(ee,ze,Ue,"\u2204","\\nexists");Y(ee,ze,Ue,"\u2127","\\mho");Y(ee,ze,Ue,"\u2132","\\Finv",!0);Y(ee,ze,Ue,"\u2141","\\Game",!0);Y(ee,ze,Ue,"\u2035","\\backprime");Y(ee,ze,Ue,"\u25B2","\\blacktriangle");Y(ee,ze,Ue,"\u25BC","\\blacktriangledown");Y(ee,ze,Ue,"\u25A0","\\blacksquare");Y(ee,ze,Ue,"\u29EB","\\blacklozenge");Y(ee,ze,Ue,"\u2605","\\bigstar");Y(ee,ze,Ue,"\u2222","\\sphericalangle",!0);Y(ee,ze,Ue,"\u2201","\\complement",!0);Y(ee,ze,Ue,"\xF0","\\eth",!0);Y(Lt,pe,Ue,"\xF0","\xF0");Y(ee,ze,Ue,"\u2571","\\diagup");Y(ee,ze,Ue,"\u2572","\\diagdown");Y(ee,ze,Ue,"\u25A1","\\square");Y(ee,ze,Ue,"\u25A1","\\Box");Y(ee,ze,Ue,"\u25CA","\\Diamond");Y(ee,ze,Ue,"\xA5","\\yen",!0);Y(Lt,ze,Ue,"\xA5","\\yen",!0);Y(ee,ze,Ue,"\u2713","\\checkmark",!0);Y(Lt,ze,Ue,"\u2713","\\checkmark");Y(ee,ze,Ue,"\u2136","\\beth",!0);Y(ee,ze,Ue,"\u2138","\\daleth",!0);Y(ee,ze,Ue,"\u2137","\\gimel",!0);Y(ee,ze,Ue,"\u03DD","\\digamma",!0);Y(ee,ze,Ue,"\u03F0","\\varkappa");Y(ee,ze,No,"\u250C","\\@ulcorner",!0);Y(ee,ze,ks,"\u2510","\\@urcorner",!0);Y(ee,ze,No,"\u2514","\\@llcorner",!0);Y(ee,ze,ks,"\u2518","\\@lrcorner",!0);Y(ee,ze,Ve,"\u2266","\\leqq",!0);Y(ee,ze,Ve,"\u2A7D","\\leqslant",!0);Y(ee,ze,Ve,"\u2A95","\\eqslantless",!0);Y(ee,ze,Ve,"\u2272","\\lesssim",!0);Y(ee,ze,Ve,"\u2A85","\\lessapprox",!0);Y(ee,ze,Ve,"\u224A","\\approxeq",!0);Y(ee,ze,jt,"\u22D6","\\lessdot");Y(ee,ze,Ve,"\u22D8","\\lll",!0);Y(ee,ze,Ve,"\u2276","\\lessgtr",!0);Y(ee,ze,Ve,"\u22DA","\\lesseqgtr",!0);Y(ee,ze,Ve,"\u2A8B","\\lesseqqgtr",!0);Y(ee,ze,Ve,"\u2251","\\doteqdot");Y(ee,ze,Ve,"\u2253","\\risingdotseq",!0);Y(ee,ze,Ve,"\u2252","\\fallingdotseq",!0);Y(ee,ze,Ve,"\u223D","\\backsim",!0);Y(ee,ze,Ve,"\u22CD","\\backsimeq",!0);Y(ee,ze,Ve,"\u2AC5","\\subseteqq",!0);Y(ee,ze,Ve,"\u22D0","\\Subset",!0);Y(ee,ze,Ve,"\u228F","\\sqsubset",!0);Y(ee,ze,Ve,"\u227C","\\preccurlyeq",!0);Y(ee,ze,Ve,"\u22DE","\\curlyeqprec",!0);Y(ee,ze,Ve,"\u227E","\\precsim",!0);Y(ee,ze,Ve,"\u2AB7","\\precapprox",!0);Y(ee,ze,Ve,"\u22B2","\\vartriangleleft");Y(ee,ze,Ve,"\u22B4","\\trianglelefteq");Y(ee,ze,Ve,"\u22A8","\\vDash",!0);Y(ee,ze,Ve,"\u22AA","\\Vvdash",!0);Y(ee,ze,Ve,"\u2323","\\smallsmile");Y(ee,ze,Ve,"\u2322","\\smallfrown");Y(ee,ze,Ve,"\u224F","\\bumpeq",!0);Y(ee,ze,Ve,"\u224E","\\Bumpeq",!0);Y(ee,ze,Ve,"\u2267","\\geqq",!0);Y(ee,ze,Ve,"\u2A7E","\\geqslant",!0);Y(ee,ze,Ve,"\u2A96","\\eqslantgtr",!0);Y(ee,ze,Ve,"\u2273","\\gtrsim",!0);Y(ee,ze,Ve,"\u2A86","\\gtrapprox",!0);Y(ee,ze,jt,"\u22D7","\\gtrdot");Y(ee,ze,Ve,"\u22D9","\\ggg",!0);Y(ee,ze,Ve,"\u2277","\\gtrless",!0);Y(ee,ze,Ve,"\u22DB","\\gtreqless",!0);Y(ee,ze,Ve,"\u2A8C","\\gtreqqless",!0);Y(ee,ze,Ve,"\u2256","\\eqcirc",!0);Y(ee,ze,Ve,"\u2257","\\circeq",!0);Y(ee,ze,Ve,"\u225C","\\triangleq",!0);Y(ee,ze,Ve,"\u223C","\\thicksim");Y(ee,ze,Ve,"\u2248","\\thickapprox");Y(ee,ze,Ve,"\u2AC6","\\supseteqq",!0);Y(ee,ze,Ve,"\u22D1","\\Supset",!0);Y(ee,ze,Ve,"\u2290","\\sqsupset",!0);Y(ee,ze,Ve,"\u227D","\\succcurlyeq",!0);Y(ee,ze,Ve,"\u22DF","\\curlyeqsucc",!0);Y(ee,ze,Ve,"\u227F","\\succsim",!0);Y(ee,ze,Ve,"\u2AB8","\\succapprox",!0);Y(ee,ze,Ve,"\u22B3","\\vartriangleright");Y(ee,ze,Ve,"\u22B5","\\trianglerighteq");Y(ee,ze,Ve,"\u22A9","\\Vdash",!0);Y(ee,ze,Ve,"\u2223","\\shortmid");Y(ee,ze,Ve,"\u2225","\\shortparallel");Y(ee,ze,Ve,"\u226C","\\between",!0);Y(ee,ze,Ve,"\u22D4","\\pitchfork",!0);Y(ee,ze,Ve,"\u221D","\\varpropto");Y(ee,ze,Ve,"\u25C0","\\blacktriangleleft");Y(ee,ze,Ve,"\u2234","\\therefore",!0);Y(ee,ze,Ve,"\u220D","\\backepsilon");Y(ee,ze,Ve,"\u25B6","\\blacktriangleright");Y(ee,ze,Ve,"\u2235","\\because",!0);Y(ee,ze,Ve,"\u22D8","\\llless");Y(ee,ze,Ve,"\u22D9","\\gggtr");Y(ee,ze,jt,"\u22B2","\\lhd");Y(ee,ze,jt,"\u22B3","\\rhd");Y(ee,ze,Ve,"\u2242","\\eqsim",!0);Y(ee,pe,Ve,"\u22C8","\\Join");Y(ee,ze,Ve,"\u2251","\\Doteq",!0);Y(ee,ze,jt,"\u2214","\\dotplus",!0);Y(ee,ze,jt,"\u2216","\\smallsetminus");Y(ee,ze,jt,"\u22D2","\\Cap",!0);Y(ee,ze,jt,"\u22D3","\\Cup",!0);Y(ee,ze,jt,"\u2A5E","\\doublebarwedge",!0);Y(ee,ze,jt,"\u229F","\\boxminus",!0);Y(ee,ze,jt,"\u229E","\\boxplus",!0);Y(ee,ze,jt,"\u22C7","\\divideontimes",!0);Y(ee,ze,jt,"\u22C9","\\ltimes",!0);Y(ee,ze,jt,"\u22CA","\\rtimes",!0);Y(ee,ze,jt,"\u22CB","\\leftthreetimes",!0);Y(ee,ze,jt,"\u22CC","\\rightthreetimes",!0);Y(ee,ze,jt,"\u22CF","\\curlywedge",!0);Y(ee,ze,jt,"\u22CE","\\curlyvee",!0);Y(ee,ze,jt,"\u229D","\\circleddash",!0);Y(ee,ze,jt,"\u229B","\\circledast",!0);Y(ee,ze,jt,"\u22C5","\\centerdot");Y(ee,ze,jt,"\u22BA","\\intercal",!0);Y(ee,ze,jt,"\u22D2","\\doublecap");Y(ee,ze,jt,"\u22D3","\\doublecup");Y(ee,ze,jt,"\u22A0","\\boxtimes",!0);Y(ee,ze,Ve,"\u21E2","\\dashrightarrow",!0);Y(ee,ze,Ve,"\u21E0","\\dashleftarrow",!0);Y(ee,ze,Ve,"\u21C7","\\leftleftarrows",!0);Y(ee,ze,Ve,"\u21C6","\\leftrightarrows",!0);Y(ee,ze,Ve,"\u21DA","\\Lleftarrow",!0);Y(ee,ze,Ve,"\u219E","\\twoheadleftarrow",!0);Y(ee,ze,Ve,"\u21A2","\\leftarrowtail",!0);Y(ee,ze,Ve,"\u21AB","\\looparrowleft",!0);Y(ee,ze,Ve,"\u21CB","\\leftrightharpoons",!0);Y(ee,ze,Ve,"\u21B6","\\curvearrowleft",!0);Y(ee,ze,Ve,"\u21BA","\\circlearrowleft",!0);Y(ee,ze,Ve,"\u21B0","\\Lsh",!0);Y(ee,ze,Ve,"\u21C8","\\upuparrows",!0);Y(ee,ze,Ve,"\u21BF","\\upharpoonleft",!0);Y(ee,ze,Ve,"\u21C3","\\downharpoonleft",!0);Y(ee,pe,Ve,"\u22B6","\\origof",!0);Y(ee,pe,Ve,"\u22B7","\\imageof",!0);Y(ee,ze,Ve,"\u22B8","\\multimap",!0);Y(ee,ze,Ve,"\u21AD","\\leftrightsquigarrow",!0);Y(ee,ze,Ve,"\u21C9","\\rightrightarrows",!0);Y(ee,ze,Ve,"\u21C4","\\rightleftarrows",!0);Y(ee,ze,Ve,"\u21A0","\\twoheadrightarrow",!0);Y(ee,ze,Ve,"\u21A3","\\rightarrowtail",!0);Y(ee,ze,Ve,"\u21AC","\\looparrowright",!0);Y(ee,ze,Ve,"\u21B7","\\curvearrowright",!0);Y(ee,ze,Ve,"\u21BB","\\circlearrowright",!0);Y(ee,ze,Ve,"\u21B1","\\Rsh",!0);Y(ee,ze,Ve,"\u21CA","\\downdownarrows",!0);Y(ee,ze,Ve,"\u21BE","\\upharpoonright",!0);Y(ee,ze,Ve,"\u21C2","\\downharpoonright",!0);Y(ee,ze,Ve,"\u21DD","\\rightsquigarrow",!0);Y(ee,ze,Ve,"\u21DD","\\leadsto");Y(ee,ze,Ve,"\u21DB","\\Rrightarrow",!0);Y(ee,ze,Ve,"\u21BE","\\restriction");Y(ee,pe,Ue,"\u2018","`");Y(ee,pe,Ue,"$","\\$");Y(Lt,pe,Ue,"$","\\$");Y(Lt,pe,Ue,"$","\\textdollar");Y(ee,pe,Ue,"%","\\%");Y(Lt,pe,Ue,"%","\\%");Y(ee,pe,Ue,"_","\\_");Y(Lt,pe,Ue,"_","\\_");Y(Lt,pe,Ue,"_","\\textunderscore");Y(ee,pe,Ue,"\u2220","\\angle",!0);Y(ee,pe,Ue,"\u221E","\\infty",!0);Y(ee,pe,Ue,"\u2032","\\prime");Y(ee,pe,Ue,"\u25B3","\\triangle");Y(ee,pe,Ue,"\u0393","\\Gamma",!0);Y(ee,pe,Ue,"\u0394","\\Delta",!0);Y(ee,pe,Ue,"\u0398","\\Theta",!0);Y(ee,pe,Ue,"\u039B","\\Lambda",!0);Y(ee,pe,Ue,"\u039E","\\Xi",!0);Y(ee,pe,Ue,"\u03A0","\\Pi",!0);Y(ee,pe,Ue,"\u03A3","\\Sigma",!0);Y(ee,pe,Ue,"\u03A5","\\Upsilon",!0);Y(ee,pe,Ue,"\u03A6","\\Phi",!0);Y(ee,pe,Ue,"\u03A8","\\Psi",!0);Y(ee,pe,Ue,"\u03A9","\\Omega",!0);Y(ee,pe,Ue,"A","\u0391");Y(ee,pe,Ue,"B","\u0392");Y(ee,pe,Ue,"E","\u0395");Y(ee,pe,Ue,"Z","\u0396");Y(ee,pe,Ue,"H","\u0397");Y(ee,pe,Ue,"I","\u0399");Y(ee,pe,Ue,"K","\u039A");Y(ee,pe,Ue,"M","\u039C");Y(ee,pe,Ue,"N","\u039D");Y(ee,pe,Ue,"O","\u039F");Y(ee,pe,Ue,"P","\u03A1");Y(ee,pe,Ue,"T","\u03A4");Y(ee,pe,Ue,"X","\u03A7");Y(ee,pe,Ue,"\xAC","\\neg",!0);Y(ee,pe,Ue,"\xAC","\\lnot");Y(ee,pe,Ue,"\u22A4","\\top");Y(ee,pe,Ue,"\u22A5","\\bot");Y(ee,pe,Ue,"\u2205","\\emptyset");Y(ee,ze,Ue,"\u2205","\\varnothing");Y(ee,pe,xr,"\u03B1","\\alpha",!0);Y(ee,pe,xr,"\u03B2","\\beta",!0);Y(ee,pe,xr,"\u03B3","\\gamma",!0);Y(ee,pe,xr,"\u03B4","\\delta",!0);Y(ee,pe,xr,"\u03F5","\\epsilon",!0);Y(ee,pe,xr,"\u03B6","\\zeta",!0);Y(ee,pe,xr,"\u03B7","\\eta",!0);Y(ee,pe,xr,"\u03B8","\\theta",!0);Y(ee,pe,xr,"\u03B9","\\iota",!0);Y(ee,pe,xr,"\u03BA","\\kappa",!0);Y(ee,pe,xr,"\u03BB","\\lambda",!0);Y(ee,pe,xr,"\u03BC","\\mu",!0);Y(ee,pe,xr,"\u03BD","\\nu",!0);Y(ee,pe,xr,"\u03BE","\\xi",!0);Y(ee,pe,xr,"\u03BF","\\omicron",!0);Y(ee,pe,xr,"\u03C0","\\pi",!0);Y(ee,pe,xr,"\u03C1","\\rho",!0);Y(ee,pe,xr,"\u03C3","\\sigma",!0);Y(ee,pe,xr,"\u03C4","\\tau",!0);Y(ee,pe,xr,"\u03C5","\\upsilon",!0);Y(ee,pe,xr,"\u03D5","\\phi",!0);Y(ee,pe,xr,"\u03C7","\\chi",!0);Y(ee,pe,xr,"\u03C8","\\psi",!0);Y(ee,pe,xr,"\u03C9","\\omega",!0);Y(ee,pe,xr,"\u03B5","\\varepsilon",!0);Y(ee,pe,xr,"\u03D1","\\vartheta",!0);Y(ee,pe,xr,"\u03D6","\\varpi",!0);Y(ee,pe,xr,"\u03F1","\\varrho",!0);Y(ee,pe,xr,"\u03C2","\\varsigma",!0);Y(ee,pe,xr,"\u03C6","\\varphi",!0);Y(ee,pe,jt,"\u2217","*",!0);Y(ee,pe,jt,"+","+");Y(ee,pe,jt,"\u2212","-",!0);Y(ee,pe,jt,"\u22C5","\\cdot",!0);Y(ee,pe,jt,"\u2218","\\circ",!0);Y(ee,pe,jt,"\xF7","\\div",!0);Y(ee,pe,jt,"\xB1","\\pm",!0);Y(ee,pe,jt,"\xD7","\\times",!0);Y(ee,pe,jt,"\u2229","\\cap",!0);Y(ee,pe,jt,"\u222A","\\cup",!0);Y(ee,pe,jt,"\u2216","\\setminus",!0);Y(ee,pe,jt,"\u2227","\\land");Y(ee,pe,jt,"\u2228","\\lor");Y(ee,pe,jt,"\u2227","\\wedge",!0);Y(ee,pe,jt,"\u2228","\\vee",!0);Y(ee,pe,Ue,"\u221A","\\surd");Y(ee,pe,No,"\u27E8","\\langle",!0);Y(ee,pe,No,"\u2223","\\lvert");Y(ee,pe,No,"\u2225","\\lVert");Y(ee,pe,ks,"?","?");Y(ee,pe,ks,"!","!");Y(ee,pe,ks,"\u27E9","\\rangle",!0);Y(ee,pe,ks,"\u2223","\\rvert");Y(ee,pe,ks,"\u2225","\\rVert");Y(ee,pe,Ve,"=","=");Y(ee,pe,Ve,":",":");Y(ee,pe,Ve,"\u2248","\\approx",!0);Y(ee,pe,Ve,"\u2245","\\cong",!0);Y(ee,pe,Ve,"\u2265","\\ge");Y(ee,pe,Ve,"\u2265","\\geq",!0);Y(ee,pe,Ve,"\u2190","\\gets");Y(ee,pe,Ve,">","\\gt",!0);Y(ee,pe,Ve,"\u2208","\\in",!0);Y(ee,pe,Ve,"\uE020","\\@not");Y(ee,pe,Ve,"\u2282","\\subset",!0);Y(ee,pe,Ve,"\u2283","\\supset",!0);Y(ee,pe,Ve,"\u2286","\\subseteq",!0);Y(ee,pe,Ve,"\u2287","\\supseteq",!0);Y(ee,ze,Ve,"\u2288","\\nsubseteq",!0);Y(ee,ze,Ve,"\u2289","\\nsupseteq",!0);Y(ee,pe,Ve,"\u22A8","\\models");Y(ee,pe,Ve,"\u2190","\\leftarrow",!0);Y(ee,pe,Ve,"\u2264","\\le");Y(ee,pe,Ve,"\u2264","\\leq",!0);Y(ee,pe,Ve,"<","\\lt",!0);Y(ee,pe,Ve,"\u2192","\\rightarrow",!0);Y(ee,pe,Ve,"\u2192","\\to");Y(ee,ze,Ve,"\u2271","\\ngeq",!0);Y(ee,ze,Ve,"\u2270","\\nleq",!0);Y(ee,pe,ah,"\xA0","\\ ");Y(ee,pe,ah,"\xA0","\\space");Y(ee,pe,ah,"\xA0","\\nobreakspace");Y(Lt,pe,ah,"\xA0","\\ ");Y(Lt,pe,ah,"\xA0"," ");Y(Lt,pe,ah,"\xA0","\\space");Y(Lt,pe,ah,"\xA0","\\nobreakspace");Y(ee,pe,ah,null,"\\nobreak");Y(ee,pe,ah,null,"\\allowbreak");Y(ee,pe,ib,",",",");Y(ee,pe,ib,";",";");Y(ee,ze,jt,"\u22BC","\\barwedge",!0);Y(ee,ze,jt,"\u22BB","\\veebar",!0);Y(ee,pe,jt,"\u2299","\\odot",!0);Y(ee,pe,jt,"\u2295","\\oplus",!0);Y(ee,pe,jt,"\u2297","\\otimes",!0);Y(ee,pe,Ue,"\u2202","\\partial",!0);Y(ee,pe,jt,"\u2298","\\oslash",!0);Y(ee,ze,jt,"\u229A","\\circledcirc",!0);Y(ee,ze,jt,"\u22A1","\\boxdot",!0);Y(ee,pe,jt,"\u25B3","\\bigtriangleup");Y(ee,pe,jt,"\u25BD","\\bigtriangledown");Y(ee,pe,jt,"\u2020","\\dagger");Y(ee,pe,jt,"\u22C4","\\diamond");Y(ee,pe,jt,"\u22C6","\\star");Y(ee,pe,jt,"\u25C3","\\triangleleft");Y(ee,pe,jt,"\u25B9","\\triangleright");Y(ee,pe,No,"{","\\{");Y(Lt,pe,Ue,"{","\\{");Y(Lt,pe,Ue,"{","\\textbraceleft");Y(ee,pe,ks,"}","\\}");Y(Lt,pe,Ue,"}","\\}");Y(Lt,pe,Ue,"}","\\textbraceright");Y(ee,pe,No,"{","\\lbrace");Y(ee,pe,ks,"}","\\rbrace");Y(ee,pe,No,"[","\\lbrack",!0);Y(Lt,pe,Ue,"[","\\lbrack",!0);Y(ee,pe,ks,"]","\\rbrack",!0);Y(Lt,pe,Ue,"]","\\rbrack",!0);Y(ee,pe,No,"(","\\lparen",!0);Y(ee,pe,ks,")","\\rparen",!0);Y(Lt,pe,Ue,"<","\\textless",!0);Y(Lt,pe,Ue,">","\\textgreater",!0);Y(ee,pe,No,"\u230A","\\lfloor",!0);Y(ee,pe,ks,"\u230B","\\rfloor",!0);Y(ee,pe,No,"\u2308","\\lceil",!0);Y(ee,pe,ks,"\u2309","\\rceil",!0);Y(ee,pe,Ue,"\\","\\backslash");Y(ee,pe,Ue,"\u2223","|");Y(ee,pe,Ue,"\u2223","\\vert");Y(Lt,pe,Ue,"|","\\textbar",!0);Y(ee,pe,Ue,"\u2225","\\|");Y(ee,pe,Ue,"\u2225","\\Vert");Y(Lt,pe,Ue,"\u2225","\\textbardbl");Y(Lt,pe,Ue,"~","\\textasciitilde");Y(Lt,pe,Ue,"\\","\\textbackslash");Y(Lt,pe,Ue,"^","\\textasciicircum");Y(ee,pe,Ve,"\u2191","\\uparrow",!0);Y(ee,pe,Ve,"\u21D1","\\Uparrow",!0);Y(ee,pe,Ve,"\u2193","\\downarrow",!0);Y(ee,pe,Ve,"\u21D3","\\Downarrow",!0);Y(ee,pe,Ve,"\u2195","\\updownarrow",!0);Y(ee,pe,Ve,"\u21D5","\\Updownarrow",!0);Y(ee,pe,Hi,"\u2210","\\coprod");Y(ee,pe,Hi,"\u22C1","\\bigvee");Y(ee,pe,Hi,"\u22C0","\\bigwedge");Y(ee,pe,Hi,"\u2A04","\\biguplus");Y(ee,pe,Hi,"\u22C2","\\bigcap");Y(ee,pe,Hi,"\u22C3","\\bigcup");Y(ee,pe,Hi,"\u222B","\\int");Y(ee,pe,Hi,"\u222B","\\intop");Y(ee,pe,Hi,"\u222C","\\iint");Y(ee,pe,Hi,"\u222D","\\iiint");Y(ee,pe,Hi,"\u220F","\\prod");Y(ee,pe,Hi,"\u2211","\\sum");Y(ee,pe,Hi,"\u2A02","\\bigotimes");Y(ee,pe,Hi,"\u2A01","\\bigoplus");Y(ee,pe,Hi,"\u2A00","\\bigodot");Y(ee,pe,Hi,"\u222E","\\oint");Y(ee,pe,Hi,"\u222F","\\oiint");Y(ee,pe,Hi,"\u2230","\\oiiint");Y(ee,pe,Hi,"\u2A06","\\bigsqcup");Y(ee,pe,Hi,"\u222B","\\smallint");Y(Lt,pe,Q0,"\u2026","\\textellipsis");Y(ee,pe,Q0,"\u2026","\\mathellipsis");Y(Lt,pe,Q0,"\u2026","\\ldots",!0);Y(ee,pe,Q0,"\u2026","\\ldots",!0);Y(ee,pe,Q0,"\u22EF","\\@cdots",!0);Y(ee,pe,Q0,"\u22F1","\\ddots",!0);Y(ee,pe,Ue,"\u22EE","\\varvdots");Y(Lt,pe,Ue,"\u22EE","\\varvdots");Y(ee,pe,hi,"\u02CA","\\acute");Y(ee,pe,hi,"\u02CB","\\grave");Y(ee,pe,hi,"\xA8","\\ddot");Y(ee,pe,hi,"~","\\tilde");Y(ee,pe,hi,"\u02C9","\\bar");Y(ee,pe,hi,"\u02D8","\\breve");Y(ee,pe,hi,"\u02C7","\\check");Y(ee,pe,hi,"^","\\hat");Y(ee,pe,hi,"\u20D7","\\vec");Y(ee,pe,hi,"\u02D9","\\dot");Y(ee,pe,hi,"\u02DA","\\mathring");Y(ee,pe,xr,"\uE131","\\@imath");Y(ee,pe,xr,"\uE237","\\@jmath");Y(ee,pe,Ue,"\u0131","\u0131");Y(ee,pe,Ue,"\u0237","\u0237");Y(Lt,pe,Ue,"\u0131","\\i",!0);Y(Lt,pe,Ue,"\u0237","\\j",!0);Y(Lt,pe,Ue,"\xDF","\\ss",!0);Y(Lt,pe,Ue,"\xE6","\\ae",!0);Y(Lt,pe,Ue,"\u0153","\\oe",!0);Y(Lt,pe,Ue,"\xF8","\\o",!0);Y(Lt,pe,Ue,"\xC6","\\AE",!0);Y(Lt,pe,Ue,"\u0152","\\OE",!0);Y(Lt,pe,Ue,"\xD8","\\O",!0);Y(Lt,pe,hi,"\u02CA","\\'");Y(Lt,pe,hi,"\u02CB","\\`");Y(Lt,pe,hi,"\u02C6","\\^");Y(Lt,pe,hi,"\u02DC","\\~");Y(Lt,pe,hi,"\u02C9","\\=");Y(Lt,pe,hi,"\u02D8","\\u");Y(Lt,pe,hi,"\u02D9","\\.");Y(Lt,pe,hi,"\xB8","\\c");Y(Lt,pe,hi,"\u02DA","\\r");Y(Lt,pe,hi,"\u02C7","\\v");Y(Lt,pe,hi,"\xA8",'\\"');Y(Lt,pe,hi,"\u02DD","\\H");Y(Lt,pe,hi,"\u25EF","\\textcircled");rQ={"--":!0,"---":!0,"``":!0,"''":!0};Y(Lt,pe,Ue,"\u2013","--",!0);Y(Lt,pe,Ue,"\u2013","\\textendash");Y(Lt,pe,Ue,"\u2014","---",!0);Y(Lt,pe,Ue,"\u2014","\\textemdash");Y(Lt,pe,Ue,"\u2018","`",!0);Y(Lt,pe,Ue,"\u2018","\\textquoteleft");Y(Lt,pe,Ue,"\u2019","'",!0);Y(Lt,pe,Ue,"\u2019","\\textquoteright");Y(Lt,pe,Ue,"\u201C","``",!0);Y(Lt,pe,Ue,"\u201C","\\textquotedblleft");Y(Lt,pe,Ue,"\u201D","''",!0);Y(Lt,pe,Ue,"\u201D","\\textquotedblright");Y(ee,pe,Ue,"\xB0","\\degree",!0);Y(Lt,pe,Ue,"\xB0","\\degree");Y(Lt,pe,Ue,"\xB0","\\textdegree",!0);Y(ee,pe,Ue,"\xA3","\\pounds");Y(ee,pe,Ue,"\xA3","\\mathsterling",!0);Y(Lt,pe,Ue,"\xA3","\\pounds");Y(Lt,pe,Ue,"\xA3","\\textsterling",!0);Y(ee,ze,Ue,"\u2720","\\maltese");Y(Lt,ze,Ue,"\u2720","\\maltese");wZ='0123456789/@."';for(Nk=0;Nk{var r=e.charCodeAt(0),n=e.charCodeAt(1),i=(r-55296)*1024+(n-56320)+65536,a=t==="math"?0:1;if(119808<=i&&i<120484){var s=Math.floor((i-119808)/26);return[$k[s][2],$k[s][a]]}else if(120782<=i&&i<=120831){var l=Math.floor((i-120782)/10);return[SZ[l][2],SZ[l][a]]}else{if(i===120485||i===120486)return[$k[0][2],$k[0][a]];if(1204860)return Ts(a,h,i,r,s.concat(d));if(u){var f,p;if(u==="boldsymbol"){var m=GGe(a,i,r,s,n);f=m.fontName,p=[m.fontClass]}else l?(f=O7[u].fontName,p=[u]):(f=Fk(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(rS(a,f,i).metrics)return Ts(a,f,i,r,s.concat(p));if(rQ.hasOwnProperty(a)&&f.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(Ed(e.classes)!==Ed(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var i of Object.keys(t.style))if(e.style[i]!==t.style[i])return!1;return!0},"canCombine"),nQ=o(e=>{for(var t=0;tr&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=i},"sizeElementFromChildren"),Mt=o(function(t,r,n,i){var a=new Ad(t,r,n,i);return Z7(a),a},"makeSpan"),Rd=o((e,t,r,n)=>new Ad(e,t,r,n),"makeSvgSpan"),K0=o(function(t,r,n){var i=Mt([t],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=$t(i.height),i.maxFontSize=1,i},"makeLineSpan"),WGe=o(function(t,r,n,i){var a=new X0(t,r,n,i);return Z7(a),a},"makeAnchor"),sh=o(function(t){var r=new Sd(t);return Z7(r),r},"makeFragment"),Z0=o(function(t,r){return t instanceof Sd?Mt([],[t],r):t},"wrapFragment"),qGe=o(function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=Mt(["mspace"],[],t),n=xi(e,t);return r.style.marginRight=$t(n),r},"makeGlue"),Fk=o(function(t,r,n){var i="";switch(t){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=t}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),O7={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},aQ={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},sQ=o(function(t,r){var[n,i,a]=aQ[t],s=new zc(n),l=new Gl([s],{width:$t(i),height:$t(a),style:"width:"+$t(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=Rd(["overlay"],[l],r);return u.height=a,u.style.height=$t(a),u.style.width=$t(i),u},"staticSvg"),yi={number:3,unit:"mu"},zp={number:4,unit:"mu"},rh={number:5,unit:"mu"},HGe={mord:{mop:yi,mbin:zp,mrel:rh,minner:yi},mop:{mord:yi,mop:yi,mrel:rh,minner:yi},mbin:{mord:zp,mop:zp,mopen:zp,minner:zp},mrel:{mord:rh,mop:rh,mopen:rh,minner:rh},mopen:{},mclose:{mop:yi,mbin:zp,mrel:rh,minner:yi},mpunct:{mord:yi,mop:yi,mrel:rh,mopen:yi,mclose:yi,mpunct:yi,minner:yi},minner:{mord:yi,mop:yi,mbin:zp,mrel:rh,mopen:yi,mpunct:yi,minner:yi}},UGe={mord:{mop:yi},mop:{mord:yi,mop:yi},mbin:{},mrel:{},mopen:{},mclose:{mop:yi},mpunct:{},minner:{mop:yi}},oQ={},Xk={},Kk={};o(Ut,"defineFunction");o(Gp,"defineFunctionBuilders");Zk=o(function(t){return t.type==="ordgroup"&&t.body.length===1?t.body[0]:t},"normalizeArgument"),qi=o(function(t){return t.type==="ordgroup"?t.body:[t]},"ordargument"),YGe=new Set(["leftmost","mbin","mopen","mrel","mop","mpunct"]),jGe=new Set(["rightmost","mrel","mclose","mpunct"]),XGe={display:Fr.DISPLAY,text:Fr.TEXT,script:Fr.SCRIPT,scriptscript:Fr.SCRIPTSCRIPT},KGe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},ia=o(function(t,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&jGe.has(x)?y.classes[0]="mord":x==="mbin"&&YGe.has(v)&&(g.classes[0]="mord")},{node:f},p,m),B7(a,(g,y)=>{var v,x,b=F7(y),T=F7(g),k=b&&T?g.hasClass("mtight")?(v=UGe[b])==null?void 0:v[T]:(x=HGe[b])==null?void 0:x[T]:null;if(k)return iQ(k,h)},{node:f},p,m),a},"buildExpression"),B7=o(function(t,r,n,i,a){i&&t.push(i);for(var s=0;sp=>{t.splice(f+1,0,p),s++})(s)}i&&t.pop()},"traverseNonSpaceNodes"),lQ=o(function(t){return t instanceof Sd||t instanceof X0||t instanceof Ad&&t.hasClass("enclosing")?t:null},"checkPartialGroup"),$7=o(function(t,r){var n=lQ(t);if(n){var i=n.children;if(i.length){if(r==="right")return $7(i[i.length-1],"right");if(r==="left")return $7(i[0],"left")}}return t},"getOutermostNode"),F7=o(function(t,r){if(!t)return null;r&&(t=$7(t,r));var n=t.classes[0];return KGe[n]||null},"getTypeOfDomTree"),nb=o(function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return Mt(r.concat(n))},"makeNullDelimiter"),wn=o(function(t,r,n){if(!t)return Mt();if(Xk[t.type]){var i=Xk[t.type](t,r);if(n&&r.size!==n.size){i=Mt(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new Pt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(zk,"buildHTMLUnbreakable");o(z7,"buildHTML");o(cQ,"newDocumentFragment");Nt=class{static{o(this,"MathNode")}constructor(t,r,n){this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Ed(this.classes));for(var n=0;n0&&(t+=' class ="'+es(Ed(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}},Ei=class{static{o(this,"TextNode")}constructor(t){this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return es(this.toText())}toText(){return this.text}},Qk=class{static{o(this,"SpaceNode")}constructor(t){this.width=t,t>=.05555&&t<=.05556?this.character="\u200A":t>=.1666&&t<=.1667?this.character="\u2009":t>=.2222&&t<=.2223?this.character="\u2005":t>=.2777&&t<=.2778?this.character="\u2005\u200A":t>=-.05556&&t<=-.05555?this.character="\u200A\u2063":t>=-.1667&&t<=-.1666?this.character="\u2009\u2063":t>=-.2223&&t<=-.2222?this.character="\u205F\u2063":t>=-.2778&&t<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",$t(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},ZGe=new Set(["\\imath","\\jmath"]),QGe=new Set(["mrow","mtable"]),cl=o(function(t,r,n){return ui[r][t]&&ui[r][t].replace&&t.charCodeAt(0)!==55349&&!(rQ.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=ui[r][t].replace),new Ei(t)},"makeText"),Q7=o(function(t){return t.length===1?t[0]:new Nt("mrow",t)},"makeRow"),J7=o(function(t,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=t.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return t.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=t.text;if(ZGe.has(a))return null;if(ui[i][a]){var s=ui[i][a].replace;s&&(a=s)}var l=O7[n].fontName;return X7(a,l,i)?O7[n].variant:null},"getVariant");o(T7,"isNumberPunctuation");Po=o(function(t,r,n){if(t.length===1){var i=Wn(t[0],r);return n&&i instanceof Nt&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l=1&&(s.type==="mn"||T7(s))){var h=u.children[0];h instanceof Nt&&h.type==="mn"&&(h.children=[...s.children,...h.children],a.pop())}else if(s.type==="mi"&&s.children.length===1){var d=s.children[0];if(d instanceof Ei&&d.text==="\u0338"&&(u.type==="mo"||u.type==="mi"||u.type==="mn")){var f=u.children[0];f instanceof Ei&&f.text.length>0&&(f.text=f.text.slice(0,1)+"\u0338"+f.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),_d=o(function(t,r,n){return Q7(Po(t,r,n))},"buildExpressionRow"),Wn=o(function(t,r){if(!t)return new Nt("mrow");if(Kk[t.type]){var n=Kk[t.type](t,r);return n}else throw new Pt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(EZ,"buildMathML");JGe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],AZ=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],RZ=o(function(t,r){return r.size<2?t:JGe[t-1][r.size-1]},"sizeAtStyle"),Jk=class e{static{o(this,"Options")}constructor(t){this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=AZ[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new e(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:RZ(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:AZ[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=RZ(e.BASESIZE,t);return this.size===r&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=BGe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};Jk.BASESIZE=6;uQ=o(function(t){return new Jk({style:t.displayMode?Fr.DISPLAY:Fr.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},"optionsFromSettings"),hQ=o(function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=Mt(n,[t])}return t},"displayWrap"),eVe=o(function(t,r,n){var i=uQ(n),a;if(n.output==="mathml")return EZ(t,r,i,n.displayMode,!0);if(n.output==="html"){var s=z7(t,i);a=Mt(["katex"],[s])}else{var l=EZ(t,r,i,n.displayMode,!1),u=z7(t,i);a=Mt(["katex"],[l,u])}return hQ(a,n)},"buildTree"),tVe=o(function(t,r,n){var i=uQ(n),a=z7(t,i),s=Mt(["katex"],[a]);return hQ(s,n)},"buildHTMLTree"),rVe={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",underbracket:"\u23B5",overbracket:"\u23B4",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},iS=o(function(t){var r=new Nt("mo",[new Ei(rVe[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"stretchyMathML"),nVe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},iVe=new Set(["widehat","widecheck","widetilde","utilde"]),aS=o(function(t,r){function n(){var l=4e5,u=t.label.slice(1);if(iVe.has(u)){var h=t,d=h.base.type==="ordgroup"?h.base.body.length:1,f,p,m;if(d>5)u==="widehat"||u==="widecheck"?(f=420,l=2364,m=.42,p=u+"4"):(f=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][d];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],f=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],f=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new zc(p),v=new Gl([y],{width:"100%",height:$t(m),viewBox:"0 0 "+l+" "+f,preserveAspectRatio:"none"});return{span:Rd([],[v],r),minWidth:0,height:m}}else{var x=[],b=nVe[u],[T,k,C]=b,w=C/1e3,S=T.length,R,L;if(S===1){var N=b[3];R=["hide-tail"],L=[N]}else if(S===2)R=["halfarrow-left","halfarrow-right"],L=["xMinYMin","xMaxYMin"];else if(S===3)R=["brace-left","brace-center","brace-right"],L=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+S+" children.");for(var I=0;I0&&(i.style.minWidth=$t(a)),i},"stretchySvg"),aVe=o(function(t,r,n,i,a){var s,l=t.height+t.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Mt(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new rb({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new rb({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new Gl(h,{width:"100%",height:$t(l)});s=Rd([],[d],a)}return s.height=l,s.style.height=$t(l),s},"stretchyEnclose");o(Ur,"assertNodeType");o(sS,"assertSymbolNodeType");o(oS,"checkSymbolNodeType");dQ=o(e=>{if(e instanceof ws)return e;if(OGe(e)&&e.children.length===1)return dQ(e.children[0])},"getBaseSymbol"),e8=o((e,t)=>{var r,n,i;e&&e.type==="supsub"?(n=Ur(e.base,"accent"),r=n.base,e.base=r,i=PGe(wn(e,t)),e.base=n):(n=Ur(e,"accent"),r=n.base);var a=wn(r,t.havingCrampedStyle()),s=n.isShifty&&ih(r),l=0;if(s){var u,h;l=(u=(h=dQ(a))==null?void 0:h.skew)!=null?u:0}var d=n.label==="\\c",f=d?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),p;if(n.isStretchy)p=aS(n,t),p=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+$t(2*l)+")",marginLeft:$t(2*l)}:void 0}]});else{var m,g;n.label==="\\vec"?(m=sQ("vec",t),g=aQ.vec[1]):(m=nS({type:"textord",mode:n.mode,text:n.label},t,"textord"),m=NGe(m),m.italic=0,g=m.width,d&&(f+=m.depth)),p=Mt(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),f=a.height);var v=l;y||(v-=g/2),p.style.left=$t(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-f},{type:"elem",elem:p}]})}var x=Mt(["mord","accent"],[p],t);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),fQ=o((e,t)=>{var r=e.isStretchy?iS(e.label):new Nt("mo",[cl(e.label,e.mode)]),n=new Nt("mover",[Wn(e.base,t),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),sVe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Ut({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((e,t)=>{var r=Zk(t[0]),n=!sVe.test(e.funcName),i=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:e8,mathmlBuilder:fQ});Ut({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:e8,mathmlBuilder:fQ});Ut({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((e,t)=>{var r=wn(e.base,t),n=aS(e,t),i=e.label==="\\utilde"?.12:0,a=Cn({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]});return Mt(["mord","accentunder"],[a],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=iS(e.label),n=new Nt("munder",[Wn(e.base,t),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});Gk=o(e=>{var t=new Nt("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t},"paddedNode");Ut({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:i}=e;return{type:"xArrow",mode:n.mode,label:i,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),i=Z0(wn(e.body,n,t),t),a=e.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;e.below&&(n=t.havingStyle(r.sub()),s=Z0(wn(e.below,n,t),t),s.classes.push(a+"-arrow-pad"));var l=aS(e,t),u=-t.fontMetrics().axisHeight+.5*l.height,h=-t.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||e.label==="\\xleftequilibrium")&&(h-=i.depth);var d;if(s){var f=-t.fontMetrics().axisHeight+s.height+.5*l.height+.111;d=Cn({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:f}]})}else d=Cn({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]});return d.children[0].children[0].children[1].classes.push("svg-align"),Mt(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=iS(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var i=Gk(Wn(e.body,t));if(e.below){var a=Gk(Wn(e.below,t));n=new Nt("munderover",[r,a,i])}else n=new Nt("mover",[r,i])}else if(e.below){var s=Gk(Wn(e.below,t));n=new Nt("munder",[r,s])}else n=Gk(),n=new Nt("mover",[r,n]);return n}});o(pQ,"htmlBuilder$9");o(mQ,"mathmlBuilder$8");Ut({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:qi(i),isCharacterBox:ih(i)}},htmlBuilder:pQ,mathmlBuilder:mQ});lS=o(e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"},"binrelClass");Ut({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:lS(t[0]),body:qi(t[1]),isCharacterBox:ih(t[1])}}});Ut({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,i=t[1],a=t[0],s;n!=="\\stackrel"?s=lS(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:qi(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:ih(u)}},htmlBuilder:pQ,mathmlBuilder:mQ});Ut({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:lS(t[0]),body:qi(t[0])}},htmlBuilder(e,t){var r=ia(e.body,t,!0),n=Mt([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=Po(e.body,t),n=new Nt("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});oVe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},_Z=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),LZ=o(e=>e.type==="textord"&&e.text==="@","isStartOfArrow"),lVe=o((e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t,"isLabelEnd");o(cVe,"cdArrow");o(uVe,"parseCD");Ut({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Z0(wn(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=$t(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new Nt("mrow",[Wn(e.label,t)]);return r=new Nt("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new Nt("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Ut({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Z0(wn(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new Nt("mrow",[Wn(e.fragment,t)])}});Ut({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=Ur(t[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new Pt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});gQ=o((e,t)=>{var r=ia(e.body,t.withColor(e.color),!1);return sh(r)},"htmlBuilder$8"),yQ=o((e,t)=>{var r=Po(e.body,t.withColor(e.color)),n=new Nt("mstyle",r);return n.setAttribute("mathcolor",e.color),n},"mathmlBuilder$7");Ut({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=Ur(t[0],"color-token").color,i=t[1];return{type:"color",mode:r.mode,color:n,body:qi(i)}},htmlBuilder:gQ,mathmlBuilder:yQ});Ut({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,i=Ur(t[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:gQ,mathmlBuilder:yQ});Ut({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&Ur(i,"size").value}},htmlBuilder(e,t){var r=Mt(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=$t(xi(e.size,t)))),r},mathmlBuilder(e,t){var r=new Nt("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",$t(xi(e.size,t)))),r}});G7={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},vQ=o(e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Pt("Expected a control sequence",e);return t},"checkControlSequence"),hVe=o(e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},"getRHS"),xQ=o((e,t,r,n)=>{var i=e.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,i,n)},"letCommand");Ut({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(G7[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=G7[n.text]),Ur(t.parseFunction(),"internal");throw new Pt("Invalid token after macro prefix",n)}});Ut({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new Pt("Expected a control sequence",n);for(var a=0,s,l=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){s=t.gullet.future(),l[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Pt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new Pt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new Pt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=t.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=t.gullet.expandTokens(u),u.reverse()),t.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===G7[r]),{type:"internal",mode:t.mode}}});Ut({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=vQ(t.gullet.popToken());t.gullet.consumeSpaces();var i=hVe(t);return xQ(t,n,i,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Ut({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=vQ(t.gullet.popToken()),i=t.gullet.popToken(),a=t.gullet.popToken();return xQ(t,n,a,r==="\\\\globalfuture"),t.gullet.pushToken(a),t.gullet.pushToken(i),{type:"internal",mode:t.mode}}});Qx=o(function(t,r,n){var i=ui.math[t]&&ui.math[t].replace,a=X7(i||t,r,n);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return a},"getMetrics"),t8=o(function(t,r,n,i){var a=n.havingBaseStyle(r),s=Mt(i.concat(a.sizingClasses(n)),[t],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),bQ=o(function(t,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=$t(a),t.height-=a,t.depth+=a},"centerSpan"),dVe=o(function(t,r,n,i,a,s){var l=Ts(t,"Main-Regular",a,i),u=t8(l,r,i,s);return n&&bQ(u,i,r),u},"makeSmallDelim"),fVe=o(function(t,r,n,i){return Ts(t,"Size"+r+"-Regular",n,i)},"mathrmSize"),TQ=o(function(t,r,n,i,a,s){var l=fVe(t,r,a,i),u=t8(Mt(["delimsizing","size"+r],[l],i),Fr.TEXT,i,s);return n&&bQ(u,i,Fr.TEXT),u},"makeLargeDelim"),C7=o(function(t,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Mt(["delimsizinginner",i],[Mt([],[Ts(t,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),w7=o(function(t,r,n){var i=Fc["Size4-Regular"][t.charCodeAt(0)]?Fc["Size4-Regular"][t.charCodeAt(0)][4]:Fc["Size1-Regular"][t.charCodeAt(0)][4],a=new zc("inner",_Ge(t,Math.round(1e3*r))),s=new Gl([a],{width:$t(i),height:$t(r),style:"width:"+$t(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Rd([],[s],n);return l.height=r,l.style.height=$t(r),l.style.width=$t(i),{type:"elem",elem:l}},"makeInner"),V7=.008,Vk={type:"kern",size:-1*V7},pVe=new Set(["|","\\lvert","\\rvert","\\vert"]),mVe=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),CQ=o(function(t,r,n,i,a,s){var l,u,h,d,f="",p=0;l=h=d=t,u=null;var m="Size1-Regular";t==="\\uparrow"?h=d="\u23D0":t==="\\Uparrow"?h=d="\u2016":t==="\\downarrow"?l=h="\u23D0":t==="\\Downarrow"?l=h="\u2016":t==="\\updownarrow"?(l="\\uparrow",h="\u23D0",d="\\downarrow"):t==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",d="\\Downarrow"):pVe.has(t)?(h="\u2223",f="vert",p=333):mVe.has(t)?(h="\u2225",f="doublevert",p=556):t==="["||t==="\\lbrack"?(l="\u23A1",h="\u23A2",d="\u23A3",m="Size4-Regular",f="lbrack",p=667):t==="]"||t==="\\rbrack"?(l="\u23A4",h="\u23A5",d="\u23A6",m="Size4-Regular",f="rbrack",p=667):t==="\\lfloor"||t==="\u230A"?(h=l="\u23A2",d="\u23A3",m="Size4-Regular",f="lfloor",p=667):t==="\\lceil"||t==="\u2308"?(l="\u23A1",h=d="\u23A2",m="Size4-Regular",f="lceil",p=667):t==="\\rfloor"||t==="\u230B"?(h=l="\u23A5",d="\u23A6",m="Size4-Regular",f="rfloor",p=667):t==="\\rceil"||t==="\u2309"?(l="\u23A4",h=d="\u23A5",m="Size4-Regular",f="rceil",p=667):t==="("||t==="\\lparen"?(l="\u239B",h="\u239C",d="\u239D",m="Size4-Regular",f="lparen",p=875):t===")"||t==="\\rparen"?(l="\u239E",h="\u239F",d="\u23A0",m="Size4-Regular",f="rparen",p=875):t==="\\{"||t==="\\lbrace"?(l="\u23A7",u="\u23A8",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(l="\u23AB",u="\u23AC",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lgroup"||t==="\u27EE"?(l="\u23A7",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\rgroup"||t==="\u27EF"?(l="\u23AB",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lmoustache"||t==="\u23B0"?(l="\u23A7",d="\u23AD",h="\u23AA",m="Size4-Regular"):(t==="\\rmoustache"||t==="\u23B1")&&(l="\u23AB",d="\u23A9",h="\u23AA",m="Size4-Regular");var g=Qx(l,m,a),y=g.height+g.depth,v=Qx(h,m,a),x=v.height+v.depth,b=Qx(d,m,a),T=b.height+b.depth,k=0,C=1;if(u!==null){var w=Qx(u,m,a);k=w.height+w.depth,C=2}var S=y+T+k,R=Math.max(0,Math.ceil((r-S)/(C*x))),L=S+R*C*x,N=i.fontMetrics().axisHeight;n&&(N*=i.sizeMultiplier);var I=L/2-N,_=[];if(f.length>0){var A=L-y-T,M=Math.round(L*1e3),D=LGe(f,Math.round(A*1e3)),P=new zc(f,D),B=$t(p/1e3),O=$t(M/1e3),$=new Gl([P],{width:B,height:O,viewBox:"0 0 "+p+" "+M}),V=Rd([],[$],i);V.height=M/1e3,V.style.width=B,V.style.height=O,_.push({type:"elem",elem:V})}else{if(_.push(C7(d,m,a)),_.push(Vk),u===null){var G=L-y-T+2*V7;_.push(w7(h,G,i))}else{var z=(L-y-T-k)/2+2*V7;_.push(w7(h,z,i)),_.push(Vk),_.push(C7(u,m,a)),_.push(Vk),_.push(w7(h,z,i))}_.push(Vk),_.push(C7(l,m,a))}var W=i.havingBaseStyle(Fr.TEXT),H=Cn({positionType:"bottom",positionData:I,children:_});return t8(Mt(["delimsizing","mult"],[H],W),Fr.TEXT,i,s)},"makeStackedDelim"),k7=80,S7=.08,E7=o(function(t,r,n,i,a){var s=RGe(t,i,n),l=new zc(t,s),u=new Gl([l],{width:"400em",height:$t(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Rd(["hide-tail"],[u],a)},"sqrtSvg"),gVe=o(function(t,r){var n=r.havingBaseSizing(),i=AQ("\\surd",t*n.sizeMultiplier,EQ,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,d=0,f;return i.type==="small"?(d=1e3+1e3*s+k7,t<1?a=1:t<1.4&&(a=.7),u=(1+s+S7)/a,h=(1+s)/a,l=E7("sqrtMain",u,d,s,r),l.style.minWidth="0.853em",f=.833/a):i.type==="large"?(d=(1e3+k7)*Jx[i.size],h=(Jx[i.size]+s)/a,u=(Jx[i.size]+s+S7)/a,l=E7("sqrtSize"+i.size,u,d,s,r),l.style.minWidth="1.02em",f=1/a):(u=t+s+S7,h=t+s,d=Math.floor(1e3*t+s)+k7,l=E7("sqrtTall",u,d,s,r),l.style.minWidth="0.742em",f=1.056),l.height=h,l.style.height=$t(u),{span:l,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),wQ=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"]),yVe=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"]),kQ=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),Jx=[0,1.2,1.8,2.4,3],SQ=o(function(t,r,n,i,a){if(t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle"),wQ.has(t)||kQ.has(t))return TQ(t,r,!1,n,i,a);if(yVe.has(t))return CQ(t,Jx[r],!1,n,i,a);throw new Pt("Illegal delimiter: '"+t+"'")},"makeSizedDelim"),vVe=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],xVe=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"stack"}],EQ=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],bVe=o(function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},"delimTypeToFont"),AQ=o(function(t,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return l}return n[n.length-1]},"traverseSequence"),W7=o(function(t,r,n,i,a,s){t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle");var l;kQ.has(t)?l=vVe:wQ.has(t)?l=EQ:l=xVe;var u=AQ(t,r,l,i);return u.type==="small"?dVe(t,u.style,n,i,a,s):u.type==="large"?TQ(t,u.size,n,i,a,s):CQ(t,r,n,i,a,s)},"makeCustomSizedDelim"),A7=o(function(t,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,d=Math.max(r-l,n+l),f=Math.max(d/500*u,2*d-h);return W7(t,f,!0,i,a,s)},"makeLeftRightDelim"),DZ={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},TVe=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);o(cS,"checkDelimiter");Ut({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:o((e,t)=>{var r=cS(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:DZ[e.funcName].size,mclass:DZ[e.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>e.delim==="."?Mt([e.mclass]):SQ(e.delim,e.size,t,e.mode,[e.mclass]),"htmlBuilder"),mathmlBuilder:o(e=>{var t=[];e.delim!=="."&&t.push(cl(e.delim,e.mode));var r=new Nt("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=$t(Jx[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(IZ,"assertParsed");Ut({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Pt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:cS(t[0],e).text,color:r}},"handler")});Ut({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=cS(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Ur(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((e,t)=>{IZ(e);for(var r=ia(e.body,t,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{IZ(e);var r=Po(e.body,t);if(e.left!=="."){var n=new Nt("mo",[cl(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var i=new Nt("mo",[cl(e.right,e.mode)]);i.setAttribute("fence","true"),e.rightColor&&i.setAttribute("mathcolor",e.rightColor),r.push(i)}return Q7(r)},"mathmlBuilder")});Ut({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=cS(t[0],e);if(!e.parser.leftrightDepth)throw new Pt("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>{var r;if(e.delim===".")r=nb(t,[]);else{r=SQ(e.delim,1,t,e.mode,[]);var n={delim:e.delim,options:t};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?cl("|","text"):cl(e.delim,e.mode),n=new Nt("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});uS=o((e,t)=>{var r=Z0(wn(e.body,t),t),n=e.label.slice(1),i=t.sizeMultiplier,a,s=0,l=ih(e.body);if(n==="sout")a=Mt(["stretchy","sout"]),a.height=t.fontMetrics().defaultRuleThickness/i,s=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var u=xi({number:.6,unit:"pt"},t),h=xi({number:.35,unit:"ex"},t),d=t.havingBaseSizing();i=i/d.sizeMultiplier;var f=r.height+r.depth+u+h;r.style.paddingLeft=$t(f/2+u);var p=Math.floor(1e3*f*i),m=EGe(p),g=new Gl([new zc("phase",m)],{width:"400em",height:$t(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Rd(["hide-tail"],[g],t),a.style.height=$t(f),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),y=t.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=aVe(r,n,y,v,t),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=$t(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=$t(x),a.style.borderRightWidth=$t(x)),s=r.depth+v,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var b;if(e.backgroundColor)b=Cn({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]});else{var T=/cancel|phase/.test(n)?["svg-align"]:[];b=Cn({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:T}]})}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?Mt(["mord","cancel-lap"],[b],t):Mt(["mord"],[b],t)},"htmlBuilder$7"),hS=o((e,t)=>{var r=0,n=new Nt(e.label.includes("colorbox")?"mpadded":"menclose",[Wn(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var i=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+$t(i)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n},"mathmlBuilder$6");Ut({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=Ur(t[0],"color-token").color,s=t[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=Ur(t[0],"color-token").color,s=Ur(t[1],"color-token").color,l=t[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Ut({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});RQ={};o(Gc,"defineEnvironment");_Q={};o(Ce,"defineMacro");Qs=class e{static{o(this,"SourceLocation")}constructor(t,r,n){this.lexer=t,this.start=r,this.end=n}static range(t,r){return r?!t||!t.loc||!r.loc||t.loc.lexer!==r.loc.lexer?null:new e(t.loc.lexer,t.loc.start,r.loc.end):t&&t.loc}},Mo=class e{static{o(this,"Token")}constructor(t,r){this.text=t,this.loc=r}range(t,r){return new e(r,Qs.range(this,t))}};o(MZ,"getHLines");dS=o(e=>{var t=e.parser.settings;if(!t.displayMode)throw new Pt("{"+e.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext"),CVe=new Set(["gather","gather*"]);o(r8,"getAutoTag");o(Ld,"parseArray");o(n8,"dCellStyle");Vc=o(function(t,r){var n,i,a=t.body.length,s=t.hLinesBeforeRow,l=0,u=new Array(a),h=[],d=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),f=1/r.fontMetrics().ptPerEm,p=5*f;if(t.colSeparationType&&t.colSeparationType==="small"){var m=r.havingStyle(Fr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=t.colSeparationType==="CD"?xi({number:3,unit:"ex"},r):12*f,y=3*f,v=t.arraystretch*g,x=.7*v,b=.3*v,T=0;function k(Me){for(var ve=0;ve0&&(T+=.25),h.push({pos:T,isDashed:Me[ve]})}for(o(k,"setHLinePos"),k(s[0]),n=0;n0&&(I+=b,SMe))for(n=0;n=l)){var te=void 0;if(i>0||t.hskipBeforeAndAfter){var le,ie;te=(le=(ie=W)==null?void 0:ie.pregap)!=null?le:p,te!==0&&(D=Mt(["arraycolsep"],[]),D.style.width=$t(te),M.push(D))}var ae=[];for(n=0;n0){for(var ce=K0("hline",r,d),re=K0("hdashline",r,d),J=[{type:"elem",elem:ke,shift:0}];h.length>0;){var se=h.pop(),ge=se.pos-_;se.isDashed?J.push({type:"elem",elem:re,shift:ge}):J.push({type:"elem",elem:ce,shift:ge})}ke=Cn({positionType:"individualShift",children:J})}if(B.length===0)return Mt(["mord"],[ke],r);var Te=Cn({positionType:"individualShift",children:B}),we=Mt(["tag"],[Te],r);return sh([ke,we])},"htmlBuilder"),wVe={c:"center ",l:"left ",r:"right "},Wc=o(function(t,r){for(var n=[],i=new Nt("mtd",[],["mtr-glue"]),a=new Nt("mtd",[],["mml-eqn-num"]),s=0;s0){var g=t.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var T=x;T0?"left ":"",p+=L[L.length-1].length>0?"right ":"";for(var N=1;N0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Gc({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=oS(t[0]),n=r?[t[0]]:Ur(t[0],"ordgroup").body,i=n.map(function(s){var l=sS(s),u=l.text;if("lcr".includes(u))return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new Pt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return Ld(e.parser,a,n8(e.envName))},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var i=e.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,!"lcr".includes(r))throw new Pt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=Ld(e.parser,n,n8(e.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=Ld(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=oS(t[0]),n=r?[t[0]]:Ur(t[0],"ordgroup").body,i=n.map(function(l){var u=sS(l),h=u.text;if("lc".includes(h))return{type:"align",align:h};throw new Pt("Unknown column alignment: "+h,l)});if(i.length>1)throw new Pt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5},s=Ld(e.parser,a,"script");if(s.body.length>0&&s.body[0].length>1)throw new Pt("{subarray} can contain only one column");return s},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=Ld(e.parser,t,n8(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:LQ,htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){CVe.has(e.envName)&&dS(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:r8(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Ld(e.parser,t,"display")},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:LQ,htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){dS(e);var t={autoTag:r8(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Ld(e.parser,t,"display")},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["CD"],props:{numArgs:0},handler(e){return dS(e),uVe(e.parser)},htmlBuilder:Vc,mathmlBuilder:Wc});Ce("\\nonumber","\\gdef\\@eqnsw{0}");Ce("\\notag","\\nonumber");Ut({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Pt(e.funcName+" valid only within array environment")}});NZ=RQ;Ut({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];if(i.type!=="ordgroup")throw new Pt("Invalid environment name",i);for(var a="",s=0;s{var r=e.font,n=t.withFont(r);return wn(e.body,n)},"htmlBuilder$5"),IQ=o((e,t)=>{var r=e.font,n=t.withFont(r);return Wn(e.body,n)},"mathmlBuilder$4"),PZ={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Ut({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=Zk(t[0]),a=n;return a in PZ&&(a=PZ[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:DQ,mathmlBuilder:IQ});Ut({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:lS(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:ih(n)}},"handler")});Ut({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:n,breakOnTokenText:i}=e,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:DQ,mathmlBuilder:IQ});kVe=o((e,t)=>{var r=t.style,n=r.fracNum(),i=r.fracDen(),a;a=t.havingStyle(n);var s=wn(e.numer,a,t);if(e.continued){var l=8.5/t.fontMetrics().ptPerEm,u=3.5/t.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=t.fontMetrics().denom1):(f>0?(m=t.fontMetrics().num2,g=p):(m=t.fontMetrics().num3,g=3*p),y=t.fontMetrics().denom2);var v;if(d){var b=t.fontMetrics().axisHeight;m-s.depth-(b+.5*f){var r=new Nt("mfrac",[Wn(e.numer,t),Wn(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=xi(e.barSize,t);r.setAttribute("linethickness",$t(n))}if(e.leftDelim!=null||e.rightDelim!=null){var i=[];if(e.leftDelim!=null){var a=new Nt("mo",[new Ei(e.leftDelim.replace("\\",""))]);a.setAttribute("fence","true"),i.push(a)}if(i.push(r),e.rightDelim!=null){var s=new Nt("mo",[new Ei(e.rightDelim.replace("\\",""))]);s.setAttribute("fence","true"),i.push(s)}return Q7(i)}return r},"mathmlBuilder$3"),MQ=o((e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r},"wrapWithStyle");Ut({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=t[1],s,l=null,u=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}var h=n==="\\cfrac",d=null;return h||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),MQ({type:"genfrac",mode:r.mode,numer:i,denom:a,continued:h,hasBarLine:s,leftDelim:l,rightDelim:u,barSize:null},d)},"handler"),htmlBuilder:kVe,mathmlBuilder:SVe});Ut({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:i,token:n}}});OZ=["display","text","script","scriptscript"],BZ=o(function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r},"delimFromValue");Ut({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],i=t[5],a=Zk(t[0]),s=a.type==="atom"&&a.family==="open"?BZ(a.text):null,l=Zk(t[1]),u=l.type==="atom"&&l.family==="close"?BZ(l.text):null,h=Ur(t[2],"size"),d,f=null;h.isBlank?d=!0:(f=h.value,d=f.number>0);var p=null,m=t[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=Ur(m.body[0],"textord");p=OZ[Number(g.text)]}}else m=Ur(m,"textord"),p=OZ[Number(m.text)];return MQ({type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:d,barSize:f,leftDelim:s,rightDelim:u},p)}});Ut({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:i}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ur(t[0],"size").value,token:i}}});Ut({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=Ur(t[1],"infix").size;if(!a)throw new Error("\\\\abovefrac expected size, but got "+String(a));var s=t[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null}},"handler")});NQ=o((e,t)=>{var r=t.style,n,i;e.type==="supsub"?(n=e.sup?wn(e.sup,t.havingStyle(r.sup()),t):wn(e.sub,t.havingStyle(r.sub()),t),i=Ur(e.base,"horizBrace")):i=Ur(e,"horizBrace");var a=wn(i.base,t.havingBaseStyle(Fr.DISPLAY)),s=aS(i,t),l;if(i.isOver?(l=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]}),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Cn({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]}),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=Mt(["minner",i.isOver?"mover":"munder"],[l],t);i.isOver?l=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]}):l=Cn({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]})}return Mt(["minner",i.isOver?"mover":"munder"],[l],t)},"htmlBuilder$3"),EVe=o((e,t)=>{var r=iS(e.label);return new Nt(e.isOver?"mover":"munder",[Wn(e.base,t),r])},"mathmlBuilder$2");Ut({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:NQ,mathmlBuilder:EVe});Ut({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[1],i=Ur(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:qi(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.body,t,!1);return WGe(e.href,[],r,t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=_d(e.body,t);return r instanceof Nt||(r=new Nt("mrow",[r])),r.setAttribute("href",e.href),r},"mathmlBuilder")});Ut({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=Ur(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=e,a=Ur(t[0],"raw").string,s=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),d=0;d{var r=ia(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var i=Mt(n,r,t);for(var a in e.attributes)a!=="class"&&e.attributes.hasOwnProperty(a)&&i.setAttribute(a,e.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((e,t)=>_d(e.body,t),"mathmlBuilder")});Ut({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:qi(t[0]),mathml:qi(t[1])}},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.html,t,!1);return sh(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>_d(e.mathml,t),"mathmlBuilder")});R7=o(function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Pt("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!ZZ(n))throw new Pt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Ut({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((e,t,r)=>{var{parser:n}=e,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=Ur(r[0],"raw").string,h=u.split(","),d=0;d{var r=xi(e.height,t),n=0;e.totalheight.number>0&&(n=xi(e.totalheight,t)-r);var i=0;e.width.number>0&&(i=xi(e.width,t));var a={height:$t(r+n)};i>0&&(a.width=$t(i)),n>0&&(a.verticalAlign=$t(-n));var s=new N7(e.src,e.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Nt("mglyph",[]);r.setAttribute("alt",e.alt);var n=xi(e.height,t),i=0;if(e.totalheight.number>0&&(i=xi(e.totalheight,t)-n,r.setAttribute("valign",$t(-i))),r.setAttribute("height",$t(n+i)),e.width.number>0){var a=xi(e.width,t);r.setAttribute("width",$t(a))}return r.setAttribute("src",e.src),r},"mathmlBuilder")});Ut({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=Ur(t[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(e,t){return iQ(e.dimension,t)},mathmlBuilder(e,t){var r=xi(e.dimension,t);return new Qk(r)}});Ut({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((e,t)=>{var r;e.alignment==="clap"?(r=Mt([],[wn(e.body,t)]),r=Mt(["inner"],[r],t)):r=Mt(["inner"],[wn(e.body,t)]);var n=Mt(["fix"],[]),i=Mt([e.alignment],[r,n],t),a=Mt(["strut"]);return a.style.height=$t(i.height+i.depth),i.depth&&(a.style.verticalAlign=$t(-i.depth)),i.children.unshift(a),i=Mt(["thinbox"],[i],t),Mt(["mord","vbox"],[i],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Nt("mpadded",[Wn(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Ut({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Ut({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Pt("Mismatched "+e.funcName)}});$Z=o((e,t)=>{switch(t.style.size){case Fr.DISPLAY.size:return e.display;case Fr.TEXT.size:return e.text;case Fr.SCRIPT.size:return e.script;case Fr.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}},"chooseMathStyle");Ut({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:qi(t[0]),text:qi(t[1]),script:qi(t[2]),scriptscript:qi(t[3])}},"handler"),htmlBuilder:o((e,t)=>{var r=$Z(e,t),n=ia(r,t,!1);return sh(n)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=$Z(e,t);return _d(r,t)},"mathmlBuilder")});PQ=o((e,t,r,n,i,a,s)=>{e=Mt([],[e]);var l=r&&ih(r),u,h;if(t){var d=wn(t,n.havingStyle(i.sup()),n);h={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=wn(r,n.havingStyle(i.sub()),n);u={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+e.depth+s;p=Cn({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:$t(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:$t(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(u){var g=e.height-s;p=Cn({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:$t(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e}]})}else if(h){var y=e.depth+s;p=Cn({positionType:"bottom",positionData:y,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:$t(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var v=[p];if(u&&a!==0&&!l){var x=Mt(["mspace"],[],n);x.style.marginRight=$t(a),v.unshift(x)}return Mt(["mop","op-limits"],v,n)},"assembleSupSub"),OQ=new Set(["\\smallint"]),J0=o((e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=Ur(e.base,"op"),i=!0):a=Ur(e,"op");var s=t.style,l=!1;s.size===Fr.DISPLAY.size&&a.symbol&&!OQ.has(a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",d="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(d=a.name.slice(1),a.name=d==="oiint"?"\\iint":"\\iiint"),u=Ts(a.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),d.length>0){var f=u.italic,p=sQ(d+"Size"+(l?"2":"1"),t);u=Cn({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]}),a.name="\\"+d,u.classes.unshift("mop"),u.italic=f}}else if(a.body){var m=ia(a.body,t,!0);m.length===1&&m[0]instanceof ws?(u=m[0],u.classes[0]="mop"):u=Mt(["mop"],m,t)}else{for(var g=[],y=1;y{var r;if(e.symbol)r=new Nt("mo",[cl(e.name,e.mode)]),OQ.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new Nt("mo",Po(e.body,t));else{r=new Nt("mi",[new Ei(e.name.slice(1))]);var n=new Nt("mo",[cl("\u2061","text")]);e.parentIsSupSub?r=new Nt("mrow",[r,n]):r=cQ([r,n])}return r},"mathmlBuilder$1"),AVe={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Ut({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=n;return i.length===1&&(i=AVe[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:qi(n)}},"handler"),htmlBuilder:J0,mathmlBuilder:ab});RVe={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Ut({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=RVe[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:J0,mathmlBuilder:ab});BQ=o((e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=Ur(e.base,"operatorname"),i=!0):a=Ur(e,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(f=>{var p="text"in f?f.text:void 0;return typeof p=="string"?{type:"textord",mode:f.mode,text:p}:f}),u=ia(l,t.withFont("mathrm"),!0),h=0;h{for(var r=Po(e.body,t.withFont("mathrm")),n=!0,i=0;id.toText()).join("");r=[new Ei(l)]}var u=new Nt("mi",r);u.setAttribute("mathvariant","normal");var h=new Nt("mo",[cl("\u2061","text")]);return e.parentIsSupSub?new Nt("mrow",[u,h]):cQ([u,h])},"mathmlBuilder");Ut({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"operatorname",mode:r.mode,body:qi(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:BQ,mathmlBuilder:_Ve});Ce("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Gp({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?sh(ia(e.body,t,!1)):Mt(["mord"],ia(e.body,t,!0),t)},mathmlBuilder(e,t){return _d(e.body,t,!0)}});Ut({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=wn(e.body,t.havingCrampedStyle()),n=K0("overline-line",t),i=t.fontMetrics().defaultRuleThickness,a=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]});return Mt(["mord","overline"],[a],t)},mathmlBuilder(e,t){var r=new Nt("mo",[new Ei("\u203E")]);r.setAttribute("stretchy","true");var n=new Nt("mover",[Wn(e.body,t),r]);return n.setAttribute("accent","true"),n}});Ut({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:qi(n)}},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.body,t.withPhantom(),!1);return sh(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Po(e.body,t);return new Nt("mphantom",r)},"mathmlBuilder")});Ce("\\hphantom","\\smash{\\phantom{#1}}");Ut({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((e,t)=>{var r=Mt(["inner"],[wn(e.body,t.withPhantom())]),n=Mt(["fix"],[]);return Mt(["mord","rlap"],[r,n],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Po(qi(e.body),t),n=new Nt("mphantom",r),i=new Nt("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Ut({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=Ur(t[0],"size").value,i=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(e,t){var r=wn(e.body,t),n=xi(e.dy,t);return Cn({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new Nt("mpadded",[Wn(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Ut({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Ut({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,i=r[0],a=Ur(t[0],"size"),s=Ur(t[1],"size");return{type:"rule",mode:n.mode,shift:i&&Ur(i,"size").value,width:a.value,height:s.value}},htmlBuilder(e,t){var r=Mt(["mord","rule"],[],t),n=xi(e.width,t),i=xi(e.height,t),a=e.shift?xi(e.shift,t):0;return r.style.borderRightWidth=$t(n),r.style.borderTopWidth=$t(i),r.style.bottom=$t(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=xi(e.width,t),n=xi(e.height,t),i=e.shift?xi(e.shift,t):0,a=t.color&&t.getColor()||"black",s=new Nt("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",$t(r)),s.setAttribute("height",$t(n));var l=new Nt("mpadded",[s]);return i>=0?l.setAttribute("height",$t(i)):(l.setAttribute("height",$t(i)),l.setAttribute("depth",$t(-i))),l.setAttribute("voffset",$t(i)),l}});o($Q,"sizingGroup");FZ=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],LVe=o((e,t)=>{var r=t.havingSize(e.size);return $Q(e.body,r,t)},"htmlBuilder");Ut({type:"sizing",names:FZ,props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:FZ.indexOf(n)+1,body:a}},"handler"),htmlBuilder:LVe,mathmlBuilder:o((e,t)=>{var r=t.havingSize(e.size),n=Po(e.body,r),i=new Nt("mstyle",n);return i.setAttribute("mathsize",$t(r.sizeMultiplier)),i},"mathmlBuilder")});Ut({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((e,t,r)=>{var{parser:n}=e,i=!1,a=!1,s=r[0]&&Ur(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=Mt([],[wn(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return Mt(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new Nt("mpadded",[Wn(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Ut({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,i=r[0],a=t[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(e,t){var r=wn(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Z0(r,t);var n=t.fontMetrics(),i=n.defaultRuleThickness,a=i;t.style.idr.height+r.depth+s&&(s=(s+f-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=$t(d);var m=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]});if(e.index){var g=t.havingStyle(Fr.SCRIPTSCRIPT),y=wn(e.index,g,t),v=.6*(m.height-m.depth),x=Cn({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]}),b=Mt(["root"],[x]);return Mt(["mord","sqrt"],[b,m],t)}else return Mt(["mord","sqrt"],[m],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new Nt("mroot",[Wn(r,t),Wn(n,t)]):new Nt("msqrt",[Wn(r,t)])}});zZ={display:Fr.DISPLAY,text:Fr.TEXT,script:Fr.SCRIPT,scriptscript:Fr.SCRIPTSCRIPT};Ut({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(e,t){var r=zZ[e.style],n=t.havingStyle(r).withFont("");return $Q(e.body,n,t)},mathmlBuilder(e,t){var r=zZ[e.style],n=t.havingStyle(r),i=Po(e.body,n),a=new Nt("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[e.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});DVe=o(function(t,r){var n=t.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===Fr.DISPLAY.size||n.alwaysHandleSupSub);return i?J0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===Fr.DISPLAY.size||n.limits);return a?BQ:null}else{if(n.type==="accent")return ih(n.base)?e8:null;if(n.type==="horizBrace"){var s=!t.sub;return s===n.isOver?NQ:null}else return null}else return null},"htmlBuilderDelegate");Gp({type:"supsub",htmlBuilder(e,t){var r=DVe(e,t);if(r)return r(e,t);var{base:n,sup:i,sub:a}=e,s=wn(n,t),l,u,h=t.fontMetrics(),d=0,f=0,p=n&&ih(n);if(i){var m=t.havingStyle(t.style.sup());l=wn(i,m,t),p||(d=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/t.sizeMultiplier)}if(a){var g=t.havingStyle(t.style.sub());u=wn(a,g,t),p||(f=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}var y;t.style===Fr.DISPLAY?y=h.sup1:t.style.cramped?y=h.sup3:y=h.sup2;var v=t.sizeMultiplier,x=$t(.5/h.ptPerEm/v),b=null;if(u){var T=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");(s instanceof ws||T)&&(b=$t(-s.italic))}var k;if(l&&u){d=Math.max(d,y,l.depth+.25*h.xHeight),f=Math.max(f,h.sub2);var C=h.defaultRuleThickness,w=4*C;if(d-l.depth-(u.height-f)0&&(d+=S,f-=S)}var R=[{type:"elem",elem:u,shift:f,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-d,marginRight:x}];k=Cn({positionType:"individualShift",children:R})}else if(u){f=Math.max(f,h.sub1,u.height-.8*h.xHeight);var L=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];k=Cn({positionType:"shift",positionData:f,children:L})}else if(l)d=Math.max(d,y,l.depth+.25*h.xHeight),k=Cn({positionType:"shift",positionData:-d,children:[{type:"elem",elem:l,marginRight:x}]});else throw new Error("supsub must have either sup or sub.");var N=F7(s,"right")||"mord";return Mt([N],[s,Mt(["msupsub"],[k])],t)},mathmlBuilder(e,t){var r=!1,n,i;e.base&&e.base.type==="horizBrace"&&(i=!!e.sup,i===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var a=[Wn(e.base,t)];e.sub&&a.push(Wn(e.sub,t)),e.sup&&a.push(Wn(e.sup,t));var s;if(r)s=n?"mover":"munder";else if(e.sub)if(e.sup){var h=e.base;h&&h.type==="op"&&h.limits&&t.style===Fr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(t.style===Fr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=e.base;u&&u.type==="op"&&u.limits&&(t.style===Fr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||t.style===Fr.DISPLAY)?s="munder":s="msub"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===Fr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===Fr.DISPLAY)?s="mover":s="msup"}return new Nt(s,a)}});Gp({type:"atom",htmlBuilder(e,t){return K7(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new Nt("mo",[cl(e.text,e.mode)]);if(e.family==="bin"){var n=J7(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});FQ={mi:"italic",mn:"normal",mtext:"normal"};Gp({type:"mathord",htmlBuilder(e,t){return nS(e,t,"mathord")},mathmlBuilder(e,t){var r=new Nt("mi",[cl(e.text,e.mode,t)]),n=J7(e,t)||"italic";return n!==FQ[r.type]&&r.setAttribute("mathvariant",n),r}});Gp({type:"textord",htmlBuilder(e,t){return nS(e,t,"textord")},mathmlBuilder(e,t){var r=cl(e.text,e.mode,t),n=J7(e,t)||"normal",i;return e.mode==="text"?i=new Nt("mtext",[r]):/[0-9]/.test(e.text)?i=new Nt("mn",[r]):e.text==="\\prime"?i=new Nt("mo",[r]):i=new Nt("mi",[r]),n!==FQ[i.type]&&i.setAttribute("mathvariant",n),i}});_7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},L7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Gp({type:"spacing",htmlBuilder(e,t){if(L7.hasOwnProperty(e.text)){var r=L7[e.text].className||"";if(e.mode==="text"){var n=nS(e,t,"textord");return n.classes.push(r),n}else return Mt(["mspace",r],[K7(e.text,e.mode,t)],t)}else{if(_7.hasOwnProperty(e.text))return Mt(["mspace",_7[e.text]],[],t);throw new Pt('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(L7.hasOwnProperty(e.text))r=new Nt("mtext",[new Ei("\xA0")]);else{if(_7.hasOwnProperty(e.text))return new Nt("mspace");throw new Pt('Unknown type of space "'+e.text+'"')}return r}});GZ=o(()=>{var e=new Nt("mtd",[]);return e.setAttribute("width","50%"),e},"pad");Gp({type:"tag",mathmlBuilder(e,t){var r=new Nt("mtable",[new Nt("mtr",[GZ(),new Nt("mtd",[_d(e.body,t)]),GZ(),new Nt("mtd",[_d(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});VZ={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},WZ={"\\textbf":"textbf","\\textmd":"textmd"},IVe={"\\textit":"textit","\\textup":"textup"},qZ=o((e,t)=>{var r=e.font;if(r){if(VZ[r])return t.withTextFontFamily(VZ[r]);if(WZ[r])return t.withTextFontWeight(WZ[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(IVe[r])},"optionsWithFont");Ut({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"text",mode:r.mode,body:qi(i),font:n}},htmlBuilder(e,t){var r=qZ(e,t),n=ia(e.body,r,!0);return Mt(["mord","text"],n,r)},mathmlBuilder(e,t){var r=qZ(e,t);return _d(e.body,r)}});Ut({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=wn(e.body,t),n=K0("underline-line",t),i=t.fontMetrics().defaultRuleThickness,a=Cn({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]});return Mt(["mord","underline"],[a],t)},mathmlBuilder(e,t){var r=new Nt("mo",[new Ei("\u203E")]);r.setAttribute("stretchy","true");var n=new Nt("munder",[Wn(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Ut({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=wn(e.body,t),n=t.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Cn({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new Nt("mpadded",[Wn(e.body,t)],["vcenter"]);return new Nt("mrow",[r])}});Ut({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Pt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=HZ(e),n=[],i=t.havingStyle(t.style.text()),a=0;ae.body.replace(/ /g,e.star?"\u2423":"\xA0"),"makeVerb"),kd=oQ,zQ=`[ \r + ]`,MVe="\\\\[a-zA-Z@]+",NVe="\\\\[^\uD800-\uDFFF]",PVe="("+MVe+")"+zQ+"*",OVe=`\\\\( +|[ \r ]+ +?)[ \r ]*`,q7="[\u0300-\u036F]",BVe=new RegExp(q7+"+$"),$Ve="("+zQ+"+)|"+(OVe+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(q7+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(q7+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+PVe)+("|"+NVe+")"),eS=class{static{o(this,"Lexer")}constructor(t,r){this.input=t,this.settings=r,this.tokenRegex=new RegExp($Ve,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new Mo("EOF",new Qs(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Pt("Unexpected character: '"+t[r]+"'",new Mo(t[r],new Qs(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=t.indexOf(` +`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new Mo(i,new Qs(this,r,this.tokenRegex.lastIndex))}},H7=class{static{o(this,"Namespace")}constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Pt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(t)&&(a[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}},FVe=_Q;Ce("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});Ce("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});Ce("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});Ce("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});Ce("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});Ce("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Ce("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});UZ={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Ce("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Pt("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=UZ[t.text],n==null||n>=r)throw new Pt("Invalid base-"+r+" digit "+t.text);for(var i;(i=UZ[e.future().text])!=null&&i{var i=e.consumeArg().tokens;if(i.length!==1)throw new Pt("\\newcommand's first argument must be a macro name");var a=i[0].text,s=e.isDefined(a);if(s&&!t)throw new Pt("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!s&&!r)throw new Pt("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var l=0;if(i=e.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var u="",h=e.expandNextToken();h.text!=="]"&&h.text!=="EOF";)u+=h.text,h=e.expandNextToken();if(!u.match(/^\s*[0-9]+\s*$/))throw new Pt("Invalid number of arguments: "+u);l=parseInt(u),i=e.consumeArg().tokens}return s&&n||e.macros.set(a,{tokens:i,numArgs:l}),""},"newcommand");Ce("\\newcommand",e=>i8(e,!1,!0,!1));Ce("\\renewcommand",e=>i8(e,!0,!1,!1));Ce("\\providecommand",e=>i8(e,!0,!0,!0));Ce("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});Ce("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});Ce("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),kd[r],ui.math[r],ui.text[r]),""});Ce("\\bgroup","{");Ce("\\egroup","}");Ce("~","\\nobreakspace");Ce("\\lq","`");Ce("\\rq","'");Ce("\\aa","\\r a");Ce("\\AA","\\r A");Ce("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");Ce("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Ce("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");Ce("\u212C","\\mathscr{B}");Ce("\u2130","\\mathscr{E}");Ce("\u2131","\\mathscr{F}");Ce("\u210B","\\mathscr{H}");Ce("\u2110","\\mathscr{I}");Ce("\u2112","\\mathscr{L}");Ce("\u2133","\\mathscr{M}");Ce("\u211B","\\mathscr{R}");Ce("\u212D","\\mathfrak{C}");Ce("\u210C","\\mathfrak{H}");Ce("\u2128","\\mathfrak{Z}");Ce("\\Bbbk","\\Bbb{k}");Ce("\\llap","\\mathllap{\\textrm{#1}}");Ce("\\rlap","\\mathrlap{\\textrm{#1}}");Ce("\\clap","\\mathclap{\\textrm{#1}}");Ce("\\mathstrut","\\vphantom{(}");Ce("\\underbar","\\underline{\\text{#1}}");Ce("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');Ce("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");Ce("\\ne","\\neq");Ce("\u2260","\\neq");Ce("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");Ce("\u2209","\\notin");Ce("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");Ce("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");Ce("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");Ce("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");Ce("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");Ce("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");Ce("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");Ce("\u27C2","\\perp");Ce("\u203C","\\mathclose{!\\mkern-0.8mu!}");Ce("\u220C","\\notni");Ce("\u231C","\\ulcorner");Ce("\u231D","\\urcorner");Ce("\u231E","\\llcorner");Ce("\u231F","\\lrcorner");Ce("\xA9","\\copyright");Ce("\xAE","\\textregistered");Ce("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Ce("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Ce("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Ce("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Ce("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Ce("\u22EE","\\vdots");Ce("\\varGamma","\\mathit{\\Gamma}");Ce("\\varDelta","\\mathit{\\Delta}");Ce("\\varTheta","\\mathit{\\Theta}");Ce("\\varLambda","\\mathit{\\Lambda}");Ce("\\varXi","\\mathit{\\Xi}");Ce("\\varPi","\\mathit{\\Pi}");Ce("\\varSigma","\\mathit{\\Sigma}");Ce("\\varUpsilon","\\mathit{\\Upsilon}");Ce("\\varPhi","\\mathit{\\Phi}");Ce("\\varPsi","\\mathit{\\Psi}");Ce("\\varOmega","\\mathit{\\Omega}");Ce("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Ce("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Ce("\\boxed","\\fbox{$\\displaystyle{#1}$}");Ce("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Ce("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Ce("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Ce("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Ce("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");YZ={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},zVe=new Set(["bin","rel"]);Ce("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in YZ?t=YZ[r]:(r.slice(0,4)==="\\not"||r in ui.math&&zVe.has(ui.math[r].group))&&(t="\\dotsb"),t});a8={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ce("\\dotso",function(e){var t=e.future().text;return t in a8?"\\ldots\\,":"\\ldots"});Ce("\\dotsc",function(e){var t=e.future().text;return t in a8&&t!==","?"\\ldots\\,":"\\ldots"});Ce("\\cdots",function(e){var t=e.future().text;return t in a8?"\\@cdots\\,":"\\@cdots"});Ce("\\dotsb","\\cdots");Ce("\\dotsm","\\cdots");Ce("\\dotsi","\\!\\cdots");Ce("\\dotsx","\\ldots\\,");Ce("\\DOTSI","\\relax");Ce("\\DOTSB","\\relax");Ce("\\DOTSX","\\relax");Ce("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Ce("\\,","\\tmspace+{3mu}{.1667em}");Ce("\\thinspace","\\,");Ce("\\>","\\mskip{4mu}");Ce("\\:","\\tmspace+{4mu}{.2222em}");Ce("\\medspace","\\:");Ce("\\;","\\tmspace+{5mu}{.2777em}");Ce("\\thickspace","\\;");Ce("\\!","\\tmspace-{3mu}{.1667em}");Ce("\\negthinspace","\\!");Ce("\\negmedspace","\\tmspace-{4mu}{.2222em}");Ce("\\negthickspace","\\tmspace-{5mu}{.277em}");Ce("\\enspace","\\kern.5em ");Ce("\\enskip","\\hskip.5em\\relax");Ce("\\quad","\\hskip1em\\relax");Ce("\\qquad","\\hskip2em\\relax");Ce("\\tag","\\@ifstar\\tag@literal\\tag@paren");Ce("\\tag@paren","\\tag@literal{({#1})}");Ce("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Pt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Ce("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Ce("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Ce("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Ce("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Ce("\\newline","\\\\\\relax");Ce("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");GQ=$t(Fc["Main-Regular"][84][1]-.7*Fc["Main-Regular"][65][1]);Ce("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+GQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Ce("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+GQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Ce("\\hspace","\\@ifstar\\@hspacer\\@hspace");Ce("\\@hspace","\\hskip #1\\relax");Ce("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Ce("\\ordinarycolon",":");Ce("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Ce("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Ce("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Ce("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Ce("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Ce("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Ce("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Ce("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Ce("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Ce("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Ce("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Ce("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Ce("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Ce("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Ce("\u2237","\\dblcolon");Ce("\u2239","\\eqcolon");Ce("\u2254","\\coloneqq");Ce("\u2255","\\eqqcolon");Ce("\u2A74","\\Coloneqq");Ce("\\ratio","\\vcentcolon");Ce("\\coloncolon","\\dblcolon");Ce("\\colonequals","\\coloneqq");Ce("\\coloncolonequals","\\Coloneqq");Ce("\\equalscolon","\\eqqcolon");Ce("\\equalscoloncolon","\\Eqqcolon");Ce("\\colonminus","\\coloneq");Ce("\\coloncolonminus","\\Coloneq");Ce("\\minuscolon","\\eqcolon");Ce("\\minuscoloncolon","\\Eqcolon");Ce("\\coloncolonapprox","\\Colonapprox");Ce("\\coloncolonsim","\\Colonsim");Ce("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Ce("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Ce("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Ce("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Ce("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");Ce("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Ce("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Ce("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Ce("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Ce("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Ce("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Ce("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Ce("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Ce("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");Ce("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");Ce("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");Ce("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");Ce("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");Ce("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");Ce("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");Ce("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");Ce("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");Ce("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");Ce("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");Ce("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");Ce("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");Ce("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");Ce("\\imath","\\html@mathml{\\@imath}{\u0131}");Ce("\\jmath","\\html@mathml{\\@jmath}{\u0237}");Ce("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");Ce("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");Ce("\u27E6","\\llbracket");Ce("\u27E7","\\rrbracket");Ce("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");Ce("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");Ce("\u2983","\\lBrace");Ce("\u2984","\\rBrace");Ce("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");Ce("\u29B5","\\minuso");Ce("\\darr","\\downarrow");Ce("\\dArr","\\Downarrow");Ce("\\Darr","\\Downarrow");Ce("\\lang","\\langle");Ce("\\rang","\\rangle");Ce("\\uarr","\\uparrow");Ce("\\uArr","\\Uparrow");Ce("\\Uarr","\\Uparrow");Ce("\\N","\\mathbb{N}");Ce("\\R","\\mathbb{R}");Ce("\\Z","\\mathbb{Z}");Ce("\\alef","\\aleph");Ce("\\alefsym","\\aleph");Ce("\\Alpha","\\mathrm{A}");Ce("\\Beta","\\mathrm{B}");Ce("\\bull","\\bullet");Ce("\\Chi","\\mathrm{X}");Ce("\\clubs","\\clubsuit");Ce("\\cnums","\\mathbb{C}");Ce("\\Complex","\\mathbb{C}");Ce("\\Dagger","\\ddagger");Ce("\\diamonds","\\diamondsuit");Ce("\\empty","\\emptyset");Ce("\\Epsilon","\\mathrm{E}");Ce("\\Eta","\\mathrm{H}");Ce("\\exist","\\exists");Ce("\\harr","\\leftrightarrow");Ce("\\hArr","\\Leftrightarrow");Ce("\\Harr","\\Leftrightarrow");Ce("\\hearts","\\heartsuit");Ce("\\image","\\Im");Ce("\\infin","\\infty");Ce("\\Iota","\\mathrm{I}");Ce("\\isin","\\in");Ce("\\Kappa","\\mathrm{K}");Ce("\\larr","\\leftarrow");Ce("\\lArr","\\Leftarrow");Ce("\\Larr","\\Leftarrow");Ce("\\lrarr","\\leftrightarrow");Ce("\\lrArr","\\Leftrightarrow");Ce("\\Lrarr","\\Leftrightarrow");Ce("\\Mu","\\mathrm{M}");Ce("\\natnums","\\mathbb{N}");Ce("\\Nu","\\mathrm{N}");Ce("\\Omicron","\\mathrm{O}");Ce("\\plusmn","\\pm");Ce("\\rarr","\\rightarrow");Ce("\\rArr","\\Rightarrow");Ce("\\Rarr","\\Rightarrow");Ce("\\real","\\Re");Ce("\\reals","\\mathbb{R}");Ce("\\Reals","\\mathbb{R}");Ce("\\Rho","\\mathrm{P}");Ce("\\sdot","\\cdot");Ce("\\sect","\\S");Ce("\\spades","\\spadesuit");Ce("\\sub","\\subset");Ce("\\sube","\\subseteq");Ce("\\supe","\\supseteq");Ce("\\Tau","\\mathrm{T}");Ce("\\thetasym","\\vartheta");Ce("\\weierp","\\wp");Ce("\\Zeta","\\mathrm{Z}");Ce("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Ce("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Ce("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Ce("\\bra","\\mathinner{\\langle{#1}|}");Ce("\\ket","\\mathinner{|{#1}\\rangle}");Ce("\\braket","\\mathinner{\\langle{#1}\\rangle}");Ce("\\Bra","\\left\\langle#1\\right|");Ce("\\Ket","\\left|#1\\right\\rangle");VQ=o(e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,a=t.consumeArg().tokens,s=t.macros.get("|"),l=t.macros.get("\\|");t.macros.beginGroup();var u=o(f=>p=>{e&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=f;if(!f&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");t.macros.set("|",u(!1)),i.length&&t.macros.set("\\|",u(!0));var h=t.consumeArg().tokens,d=t.expandTokens([...a,...h,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}},"braketHelper");Ce("\\bra@ket",VQ(!1));Ce("\\bra@set",VQ(!0));Ce("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Ce("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Ce("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Ce("\\angln","{\\angl n}");Ce("\\blue","\\textcolor{##6495ed}{#1}");Ce("\\orange","\\textcolor{##ffa500}{#1}");Ce("\\pink","\\textcolor{##ff00af}{#1}");Ce("\\red","\\textcolor{##df0030}{#1}");Ce("\\green","\\textcolor{##28ae7b}{#1}");Ce("\\gray","\\textcolor{gray}{#1}");Ce("\\purple","\\textcolor{##9d38bd}{#1}");Ce("\\blueA","\\textcolor{##ccfaff}{#1}");Ce("\\blueB","\\textcolor{##80f6ff}{#1}");Ce("\\blueC","\\textcolor{##63d9ea}{#1}");Ce("\\blueD","\\textcolor{##11accd}{#1}");Ce("\\blueE","\\textcolor{##0c7f99}{#1}");Ce("\\tealA","\\textcolor{##94fff5}{#1}");Ce("\\tealB","\\textcolor{##26edd5}{#1}");Ce("\\tealC","\\textcolor{##01d1c1}{#1}");Ce("\\tealD","\\textcolor{##01a995}{#1}");Ce("\\tealE","\\textcolor{##208170}{#1}");Ce("\\greenA","\\textcolor{##b6ffb0}{#1}");Ce("\\greenB","\\textcolor{##8af281}{#1}");Ce("\\greenC","\\textcolor{##74cf70}{#1}");Ce("\\greenD","\\textcolor{##1fab54}{#1}");Ce("\\greenE","\\textcolor{##0d923f}{#1}");Ce("\\goldA","\\textcolor{##ffd0a9}{#1}");Ce("\\goldB","\\textcolor{##ffbb71}{#1}");Ce("\\goldC","\\textcolor{##ff9c39}{#1}");Ce("\\goldD","\\textcolor{##e07d10}{#1}");Ce("\\goldE","\\textcolor{##a75a05}{#1}");Ce("\\redA","\\textcolor{##fca9a9}{#1}");Ce("\\redB","\\textcolor{##ff8482}{#1}");Ce("\\redC","\\textcolor{##f9685d}{#1}");Ce("\\redD","\\textcolor{##e84d39}{#1}");Ce("\\redE","\\textcolor{##bc2612}{#1}");Ce("\\maroonA","\\textcolor{##ffbde0}{#1}");Ce("\\maroonB","\\textcolor{##ff92c6}{#1}");Ce("\\maroonC","\\textcolor{##ed5fa6}{#1}");Ce("\\maroonD","\\textcolor{##ca337c}{#1}");Ce("\\maroonE","\\textcolor{##9e034e}{#1}");Ce("\\purpleA","\\textcolor{##ddd7ff}{#1}");Ce("\\purpleB","\\textcolor{##c6b9fc}{#1}");Ce("\\purpleC","\\textcolor{##aa87ff}{#1}");Ce("\\purpleD","\\textcolor{##7854ab}{#1}");Ce("\\purpleE","\\textcolor{##543b78}{#1}");Ce("\\mintA","\\textcolor{##f5f9e8}{#1}");Ce("\\mintB","\\textcolor{##edf2df}{#1}");Ce("\\mintC","\\textcolor{##e0e5cc}{#1}");Ce("\\grayA","\\textcolor{##f6f7f7}{#1}");Ce("\\grayB","\\textcolor{##f0f1f2}{#1}");Ce("\\grayC","\\textcolor{##e3e5e6}{#1}");Ce("\\grayD","\\textcolor{##d6d8da}{#1}");Ce("\\grayE","\\textcolor{##babec2}{#1}");Ce("\\grayF","\\textcolor{##888d93}{#1}");Ce("\\grayG","\\textcolor{##626569}{#1}");Ce("\\grayH","\\textcolor{##3b3e40}{#1}");Ce("\\grayI","\\textcolor{##21242c}{#1}");Ce("\\kaBlue","\\textcolor{##314453}{#1}");Ce("\\kaGreen","\\textcolor{##71B307}{#1}");WQ={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},U7=class{static{o(this,"MacroExpander")}constructor(t,r,n){this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new H7(FVe,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new eS(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,i;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new Mo("EOF",n.loc)),this.pushTokens(i),new Mo("",Qs.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new Pt("Extra }",a)}else if(a.text==="EOF")throw new Pt("Unexpected end of input in a macro argument, expected '"+(t&&n?t[l]:"}")+"'",a);if(t&&n)if((s===0||s===1&&t[l]==="{")&&a.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Pt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new Pt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||t&&i.unexpandable){if(t&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new Pt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new Pt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new Pt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new Mo(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.includes("#"))for(var s=i.replace(/##/g,"");s.includes("#"+(a+1));)++a;for(var l=new eS(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var d={tokens:u,numArgs:a};return d}return i}isDefined(t){return this.macros.has(t)||kd.hasOwnProperty(t)||ui.math.hasOwnProperty(t)||ui.text.hasOwnProperty(t)||WQ.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:kd.hasOwnProperty(t)&&!kd[t].primitive}},jZ=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Wk=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),D7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},XZ={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},tS=class e{static{o(this,"Parser")}constructor(t,r){this.mode="math",this.gullet=new U7(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Pt("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new Mo("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(e.endOfExpression.has(i.text)||r&&i.text===r||t&&kd[i.text]&&kd[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,i=0;i=128)this.settings.strict&&(KZ(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),s={type:"textord",mode:"text",loc:Qs.range(t),text:r};else return null;if(this.consume(),a)for(var f=0;f{t.tagName==="A"&&t.hasAttribute("target")&&t.setAttribute(e,t.getAttribute("target")??"")}),Zs.addHook("afterSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute(e)&&(t.setAttribute("target",t.getAttribute(e)??""),t.removeAttribute(e),t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener"))})}var Vp,VVe,WVe,eJ,QQ,mr,HVe,UVe,YVe,jVe,tJ,Wp,XVe,KVe,qc,l8,ZVe,QVe,JQ,pS,ni,qp,JVe,ey,xt,Vr=F(()=>{"use strict";H0();ur();Vp=//gi,VVe=o(e=>e?tJ(e).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),WVe=(()=>{let e=!1;return()=>{e||(qVe(),e=!0)}})();o(qVe,"setupDompurifyHooks");eJ=o(e=>(WVe(),Zs.sanitize(e)),"removeScript"),QQ=o((e,t)=>{if(Gr(t)){let r=t.securityLevel;r==="antiscript"||r==="strict"||r==="sandbox"?e=eJ(e):r!=="loose"&&(e=tJ(e),e=e.replace(//g,">"),e=e.replace(/=/g,"="),e=jVe(e))}return e},"sanitizeMore"),mr=o((e,t)=>e&&(t.dompurifyConfig?e=Zs.sanitize(QQ(e,t),t.dompurifyConfig).toString():e=Zs.sanitize(QQ(e,t),{FORBID_TAGS:["style"]}).toString(),e),"sanitizeText"),HVe=o((e,t)=>typeof e=="string"?mr(e,t):e.flat().map(r=>mr(r,t)),"sanitizeTextOrArray"),UVe=o(e=>Vp.test(e),"hasBreaks"),YVe=o(e=>e.split(Vp),"splitBreaks"),jVe=o(e=>e.replace(/#br#/g,"
"),"placeholderToBreak"),tJ=o(e=>e.replace(Vp,"#br#"),"breakToPlaceholder"),Wp=o(e=>{let t="";return e&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},"getUrl"),XVe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.max(...t)},"getMax"),KVe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.min(...t)},"getMin"),qc=o(function(e){let t=e.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,e.split(t).length-1),"countOccurrence"),ZVe=o((e,t)=>{let r=l8(e,"~"),n=l8(t,"~");return r===1&&n===1},"shouldCombineSets"),QVe=o(e=>{let t=l8(e,"~"),r=!1;if(t<=1)return e;t%2!==0&&e.startsWith("~")&&(e=e.substring(1),r=!0);let n=[...e],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),JQ=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),pS=/\$\$(.*?)\$\$/g,ni=o(e=>(e.match(pS)?.length??0)>0,"hasKatex"),qp=o(async(e,t)=>{let r=document.createElement("div");r.innerHTML=await ey(e,t),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),JVe=o(async(e,t)=>{if(!ni(e))return e;if(!(JQ()||t.legacyMathML||t.forceLegacyMathML))return e.replace(pS,"MathML is unsupported in this environment.");{let{default:r}=await Promise.resolve().then(()=>(ZQ(),KQ)),n=t.forceLegacyMathML||!JQ()&&t.legacyMathML?"htmlAndMathml":"mathml";return e.split(Vp).map(i=>ni(i)?`

${i}
`:`
${i}
`).join("").replace(pS,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}return e.replace(pS,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),ey=o(async(e,t)=>mr(await JVe(e,t),t),"renderKatexSanitized"),xt={getRows:VVe,sanitizeText:mr,sanitizeTextOrArray:HVe,hasBreaks:UVe,splitBreaks:YVe,lineBreakRegex:Vp,removeScript:eJ,getUrl:Wp,evaluate:ya,getMax:XVe,getMin:KVe}});var u8,c8,rJ,ty,nJ,iJ,ts,Vl=F(()=>{"use strict";tK();ur();Vr();vt();u8={body:'?',height:80,width:80},c8=new Map,rJ=new Map,ty=o(e=>{for(let t of e){if(!t.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Z.debug("Registering icon pack:",t.name),"loader"in t)rJ.set(t.name,t.loader);else if("icons"in t)c8.set(t.name,t.icons);else throw Z.error("Invalid icon loader:",t),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),nJ=o(async(e,t)=>{let r=MD(e,!0,t!==void 0);if(!r)throw new Error(`Invalid icon name: ${e}`);let n=r.prefix||t;if(!n)throw new Error(`Icon name must contain a prefix: ${e}`);let i=c8.get(n);if(!i){let s=rJ.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},c8.set(n,i)}catch(l){throw Z.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=PD(i,r.name);if(!a)throw new Error(`Icon not found: ${e}`);return a},"getRegisteredIconData"),iJ=o(async e=>{try{return await nJ(e),!0}catch{return!1}},"isIconAvailable"),ts=o(async(e,t,r)=>{let n;try{n=await nJ(e,t?.fallbackPrefix)}catch(s){Z.error(s),n=u8}let i=BD(n,t),a=FD($D(i.body),{...i.attributes,...r});return mr(a,_t())},"getIconSVG")});function mS(e){for(var t=[],r=1;r{"use strict";o(mS,"dedent")});var gS,Hp,aJ,yS=F(()=>{"use strict";gS=/^([^\S\n\r]*)-{3}\s*[\n\r](.*?)[\n\r]\1-{3}\s*[\n\r]+/s,Hp=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,aJ=/\s*%%.*\n/gm});var ry,d8=F(()=>{"use strict";ry=class extends Error{static{o(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}}});var oh,ny,sb,f8,sJ,Up=F(()=>{"use strict";vt();yS();d8();oh={},ny=o(function(e,t){e=e.replace(gS,"").replace(Hp,"").replace(aJ,` +`);for(let[r,{detector:n}]of Object.entries(oh))if(n(e,t))return r;throw new ry(`No diagram type detected matching given configuration for text: ${e}`)},"detectType"),sb=o((...e)=>{for(let{id:t,detector:r,loader:n}of e)f8(t,r,n)},"registerLazyLoadedDiagrams"),f8=o((e,t,r)=>{oh[e]&&Z.warn(`Detector with key ${e} already exists. Overwriting.`),oh[e]={detector:t,loader:r},Z.debug(`Detector with key ${e} added${r?" with loader":""}`)},"addDetector"),sJ=o(e=>oh[e].loader,"getDiagramLoader")});var ob,oJ,p8=F(()=>{"use strict";ob=(function(){var e=o(function(J,se,ge,Te){for(ge=ge||{},Te=J.length;Te--;ge[J[Te]]=se);return ge},"o"),t=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],d=[1,67],f=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],T=[1,35],k=[1,36],C=[1,37],w=[1,38],S=[1,39],R=[1,40],L=[1,41],N=[1,42],I=[1,43],_=[1,44],A=[1,45],M=[1,46],D=[1,47],P=[1,48],B=[1,50],O=[1,51],$=[1,52],V=[1,53],G=[1,54],z=[1,55],W=[1,56],H=[1,57],j=[1,58],Q=[1,59],U=[1,60],oe=[14,42],te=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],le=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ie=[1,82],ae=[1,83],Re=[1,84],be=[1,85],Pe=[12,14,42],Ge=[12,14,33,42],Oe=[12,14,33,42,76,77,79,80],ue=[12,33],ye=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ke={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(se,ge,Te,we,Me,ve,ne){var q=ve.length-1;switch(Me){case 3:we.setDirection("TB");break;case 4:we.setDirection("BT");break;case 5:we.setDirection("RL");break;case 6:we.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:we.setC4Type(ve[q-3]);break;case 19:we.setTitle(ve[q].substring(6)),this.$=ve[q].substring(6);break;case 20:we.setAccDescription(ve[q].substring(15)),this.$=ve[q].substring(15);break;case 21:this.$=ve[q].trim(),we.setTitle(this.$);break;case 22:case 23:this.$=ve[q].trim(),we.setAccDescription(this.$);break;case 28:ve[q].splice(2,0,"ENTERPRISE"),we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 29:ve[q].splice(2,0,"SYSTEM"),we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 30:we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 31:ve[q].splice(2,0,"CONTAINER"),we.addContainerBoundary(...ve[q]),this.$=ve[q];break;case 32:we.addDeploymentNode("node",...ve[q]),this.$=ve[q];break;case 33:we.addDeploymentNode("nodeL",...ve[q]),this.$=ve[q];break;case 34:we.addDeploymentNode("nodeR",...ve[q]),this.$=ve[q];break;case 35:we.popBoundaryParseStack();break;case 39:we.addPersonOrSystem("person",...ve[q]),this.$=ve[q];break;case 40:we.addPersonOrSystem("external_person",...ve[q]),this.$=ve[q];break;case 41:we.addPersonOrSystem("system",...ve[q]),this.$=ve[q];break;case 42:we.addPersonOrSystem("system_db",...ve[q]),this.$=ve[q];break;case 43:we.addPersonOrSystem("system_queue",...ve[q]),this.$=ve[q];break;case 44:we.addPersonOrSystem("external_system",...ve[q]),this.$=ve[q];break;case 45:we.addPersonOrSystem("external_system_db",...ve[q]),this.$=ve[q];break;case 46:we.addPersonOrSystem("external_system_queue",...ve[q]),this.$=ve[q];break;case 47:we.addContainer("container",...ve[q]),this.$=ve[q];break;case 48:we.addContainer("container_db",...ve[q]),this.$=ve[q];break;case 49:we.addContainer("container_queue",...ve[q]),this.$=ve[q];break;case 50:we.addContainer("external_container",...ve[q]),this.$=ve[q];break;case 51:we.addContainer("external_container_db",...ve[q]),this.$=ve[q];break;case 52:we.addContainer("external_container_queue",...ve[q]),this.$=ve[q];break;case 53:we.addComponent("component",...ve[q]),this.$=ve[q];break;case 54:we.addComponent("component_db",...ve[q]),this.$=ve[q];break;case 55:we.addComponent("component_queue",...ve[q]),this.$=ve[q];break;case 56:we.addComponent("external_component",...ve[q]),this.$=ve[q];break;case 57:we.addComponent("external_component_db",...ve[q]),this.$=ve[q];break;case 58:we.addComponent("external_component_queue",...ve[q]),this.$=ve[q];break;case 60:we.addRel("rel",...ve[q]),this.$=ve[q];break;case 61:we.addRel("birel",...ve[q]),this.$=ve[q];break;case 62:we.addRel("rel_u",...ve[q]),this.$=ve[q];break;case 63:we.addRel("rel_d",...ve[q]),this.$=ve[q];break;case 64:we.addRel("rel_l",...ve[q]),this.$=ve[q];break;case 65:we.addRel("rel_r",...ve[q]),this.$=ve[q];break;case 66:we.addRel("rel_b",...ve[q]),this.$=ve[q];break;case 67:ve[q].splice(0,1),we.addRel("rel",...ve[q]),this.$=ve[q];break;case 68:we.updateElStyle("update_el_style",...ve[q]),this.$=ve[q];break;case 69:we.updateRelStyle("update_rel_style",...ve[q]),this.$=ve[q];break;case 70:we.updateLayoutConfig("update_layout_config",...ve[q]),this.$=ve[q];break;case 71:this.$=[ve[q]];break;case 72:ve[q].unshift(ve[q-1]),this.$=ve[q];break;case 73:case 75:this.$=ve[q].trim();break;case 74:let he={};he[ve[q-1].trim()]=ve[q].trim(),this.$=he;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:70,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:71,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:72,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:73,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{14:[1,74]},e(oe,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U}),e(oe,[2,14]),e(te,[2,16],{12:[1,76]}),e(oe,[2,36],{12:[1,77]}),e(le,[2,19]),e(le,[2,20]),{25:[1,78]},{27:[1,79]},e(le,[2,23]),{35:80,75:81,76:ie,77:ae,79:Re,80:be},{35:86,75:81,76:ie,77:ae,79:Re,80:be},{35:87,75:81,76:ie,77:ae,79:Re,80:be},{35:88,75:81,76:ie,77:ae,79:Re,80:be},{35:89,75:81,76:ie,77:ae,79:Re,80:be},{35:90,75:81,76:ie,77:ae,79:Re,80:be},{35:91,75:81,76:ie,77:ae,79:Re,80:be},{35:92,75:81,76:ie,77:ae,79:Re,80:be},{35:93,75:81,76:ie,77:ae,79:Re,80:be},{35:94,75:81,76:ie,77:ae,79:Re,80:be},{35:95,75:81,76:ie,77:ae,79:Re,80:be},{35:96,75:81,76:ie,77:ae,79:Re,80:be},{35:97,75:81,76:ie,77:ae,79:Re,80:be},{35:98,75:81,76:ie,77:ae,79:Re,80:be},{35:99,75:81,76:ie,77:ae,79:Re,80:be},{35:100,75:81,76:ie,77:ae,79:Re,80:be},{35:101,75:81,76:ie,77:ae,79:Re,80:be},{35:102,75:81,76:ie,77:ae,79:Re,80:be},{35:103,75:81,76:ie,77:ae,79:Re,80:be},{35:104,75:81,76:ie,77:ae,79:Re,80:be},e(Pe,[2,59]),{35:105,75:81,76:ie,77:ae,79:Re,80:be},{35:106,75:81,76:ie,77:ae,79:Re,80:be},{35:107,75:81,76:ie,77:ae,79:Re,80:be},{35:108,75:81,76:ie,77:ae,79:Re,80:be},{35:109,75:81,76:ie,77:ae,79:Re,80:be},{35:110,75:81,76:ie,77:ae,79:Re,80:be},{35:111,75:81,76:ie,77:ae,79:Re,80:be},{35:112,75:81,76:ie,77:ae,79:Re,80:be},{35:113,75:81,76:ie,77:ae,79:Re,80:be},{35:114,75:81,76:ie,77:ae,79:Re,80:be},{35:115,75:81,76:ie,77:ae,79:Re,80:be},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{12:[1,118],33:[1,117]},{35:119,75:81,76:ie,77:ae,79:Re,80:be},{35:120,75:81,76:ie,77:ae,79:Re,80:be},{35:121,75:81,76:ie,77:ae,79:Re,80:be},{35:122,75:81,76:ie,77:ae,79:Re,80:be},{35:123,75:81,76:ie,77:ae,79:Re,80:be},{35:124,75:81,76:ie,77:ae,79:Re,80:be},{35:125,75:81,76:ie,77:ae,79:Re,80:be},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(oe,[2,15]),e(te,[2,17],{21:22,19:130,22:t,23:r,24:n,26:i,28:a}),e(oe,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U}),e(le,[2,21]),e(le,[2,22]),e(Pe,[2,39]),e(Ge,[2,71],{75:81,35:132,76:ie,77:ae,79:Re,80:be}),e(Oe,[2,73]),{78:[1,133]},e(Oe,[2,75]),e(Oe,[2,76]),e(Pe,[2,40]),e(Pe,[2,41]),e(Pe,[2,42]),e(Pe,[2,43]),e(Pe,[2,44]),e(Pe,[2,45]),e(Pe,[2,46]),e(Pe,[2,47]),e(Pe,[2,48]),e(Pe,[2,49]),e(Pe,[2,50]),e(Pe,[2,51]),e(Pe,[2,52]),e(Pe,[2,53]),e(Pe,[2,54]),e(Pe,[2,55]),e(Pe,[2,56]),e(Pe,[2,57]),e(Pe,[2,58]),e(Pe,[2,60]),e(Pe,[2,61]),e(Pe,[2,62]),e(Pe,[2,63]),e(Pe,[2,64]),e(Pe,[2,65]),e(Pe,[2,66]),e(Pe,[2,67]),e(Pe,[2,68]),e(Pe,[2,69]),e(Pe,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(ue,[2,28]),e(ue,[2,29]),e(ue,[2,30]),e(ue,[2,31]),e(ue,[2,32]),e(ue,[2,33]),e(ue,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(te,[2,18]),e(oe,[2,38]),e(Ge,[2,72]),e(Oe,[2,74]),e(Pe,[2,24]),e(Pe,[2,35]),e(ye,[2,25]),e(ye,[2,26],{12:[1,138]}),e(ye,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(se,ge){if(ge.recoverable)this.trace(se);else{var Te=new Error(se);throw Te.hash=ge,Te}},"parseError"),parse:o(function(se){var ge=this,Te=[0],we=[],Me=[null],ve=[],ne=this.table,q="",he=0,X=0,fe=0,K=2,qe=1,_e=ve.slice.call(arguments,1),Be=Object.create(this.lexer),Ne={yy:{}};for(var He in this.yy)Object.prototype.hasOwnProperty.call(this.yy,He)&&(Ne.yy[He]=this.yy[He]);Be.setInput(se,Ne.yy),Ne.yy.lexer=Be,Ne.yy.parser=this,typeof Be.yylloc>"u"&&(Be.yylloc={});var $e=Be.yylloc;ve.push($e);var Xe=Be.options&&Be.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(Ze){Te.length=Te.length-2*Ze,Me.length=Me.length-Ze,ve.length=ve.length-Ze}o(Fe,"popStack");function Ke(){var Ze;return Ze=we.pop()||Be.lex()||qe,typeof Ze!="number"&&(Ze instanceof Array&&(we=Ze,Ze=we.pop()),Ze=ge.symbols_[Ze]||Ze),Ze}o(Ke,"lex");for(var xe,mt,Le,ft,wt,zt,St={},At,bt,me,lt;;){if(Le=Te[Te.length-1],this.defaultActions[Le]?ft=this.defaultActions[Le]:((xe===null||typeof xe>"u")&&(xe=Ke()),ft=ne[Le]&&ne[Le][xe]),typeof ft>"u"||!ft.length||!ft[0]){var gt="";lt=[];for(At in ne[Le])this.terminals_[At]&&At>K&<.push("'"+this.terminals_[At]+"'");Be.showPosition?gt="Parse error on line "+(he+1)+`: +`+Be.showPosition()+` +Expecting `+lt.join(", ")+", got '"+(this.terminals_[xe]||xe)+"'":gt="Parse error on line "+(he+1)+": Unexpected "+(xe==qe?"end of input":"'"+(this.terminals_[xe]||xe)+"'"),this.parseError(gt,{text:Be.match,token:this.terminals_[xe]||xe,line:Be.yylineno,loc:$e,expected:lt})}if(ft[0]instanceof Array&&ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Le+", token: "+xe);switch(ft[0]){case 1:Te.push(xe),Me.push(Be.yytext),ve.push(Be.yylloc),Te.push(ft[1]),xe=null,mt?(xe=mt,mt=null):(X=Be.yyleng,q=Be.yytext,he=Be.yylineno,$e=Be.yylloc,fe>0&&fe--);break;case 2:if(bt=this.productions_[ft[1]][1],St.$=Me[Me.length-bt],St._$={first_line:ve[ve.length-(bt||1)].first_line,last_line:ve[ve.length-1].last_line,first_column:ve[ve.length-(bt||1)].first_column,last_column:ve[ve.length-1].last_column},Xe&&(St._$.range=[ve[ve.length-(bt||1)].range[0],ve[ve.length-1].range[1]]),zt=this.performAction.apply(St,[q,X,he,Ne.yy,ft[1],Me,ve].concat(_e)),typeof zt<"u")return zt;bt&&(Te=Te.slice(0,-1*bt*2),Me=Me.slice(0,-1*bt),ve=ve.slice(0,-1*bt)),Te.push(this.productions_[ft[1]][0]),Me.push(St.$),ve.push(St._$),me=ne[Te[Te.length-2]][Te[Te.length-1]],Te.push(me);break;case 3:return!0}}return!0},"parse")},ce=(function(){var J={EOF:1,parseError:o(function(ge,Te){if(this.yy.parser)this.yy.parser.parseError(ge,Te);else throw new Error(ge)},"parseError"),setInput:o(function(se,ge){return this.yy=ge||this.yy||{},this._input=se,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var se=this._input[0];this.yytext+=se,this.yyleng++,this.offset++,this.match+=se,this.matched+=se;var ge=se.match(/(?:\r\n?|\n).*/g);return ge?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),se},"input"),unput:o(function(se){var ge=se.length,Te=se.split(/(?:\r\n?|\n)/g);this._input=se+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ge),this.offset-=ge;var we=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Te.length-1&&(this.yylineno-=Te.length-1);var Me=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Te?(Te.length===we.length?this.yylloc.first_column:0)+we[we.length-Te.length].length-Te[0].length:this.yylloc.first_column-ge},this.options.ranges&&(this.yylloc.range=[Me[0],Me[0]+this.yyleng-ge]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(se){this.unput(this.match.slice(se))},"less"),pastInput:o(function(){var se=this.matched.substr(0,this.matched.length-this.match.length);return(se.length>20?"...":"")+se.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var se=this.match;return se.length<20&&(se+=this._input.substr(0,20-se.length)),(se.substr(0,20)+(se.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var se=this.pastInput(),ge=new Array(se.length+1).join("-");return se+this.upcomingInput()+` +`+ge+"^"},"showPosition"),test_match:o(function(se,ge){var Te,we,Me;if(this.options.backtrack_lexer&&(Me={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Me.yylloc.range=this.yylloc.range.slice(0))),we=se[0].match(/(?:\r\n?|\n).*/g),we&&(this.yylineno+=we.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:we?we[we.length-1].length-we[we.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+se[0].length},this.yytext+=se[0],this.match+=se[0],this.matches=se,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(se[0].length),this.matched+=se[0],Te=this.performAction.call(this,this.yy,this,ge,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Te)return Te;if(this._backtrack){for(var ve in Me)this[ve]=Me[ve];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var se,ge,Te,we;this._more||(this.yytext="",this.match="");for(var Me=this._currentRules(),ve=0;vege[0].length)){if(ge=Te,we=ve,this.options.backtrack_lexer){if(se=this.test_match(Te,Me[ve]),se!==!1)return se;if(this._backtrack){ge=!1;continue}else return!1}else if(!this.options.flex)break}return ge?(se=this.test_match(ge,Me[we]),se!==!1?se:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ge=this.next();return ge||this.lex()},"lex"),begin:o(function(ge){this.conditionStack.push(ge)},"begin"),popState:o(function(){var ge=this.conditionStack.length-1;return ge>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ge){return ge=this.conditionStack.length-1-Math.abs(ge||0),ge>=0?this.conditionStack[ge]:"INITIAL"},"topState"),pushState:o(function(ge){this.begin(ge)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(ge,Te,we,Me){var ve=Me;switch(we){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[65,66,67,68],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return J})();ke.lexer=ce;function re(){this.yy={}}return o(re,"Parser"),re.prototype=ke,ke.Parser=re,new re})();ob.parser=ob;oJ=ob});var eWe,tWe,Wr,ul,$n=F(()=>{"use strict";vt();eWe=o(function(e,t){for(let r of t)e.attr(r[0],r[1])},"d3Attrs"),tWe=o(function(e,t,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${t}px;`)):(n.set("height",e),n.set("width",t)),n},"calculateSvgSizeAttrs"),Wr=o(function(e,t,r,n){let i=tWe(t,r,n);eWe(e,i)},"configureSvgSize"),ul=o(function(e,t,r,n){let i=t.node().getBBox(),a=i.width,s=i.height;Z.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;Z.info(`Graph bounds: ${l}x${u}`,e),l=a+r*2,u=s+r*2,Z.info(`Calculated bounds: ${l}x${u}`),Wr(t,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;t.attr("viewBox",h)},"setupGraphViewbox")});function m8(e){return[...e.cssRules].map(t=>t.cssText).join(` +`)}var vS,rWe,lJ,cJ,g8=F(()=>{"use strict";vt();vS={};o(m8,"cssStyleSheetToString");rWe=o((e,t,r,n)=>{let i="";return e in vS&&vS[e]?i=vS[e]({...r,svgId:n}):Z.warn(`No theme found for ${e}`),` & { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + fill: ${r.textColor} + } + @keyframes edge-animation-frame { + from { + stroke-dashoffset: 0; + } + } + @keyframes dash { + to { + stroke-dashoffset: 0; + } + } + & .edge-animation-slow { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 50s linear infinite; + stroke-linecap: round; + } + & .edge-animation-fast { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 20s linear infinite; + stroke-linecap: round; + } + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${r.errorBkgColor}; + } + & .error-text { + fill: ${r.errorTextColor}; + stroke: ${r.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: ${r.strokeWidth??1}px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + & .edge-thickness-invisible { + stroke-width: 0; + fill: none; + } + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${r.lineColor}; + stroke: ${r.lineColor}; + } + & .marker.cross { + stroke: ${r.lineColor}; + } + + & svg { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + } + & p { + margin: 0 + } + + ${i} + .node .neo-node { + stroke: ${r.nodeBorder}; + } + + [data-look="neo"].node rect, [data-look="neo"].cluster rect, [data-look="neo"].node polygon { + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + [data-look="neo"].swimlane.cluster rect { + filter: none; + } + + + [data-look="neo"].node path { + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + stroke-width: ${r.strokeWidth??1}px; + } + + [data-look="neo"].node .outer-path { + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + [data-look="neo"].node .neo-line path { + stroke: ${r.nodeBorder}; + filter: none; + } + + [data-look="neo"].node circle{ + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + [data-look="neo"].node circle .state-start{ + fill: #000000; + } + + [data-look="neo"].icon-shape .icon { + fill: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + [data-look="neo"].icon-shape .icon-neo path { + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + ${t} +`},"getStyles"),lJ=o((e,t)=>{t!==void 0&&(vS[e]=t)},"addStylesForDiagram"),cJ=rWe});var lb={};ir(lb,{clear:()=>yr,getAccDescription:()=>_r,getAccTitle:()=>Ar,getDiagramTitle:()=>Lr,setAccDescription:()=>Rr,setAccTitle:()=>kr,setDiagramTitle:()=>Or});var y8,v8,x8,b8,yr,kr,Ar,Rr,_r,Or,Lr,Nn=F(()=>{"use strict";Vr();ur();y8="",v8="",x8="",b8=o(e=>mr(e,_t()),"sanitizeText"),yr=o(()=>{y8="",x8="",v8=""},"clear"),kr=o(e=>{y8=b8(e).replace(/^\s+/g,"")},"setAccTitle"),Ar=o(()=>y8,"getAccTitle"),Rr=o(e=>{x8=b8(e).replace(/\n\s+/g,` +`)},"setAccDescription"),_r=o(()=>x8,"getAccDescription"),Or=o(e=>{v8=b8(e)},"setDiagramTitle"),Lr=o(()=>v8,"getDiagramTitle")});var uJ,nWe,Ae,cb,bS,ub,hb,iWe,xS,Yp,db,T8,Xt=F(()=>{"use strict";Up();vt();ur();Vr();$n();g8();Nn();uJ=Z,nWe=Bx,Ae=_t,cb=_k,bS=Cd,ub=o(e=>mr(e,Ae()),"sanitizeText"),hb=ul,iWe=o(()=>lb,"getCommonDb"),xS={},Yp=o((e,t,r)=>{xS[e]&&uJ.warn(`Diagram with id ${e} already registered. Overwriting.`),xS[e]=t,r&&f8(e,r),lJ(e,t.styles),t.injectUtils?.(uJ,nWe,Ae,ub,hb,iWe(),()=>{})},"registerDiagram"),db=o(e=>{if(e in xS)return xS[e];throw new T8(e)},"getDiagram"),T8=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}});var ql,Dd,Ss,Wl,Hc,fb,C8,w8,TS,CS,hJ,aWe,sWe,oWe,lWe,cWe,uWe,hWe,dWe,fWe,pWe,mWe,gWe,yWe,vWe,xWe,bWe,TWe,dJ,CWe,wWe,fJ,kWe,SWe,EWe,AWe,Id,RWe,_We,LWe,DWe,IWe,pb,k8=F(()=>{"use strict";Xt();Vr();Nn();ql=[],Dd=[""],Ss="global",Wl="",Hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],fb=[],C8="",w8=!1,TS=4,CS=2,aWe=o(function(){return hJ},"getC4Type"),sWe=o(function(e){hJ=mr(e,Ae())},"setC4Type"),oWe=o(function(e,t,r,n,i,a,s,l,u){if(e==null||t===void 0||t===null||r===void 0||r===null||n===void 0||n===null)return;let h={},d=fb.find(f=>f.from===t&&f.to===r);if(d?h=d:fb.push(h),h.type=e,h.from=t,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[f,p]=Object.entries(i)[0];h[f]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[f,p]=Object.entries(a)[0];h[f]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[f,p]=Object.entries(s)[0];h[f]=p}else h.sprite=s;if(typeof l=="object"){let[f,p]=Object.entries(l)[0];h[f]=p}else h.tags=l;if(typeof u=="object"){let[f,p]=Object.entries(u)[0];h[f]=p}else h.link=u;h.wrap=Id()},"addRel"),lWe=o(function(e,t,r,n,i,a,s){if(t===null||r===null)return;let l={},u=ql.find(h=>h.alias===t);if(u&&t===u.alias?l=u:(l.alias=t,ql.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,d]=Object.entries(n)[0];l[h]={text:d}}else l.descr={text:n};if(typeof i=="object"){let[h,d]=Object.entries(i)[0];l[h]=d}else l.sprite=i;if(typeof a=="object"){let[h,d]=Object.entries(a)[0];l[h]=d}else l.tags=a;if(typeof s=="object"){let[h,d]=Object.entries(s)[0];l[h]=d}else l.link=s;l.typeC4Shape={text:e},l.parentBoundary=Ss,l.wrap=Id()},"addPersonOrSystem"),cWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=ql.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,ql.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Id(),u.typeC4Shape={text:e},u.parentBoundary=Ss},"addContainer"),uWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=ql.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,ql.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Id(),u.typeC4Shape={text:e},u.parentBoundary=Ss},"addComponent"),hWe=o(function(e,t,r,n,i){if(e===null||t===null)return;let a={},s=Hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,Hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ss,a.wrap=Id(),Wl=Ss,Ss=e,Dd.push(Wl)},"addPersonOrSystemBoundary"),dWe=o(function(e,t,r,n,i){if(e===null||t===null)return;let a={},s=Hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,Hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ss,a.wrap=Id(),Wl=Ss,Ss=e,Dd.push(Wl)},"addContainerBoundary"),fWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=Hc.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,Hc.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.nodeType=e,u.parentBoundary=Ss,u.wrap=Id(),Wl=Ss,Ss=t,Dd.push(Wl)},"addDeploymentNode"),pWe=o(function(){Ss=Wl,Dd.pop(),Wl=Dd.pop(),Dd.push(Wl)},"popBoundaryParseStack"),mWe=o(function(e,t,r,n,i,a,s,l,u,h,d){let f=ql.find(p=>p.alias===t);if(!(f===void 0&&(f=Hc.find(p=>p.alias===t),f===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];f[p]=m}else f.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];f[p]=m}else f.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];f[p]=m}else f.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];f[p]=m}else f.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];f[p]=m}else f.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];f[p]=m}else f.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];f[p]=m}else f.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];f[p]=m}else f.legendText=h;if(d!=null)if(typeof d=="object"){let[p,m]=Object.entries(d)[0];f[p]=m}else f.legendSprite=d}},"updateElStyle"),gWe=o(function(e,t,r,n,i,a,s){let l=fb.find(u=>u.from===t&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),yWe=o(function(e,t,r){let n=TS,i=CS;if(typeof t=="object"){let a=Object.values(t)[0];n=parseInt(a)}else n=parseInt(t);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(TS=n),i>=1&&(CS=i)},"updateLayoutConfig"),vWe=o(function(){return TS},"getC4ShapeInRow"),xWe=o(function(){return CS},"getC4BoundaryInRow"),bWe=o(function(){return Ss},"getCurrentBoundaryParse"),TWe=o(function(){return Wl},"getParentBoundaryParse"),dJ=o(function(e){return e==null?ql:ql.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),CWe=o(function(e){return ql.find(t=>t.alias===e)},"getC4Shape"),wWe=o(function(e){return Object.keys(dJ(e))},"getC4ShapeKeys"),fJ=o(function(e){return e==null?Hc:Hc.filter(t=>t.parentBoundary===e)},"getBoundaries"),kWe=fJ,SWe=o(function(){return fb},"getRels"),EWe=o(function(){return C8},"getTitle"),AWe=o(function(e){w8=e},"setWrap"),Id=o(function(){return w8},"autoWrap"),RWe=o(function(){ql=[],Hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Wl="",Ss="global",Dd=[""],fb=[],Dd=[""],C8="",w8=!1,TS=4,CS=2},"clear"),_We={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},LWe={FILLED:0,OPEN:1},DWe={LEFTOF:0,RIGHTOF:1,OVER:2},IWe=o(function(e){C8=mr(e,Ae())},"setTitle"),pb={addPersonOrSystem:lWe,addPersonOrSystemBoundary:hWe,addContainer:cWe,addContainerBoundary:dWe,addComponent:uWe,addDeploymentNode:fWe,popBoundaryParseStack:pWe,addRel:oWe,updateElStyle:mWe,updateRelStyle:gWe,updateLayoutConfig:yWe,autoWrap:Id,setWrap:AWe,getC4ShapeArray:dJ,getC4Shape:CWe,getC4ShapeKeys:wWe,getBoundaries:fJ,getBoundarys:kWe,getCurrentBoundaryParse:bWe,getParentBoundaryParse:TWe,getRels:SWe,getTitle:EWe,getC4Type:aWe,getC4ShapeInRow:vWe,getC4BoundaryInRow:xWe,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,getConfig:o(()=>Ae().c4,"getConfig"),clear:RWe,LINETYPE:_We,ARROWTYPE:LWe,PLACEMENT:DWe,setTitle:IWe,setC4Type:sWe}});function jp(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}var S8=F(()=>{"use strict";o(jp,"ascending")});function E8(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}var pJ=F(()=>{"use strict";o(E8,"descending")});function Xp(e){let t,r,n;e.length!==2?(t=jp,r=o((l,u)=>jp(e(l),u),"compare2"),n=o((l,u)=>e(l)-u,"delta")):(t=e===jp||e===E8?e:MWe,r=e,n=e);function i(l,u,h=0,d=l.length){if(h>>1;r(l[f],u)<0?h=f+1:d=f}while(h>>1;r(l[f],u)<=0?h=f+1:d=f}while(hh&&n(l[f-1],u)>-n(l[f],u)?f-1:f}return o(s,"center"),{left:i,center:s,right:a}}function MWe(){return 0}var A8=F(()=>{"use strict";S8();pJ();o(Xp,"bisector");o(MWe,"zero")});function R8(e){return e===null?NaN:+e}var mJ=F(()=>{"use strict";o(R8,"number")});var gJ,yJ,NWe,PWe,_8,vJ=F(()=>{"use strict";S8();A8();mJ();gJ=Xp(jp),yJ=gJ.right,NWe=gJ.left,PWe=Xp(R8).center,_8=yJ});function xJ({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function OWe({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function BWe({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function $We(e){return e!==null&&typeof e=="object"?e.valueOf():e}var iy,bJ=F(()=>{"use strict";iy=class extends Map{static{o(this,"InternMap")}constructor(t,r=$We){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(xJ(this,t))}has(t){return super.has(xJ(this,t))}set(t,r){return super.set(OWe(this,t),r)}delete(t){return super.delete(BWe(this,t))}};o(xJ,"intern_get");o(OWe,"intern_set");o(BWe,"intern_delete");o($We,"keyof")});function wS(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=FWe?10:a>=zWe?5:a>=GWe?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(e*h),u=Math.round(t*h),l/ht&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(e/h),u=Math.round(t/h),l*ht&&--u),u0))return[];if(e===t)return[e];let n=t=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";FWe=Math.sqrt(50),zWe=Math.sqrt(10),GWe=Math.sqrt(2);o(wS,"tickSpec");o(kS,"ticks");o(mb,"tickIncrement");o(ay,"tickStep")});function SS(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r=i)&&(r=i)}return r}var CJ=F(()=>{"use strict";o(SS,"max")});function ES(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var wJ=F(()=>{"use strict";o(ES,"min")});function AS(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n{"use strict";o(AS,"range")});var Md=F(()=>{"use strict";vJ();A8();CJ();wJ();kJ();TJ();bJ()});function L8(e){return e}var SJ=F(()=>{"use strict";o(L8,"default")});function VWe(e){return"translate("+e+",0)"}function WWe(e){return"translate(0,"+e+")"}function qWe(e){return t=>+e(t)}function HWe(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function UWe(){return!this.__axis}function AJ(e,t){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=e===_S||e===RS?-1:1,d=e===RS||e===D8?"x":"y",f=e===_S||e===I8?VWe:WWe;function p(m){var g=n??(t.ticks?t.ticks.apply(t,r):t.domain()),y=i??(t.tickFormat?t.tickFormat.apply(t,r):L8),v=Math.max(a,0)+l,x=t.range(),b=+x[0]+u,T=+x[x.length-1]+u,k=(t.bandwidth?HWe:qWe)(t.copy(),u),C=m.selection?m.selection():m,w=C.selectAll(".domain").data([null]),S=C.selectAll(".tick").data(g,t).order(),R=S.exit(),L=S.enter().append("g").attr("class","tick"),N=S.select("line"),I=S.select("text");w=w.merge(w.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),S=S.merge(L),N=N.merge(L.append("line").attr("stroke","currentColor").attr(d+"2",h*a)),I=I.merge(L.append("text").attr("fill","currentColor").attr(d,h*v).attr("dy",e===_S?"0em":e===I8?"0.71em":"0.32em")),m!==C&&(w=w.transition(m),S=S.transition(m),N=N.transition(m),I=I.transition(m),R=R.transition(m).attr("opacity",EJ).attr("transform",function(_){return isFinite(_=k(_))?f(_+u):this.getAttribute("transform")}),L.attr("opacity",EJ).attr("transform",function(_){var A=this.parentNode.__axis;return f((A&&isFinite(A=A(_))?A:k(_))+u)})),R.remove(),w.attr("d",e===RS||e===D8?s?"M"+h*s+","+b+"H"+u+"V"+T+"H"+h*s:"M"+u+","+b+"V"+T:s?"M"+b+","+h*s+"V"+u+"H"+T+"V"+h*s:"M"+b+","+u+"H"+T),S.attr("opacity",1).attr("transform",function(_){return f(k(_)+u)}),N.attr(d+"2",h*a),I.attr(d,h*v).text(y),C.filter(UWe).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===D8?"start":e===RS?"end":"middle"),C.each(function(){this.__axis=k})}return o(p,"axis"),p.scale=function(m){return arguments.length?(t=m,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function M8(e){return AJ(_S,e)}function N8(e){return AJ(I8,e)}var _S,D8,I8,RS,EJ,RJ=F(()=>{"use strict";SJ();_S=1,D8=2,I8=3,RS=4,EJ=1e-6;o(VWe,"translateX");o(WWe,"translateY");o(qWe,"number");o(HWe,"center");o(UWe,"entering");o(AJ,"axis");o(M8,"axisTop");o(N8,"axisBottom")});var _J=F(()=>{"use strict";RJ()});function DJ(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function XWe(e,t){for(var r=0,n=e.length,i;r{"use strict";YWe={value:o(()=>{},"value")};o(DJ,"dispatch");o(LS,"Dispatch");o(jWe,"parseTypenames");LS.prototype=DJ.prototype={constructor:LS,on:o(function(e,t){var r=this._,n=jWe(e+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";IJ()});var DS,B8,$8=F(()=>{"use strict";DS="http://www.w3.org/1999/xhtml",B8={svg:"http://www.w3.org/2000/svg",xhtml:DS,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function Uc(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),B8.hasOwnProperty(t)?{space:B8[t],local:e}:e}var IS=F(()=>{"use strict";$8();o(Uc,"default")});function KWe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===DS&&t.documentElement.namespaceURI===DS?t.createElement(e):t.createElementNS(r,e)}}function ZWe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function gb(e){var t=Uc(e);return(t.local?ZWe:KWe)(t)}var F8=F(()=>{"use strict";IS();$8();o(KWe,"creatorInherit");o(ZWe,"creatorFixed");o(gb,"default")});function QWe(){}function Nd(e){return e==null?QWe:function(){return this.querySelector(e)}}var MS=F(()=>{"use strict";o(QWe,"none");o(Nd,"default")});function z8(e){typeof e!="function"&&(e=Nd(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{"use strict";Hl();MS();o(z8,"default")});function G8(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}var NJ=F(()=>{"use strict";o(G8,"array")});function JWe(){return[]}function sy(e){return e==null?JWe:function(){return this.querySelectorAll(e)}}var V8=F(()=>{"use strict";o(JWe,"empty");o(sy,"default")});function eqe(e){return function(){return G8(e.apply(this,arguments))}}function W8(e){typeof e=="function"?e=eqe(e):e=sy(e);for(var t=this._groups,r=t.length,n=[],i=[],a=0;a{"use strict";Hl();NJ();V8();o(eqe,"arrayAll");o(W8,"default")});function oy(e){return function(){return this.matches(e)}}function NS(e){return function(t){return t.matches(e)}}var yb=F(()=>{"use strict";o(oy,"default");o(NS,"childMatcher")});function rqe(e){return function(){return tqe.call(this.children,e)}}function nqe(){return this.firstElementChild}function q8(e){return this.select(e==null?nqe:rqe(typeof e=="function"?e:NS(e)))}var tqe,OJ=F(()=>{"use strict";yb();tqe=Array.prototype.find;o(rqe,"childFind");o(nqe,"childFirst");o(q8,"default")});function aqe(){return Array.from(this.children)}function sqe(e){return function(){return iqe.call(this.children,e)}}function H8(e){return this.selectAll(e==null?aqe:sqe(typeof e=="function"?e:NS(e)))}var iqe,BJ=F(()=>{"use strict";yb();iqe=Array.prototype.filter;o(aqe,"children");o(sqe,"childrenFilter");o(H8,"default")});function U8(e){typeof e!="function"&&(e=oy(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{"use strict";Hl();yb();o(U8,"default")});function vb(e){return new Array(e.length)}var Y8=F(()=>{"use strict";o(vb,"default")});function j8(){return new Ai(this._enter||this._groups.map(vb),this._parents)}function xb(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}var X8=F(()=>{"use strict";Y8();Hl();o(j8,"default");o(xb,"EnterNode");xb.prototype={constructor:xb,appendChild:o(function(e){return this._parent.insertBefore(e,this._next)},"appendChild"),insertBefore:o(function(e,t){return this._parent.insertBefore(e,t)},"insertBefore"),querySelector:o(function(e){return this._parent.querySelector(e)},"querySelector"),querySelectorAll:o(function(e){return this._parent.querySelectorAll(e)},"querySelectorAll")}});function K8(e){return function(){return e}}var FJ=F(()=>{"use strict";o(K8,"default")});function oqe(e,t,r,n,i,a){for(var s=0,l,u=t.length,h=a.length;s=T&&(T=b+1);!(C=v[T])&&++T{"use strict";Hl();X8();FJ();o(oqe,"bindIndex");o(lqe,"bindKey");o(cqe,"datum");o(Z8,"default");o(uqe,"arraylike")});function Q8(){return new Ai(this._exit||this._groups.map(vb),this._parents)}var GJ=F(()=>{"use strict";Y8();Hl();o(Q8,"default")});function J8(e,t,r){var n=this.enter(),i=this,a=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(i=t(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var VJ=F(()=>{"use strict";o(J8,"default")});function eI(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";Hl();o(eI,"default")});function tI(){for(var e=this._groups,t=-1,r=e.length;++t=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var qJ=F(()=>{"use strict";o(tI,"default")});function rI(e){e||(e=hqe);function t(f,p){return f&&p?e(f.__data__,p.__data__):!f-!p}o(t,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;at?1:e>=t?0:NaN}var HJ=F(()=>{"use strict";Hl();o(rI,"default");o(hqe,"ascending")});function nI(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}var UJ=F(()=>{"use strict";o(nI,"default")});function iI(){return Array.from(this)}var YJ=F(()=>{"use strict";o(iI,"default")});function aI(){for(var e=this._groups,t=0,r=e.length;t{"use strict";o(aI,"default")});function sI(){let e=0;for(let t of this)++e;return e}var XJ=F(()=>{"use strict";o(sI,"default")});function oI(){return!this.node()}var KJ=F(()=>{"use strict";o(oI,"default")});function lI(e){for(var t=this._groups,r=0,n=t.length;r{"use strict";o(lI,"default")});function dqe(e){return function(){this.removeAttribute(e)}}function fqe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function pqe(e,t){return function(){this.setAttribute(e,t)}}function mqe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function gqe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function yqe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function cI(e,t){var r=Uc(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?fqe:dqe:typeof t=="function"?r.local?yqe:gqe:r.local?mqe:pqe)(r,t))}var QJ=F(()=>{"use strict";IS();o(dqe,"attrRemove");o(fqe,"attrRemoveNS");o(pqe,"attrConstant");o(mqe,"attrConstantNS");o(gqe,"attrFunction");o(yqe,"attrFunctionNS");o(cI,"default")});function bb(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}var uI=F(()=>{"use strict";o(bb,"default")});function vqe(e){return function(){this.style.removeProperty(e)}}function xqe(e,t,r){return function(){this.style.setProperty(e,t,r)}}function bqe(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function hI(e,t,r){return arguments.length>1?this.each((t==null?vqe:typeof t=="function"?bqe:xqe)(e,t,r??"")):Pd(this.node(),e)}function Pd(e,t){return e.style.getPropertyValue(t)||bb(e).getComputedStyle(e,null).getPropertyValue(t)}var dI=F(()=>{"use strict";uI();o(vqe,"styleRemove");o(xqe,"styleConstant");o(bqe,"styleFunction");o(hI,"default");o(Pd,"styleValue")});function Tqe(e){return function(){delete this[e]}}function Cqe(e,t){return function(){this[e]=t}}function wqe(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function fI(e,t){return arguments.length>1?this.each((t==null?Tqe:typeof t=="function"?wqe:Cqe)(e,t)):this.node()[e]}var JJ=F(()=>{"use strict";o(Tqe,"propertyRemove");o(Cqe,"propertyConstant");o(wqe,"propertyFunction");o(fI,"default")});function eee(e){return e.trim().split(/^|\s+/)}function pI(e){return e.classList||new tee(e)}function tee(e){this._node=e,this._names=eee(e.getAttribute("class")||"")}function ree(e,t){for(var r=pI(e),n=-1,i=t.length;++n{"use strict";o(eee,"classArray");o(pI,"classList");o(tee,"ClassList");tee.prototype={add:o(function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(e){return this._names.indexOf(e)>=0},"contains")};o(ree,"classedAdd");o(nee,"classedRemove");o(kqe,"classedTrue");o(Sqe,"classedFalse");o(Eqe,"classedFunction");o(mI,"default")});function Aqe(){this.textContent=""}function Rqe(e){return function(){this.textContent=e}}function _qe(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function gI(e){return arguments.length?this.each(e==null?Aqe:(typeof e=="function"?_qe:Rqe)(e)):this.node().textContent}var aee=F(()=>{"use strict";o(Aqe,"textRemove");o(Rqe,"textConstant");o(_qe,"textFunction");o(gI,"default")});function Lqe(){this.innerHTML=""}function Dqe(e){return function(){this.innerHTML=e}}function Iqe(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function yI(e){return arguments.length?this.each(e==null?Lqe:(typeof e=="function"?Iqe:Dqe)(e)):this.node().innerHTML}var see=F(()=>{"use strict";o(Lqe,"htmlRemove");o(Dqe,"htmlConstant");o(Iqe,"htmlFunction");o(yI,"default")});function Mqe(){this.nextSibling&&this.parentNode.appendChild(this)}function vI(){return this.each(Mqe)}var oee=F(()=>{"use strict";o(Mqe,"raise");o(vI,"default")});function Nqe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function xI(){return this.each(Nqe)}var lee=F(()=>{"use strict";o(Nqe,"lower");o(xI,"default")});function bI(e){var t=typeof e=="function"?e:gb(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}var cee=F(()=>{"use strict";F8();o(bI,"default")});function Pqe(){return null}function TI(e,t){var r=typeof e=="function"?e:gb(e),n=t==null?Pqe:typeof t=="function"?t:Nd(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var uee=F(()=>{"use strict";F8();MS();o(Pqe,"constantNull");o(TI,"default")});function Oqe(){var e=this.parentNode;e&&e.removeChild(this)}function CI(){return this.each(Oqe)}var hee=F(()=>{"use strict";o(Oqe,"remove");o(CI,"default")});function Bqe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function $qe(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function wI(e){return this.select(e?$qe:Bqe)}var dee=F(()=>{"use strict";o(Bqe,"selection_cloneShallow");o($qe,"selection_cloneDeep");o(wI,"default")});function kI(e){return arguments.length?this.property("__data__",e):this.node().__data__}var fee=F(()=>{"use strict";o(kI,"default")});function Fqe(e){return function(t){e.call(this,t,this.__data__)}}function zqe(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function Gqe(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,i=t.length,a;r{"use strict";o(Fqe,"contextListener");o(zqe,"parseTypenames");o(Gqe,"onRemove");o(Vqe,"onAdd");o(SI,"default")});function mee(e,t,r){var n=bb(e),i=n.CustomEvent;typeof i=="function"?i=new i(t,r):(i=n.document.createEvent("Event"),r?(i.initEvent(t,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Wqe(e,t){return function(){return mee(this,e,t)}}function qqe(e,t){return function(){return mee(this,e,t.apply(this,arguments))}}function EI(e,t){return this.each((typeof t=="function"?qqe:Wqe)(e,t))}var gee=F(()=>{"use strict";uI();o(mee,"dispatchEvent");o(Wqe,"dispatchConstant");o(qqe,"dispatchFunction");o(EI,"default")});function*AI(){for(var e=this._groups,t=0,r=e.length;t{"use strict";o(AI,"default")});function Ai(e,t){this._groups=e,this._parents=t}function vee(){return new Ai([[document.documentElement]],RI)}function Hqe(){return this}var RI,lh,Hl=F(()=>{"use strict";MJ();PJ();OJ();BJ();$J();zJ();X8();GJ();VJ();WJ();qJ();HJ();UJ();YJ();jJ();XJ();KJ();ZJ();QJ();dI();JJ();iee();aee();see();oee();lee();cee();uee();hee();dee();fee();pee();gee();yee();RI=[null];o(Ai,"Selection");o(vee,"selection");o(Hqe,"selection_selection");Ai.prototype=vee.prototype={constructor:Ai,select:z8,selectAll:W8,selectChild:q8,selectChildren:H8,filter:U8,data:Z8,enter:j8,exit:Q8,join:J8,merge:eI,selection:Hqe,order:tI,sort:rI,call:nI,nodes:iI,node:aI,size:sI,empty:oI,each:lI,attr:cI,style:hI,property:fI,classed:mI,text:gI,html:yI,raise:vI,lower:xI,append:bI,insert:TI,remove:CI,clone:wI,datum:kI,on:SI,dispatch:EI,[Symbol.iterator]:AI};lh=vee});function et(e){return typeof e=="string"?new Ai([[document.querySelector(e)]],[document.documentElement]):new Ai([[e]],RI)}var xee=F(()=>{"use strict";Hl();o(et,"default")});var Ul=F(()=>{"use strict";yb();IS();xee();Hl();MS();V8();dI()});var bee=F(()=>{"use strict"});function Od(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function ly(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}var _I=F(()=>{"use strict";o(Od,"default");o(ly,"extend")});function Bd(){}function Cee(){return this.rgb().formatHex()}function Jqe(){return this.rgb().formatHex8()}function eHe(){return _ee(this).formatHsl()}function wee(){return this.rgb().formatRgb()}function jl(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Uqe.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?kee(t):r===3?new Oa(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?PS(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?PS(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Yqe.exec(e))?new Oa(t[1],t[2],t[3],1):(t=jqe.exec(e))?new Oa(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Xqe.exec(e))?PS(t[1],t[2],t[3],t[4]):(t=Kqe.exec(e))?PS(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Zqe.exec(e))?Aee(t[1],t[2]/100,t[3]/100,1):(t=Qqe.exec(e))?Aee(t[1],t[2]/100,t[3]/100,t[4]):Tee.hasOwnProperty(e)?kee(Tee[e]):e==="transparent"?new Oa(NaN,NaN,NaN,0):null}function kee(e){return new Oa(e>>16&255,e>>8&255,e&255,1)}function PS(e,t,r,n){return n<=0&&(e=t=r=NaN),new Oa(e,t,r,n)}function DI(e){return e instanceof Bd||(e=jl(e)),e?(e=e.rgb(),new Oa(e.r,e.g,e.b,e.opacity)):new Oa}function uy(e,t,r,n){return arguments.length===1?DI(e):new Oa(e,t,r,n??1)}function Oa(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function See(){return`#${Kp(this.r)}${Kp(this.g)}${Kp(this.b)}`}function tHe(){return`#${Kp(this.r)}${Kp(this.g)}${Kp(this.b)}${Kp((isNaN(this.opacity)?1:this.opacity)*255)}`}function Eee(){let e=$S(this.opacity);return`${e===1?"rgb(":"rgba("}${Zp(this.r)}, ${Zp(this.g)}, ${Zp(this.b)}${e===1?")":`, ${e})`}`}function $S(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Zp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Kp(e){return e=Zp(e),(e<16?"0":"")+e.toString(16)}function Aee(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Yl(e,t,r,n)}function _ee(e){if(e instanceof Yl)return new Yl(e.h,e.s,e.l,e.opacity);if(e instanceof Bd||(e=jl(e)),!e)return new Yl;if(e instanceof Yl)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(t===a?s=(r-n)/l+(r0&&u<1?0:s,new Yl(s,l,u,e.opacity)}function Lee(e,t,r,n){return arguments.length===1?_ee(e):new Yl(e,t,r,n??1)}function Yl(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Ree(e){return e=(e||0)%360,e<0?e+360:e}function OS(e){return Math.max(0,Math.min(1,e||0))}function LI(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var Tb,BS,cy,Cb,Yc,Uqe,Yqe,jqe,Xqe,Kqe,Zqe,Qqe,Tee,II=F(()=>{"use strict";_I();o(Bd,"Color");Tb=.7,BS=1/Tb,cy="\\s*([+-]?\\d+)\\s*",Cb="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Yc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Uqe=/^#([0-9a-f]{3,8})$/,Yqe=new RegExp(`^rgb\\(${cy},${cy},${cy}\\)$`),jqe=new RegExp(`^rgb\\(${Yc},${Yc},${Yc}\\)$`),Xqe=new RegExp(`^rgba\\(${cy},${cy},${cy},${Cb}\\)$`),Kqe=new RegExp(`^rgba\\(${Yc},${Yc},${Yc},${Cb}\\)$`),Zqe=new RegExp(`^hsl\\(${Cb},${Yc},${Yc}\\)$`),Qqe=new RegExp(`^hsla\\(${Cb},${Yc},${Yc},${Cb}\\)$`),Tee={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Od(Bd,jl,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Cee,formatHex:Cee,formatHex8:Jqe,formatHsl:eHe,formatRgb:wee,toString:wee});o(Cee,"color_formatHex");o(Jqe,"color_formatHex8");o(eHe,"color_formatHsl");o(wee,"color_formatRgb");o(jl,"color");o(kee,"rgbn");o(PS,"rgba");o(DI,"rgbConvert");o(uy,"rgb");o(Oa,"Rgb");Od(Oa,uy,ly(Bd,{brighter(e){return e=e==null?BS:Math.pow(BS,e),new Oa(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Tb:Math.pow(Tb,e),new Oa(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Oa(Zp(this.r),Zp(this.g),Zp(this.b),$S(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:See,formatHex:See,formatHex8:tHe,formatRgb:Eee,toString:Eee}));o(See,"rgb_formatHex");o(tHe,"rgb_formatHex8");o(Eee,"rgb_formatRgb");o($S,"clampa");o(Zp,"clampi");o(Kp,"hex");o(Aee,"hsla");o(_ee,"hslConvert");o(Lee,"hsl");o(Yl,"Hsl");Od(Yl,Lee,ly(Bd,{brighter(e){return e=e==null?BS:Math.pow(BS,e),new Yl(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Tb:Math.pow(Tb,e),new Yl(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Oa(LI(e>=240?e-240:e+120,i,n),LI(e,i,n),LI(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Yl(Ree(this.h),OS(this.s),OS(this.l),$S(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=$S(this.opacity);return`${e===1?"hsl(":"hsla("}${Ree(this.h)}, ${OS(this.s)*100}%, ${OS(this.l)*100}%${e===1?")":`, ${e})`}`}}));o(Ree,"clamph");o(OS,"clampt");o(LI,"hsl2rgb")});var Dee,Iee,Mee=F(()=>{"use strict";Dee=Math.PI/180,Iee=180/Math.PI});function Fee(e){if(e instanceof jc)return new jc(e.l,e.a,e.b,e.opacity);if(e instanceof ch)return zee(e);e instanceof Oa||(e=DI(e));var t=OI(e.r),r=OI(e.g),n=OI(e.b),i=MI((.2225045*t+.7168786*r+.0606169*n)/Pee),a,s;return t===r&&r===n?a=s=i:(a=MI((.4360747*t+.3850649*r+.1430804*n)/Nee),s=MI((.0139322*t+.0971045*r+.7141733*n)/Oee)),new jc(116*i-16,500*(a-i),200*(i-s),e.opacity)}function BI(e,t,r,n){return arguments.length===1?Fee(e):new jc(e,t,r,n??1)}function jc(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function MI(e){return e>rHe?Math.pow(e,1/3):e/$ee+Bee}function NI(e){return e>hy?e*e*e:$ee*(e-Bee)}function PI(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function OI(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function nHe(e){if(e instanceof ch)return new ch(e.h,e.c,e.l,e.opacity);if(e instanceof jc||(e=Fee(e)),e.a===0&&e.b===0)return new ch(NaN,0{"use strict";_I();II();Mee();FS=18,Nee=.96422,Pee=1,Oee=.82521,Bee=4/29,hy=6/29,$ee=3*hy*hy,rHe=hy*hy*hy;o(Fee,"labConvert");o(BI,"lab");o(jc,"Lab");Od(jc,BI,ly(Bd,{brighter(e){return new jc(this.l+FS*(e??1),this.a,this.b,this.opacity)},darker(e){return new jc(this.l-FS*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=Nee*NI(t),e=Pee*NI(e),r=Oee*NI(r),new Oa(PI(3.1338561*t-1.6168667*e-.4906146*r),PI(-.9787684*t+1.9161415*e+.033454*r),PI(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));o(MI,"xyz2lab");o(NI,"lab2xyz");o(PI,"lrgb2rgb");o(OI,"rgb2lrgb");o(nHe,"hclConvert");o(wb,"hcl");o(ch,"Hcl");o(zee,"hcl2lab");Od(ch,wb,ly(Bd,{brighter(e){return new ch(this.h,this.c,this.l+FS*(e??1),this.opacity)},darker(e){return new ch(this.h,this.c,this.l-FS*(e??1),this.opacity)},rgb(){return zee(this).rgb()}}))});var dy=F(()=>{"use strict";II();Gee()});function $I(e,t,r,n,i){var a=e*e,s=a*e;return((1-3*e+3*a-s)*t+(4-6*a+3*s)*r+(1+3*e+3*a-3*s)*n+s*i)/6}function FI(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],s=n>0?e[n-1]:2*i-a,l=n{"use strict";o($I,"basis");o(FI,"default")});function GI(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],s=e[(n+1)%t],l=e[(n+2)%t];return $I((r-n/t)*t,i,a,s,l)}}var Vee=F(()=>{"use strict";zI();o(GI,"default")});var fy,VI=F(()=>{"use strict";fy=o(e=>()=>e,"default")});function Wee(e,t){return function(r){return e+r*t}}function iHe(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function qee(e,t){var r=t-e;return r?Wee(e,r>180||r<-180?r-360*Math.round(r/360):r):fy(isNaN(e)?t:e)}function Hee(e){return(e=+e)==1?uh:function(t,r){return r-t?iHe(t,r,e):fy(isNaN(t)?r:t)}}function uh(e,t){var r=t-e;return r?Wee(e,r):fy(isNaN(e)?t:e)}var WI=F(()=>{"use strict";VI();o(Wee,"linear");o(iHe,"exponential");o(qee,"hue");o(Hee,"gamma");o(uh,"nogamma")});function Uee(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";dy();zI();Vee();WI();Qp=o((function e(t){var r=Hee(t);function n(i,a){var s=r((i=uy(i)).r,(a=uy(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=uh(i.opacity,a.opacity);return function(d){return i.r=s(d),i.g=l(d),i.b=u(d),i.opacity=h(d),i+""}}return o(n,"rgb"),n.gamma=e,n}),"rgbGamma")(1);o(Uee,"rgbSpline");aHe=Uee(FI),sHe=Uee(GI)});function HI(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{"use strict";o(HI,"default");o(Yee,"isNumberArray")});function Xee(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";zS();o(Xee,"genericArray")});function UI(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var Zee=F(()=>{"use strict";o(UI,"default")});function va(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var kb=F(()=>{"use strict";o(va,"default")});function YI(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=$d(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var Qee=F(()=>{"use strict";zS();o(YI,"default")});function oHe(e){return function(){return e}}function lHe(e){return function(t){return e(t)+""}}function py(e,t){var r=XI.lastIndex=jI.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(e=e+"",t=t+"";(n=XI.exec(e))&&(i=jI.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:va(n,i)})),r=jI.lastIndex;return r{"use strict";kb();XI=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,jI=new RegExp(XI.source,"g");o(oHe,"zero");o(lHe,"one");o(py,"default")});function $d(e,t){var r=typeof t,n;return t==null||r==="boolean"?fy(t):(r==="number"?va:r==="string"?(n=jl(t))?(t=n,Qp):py:t instanceof jl?Qp:t instanceof Date?UI:Yee(t)?HI:Array.isArray(t)?Xee:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?YI:va)(e,t)}var zS=F(()=>{"use strict";dy();qI();Kee();Zee();kb();Qee();KI();VI();jee();o($d,"default")});function GS(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var Jee=F(()=>{"use strict";o(GS,"default")});function WS(e,t,r,n,i,a){var s,l,u;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(u=e*r+t*n)&&(r-=e*u,n-=t*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),e*n{"use strict";ete=180/Math.PI,VS={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(WS,"default")});function rte(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?VS:WS(t.a,t.b,t.c,t.d,t.e,t.f)}function nte(e){return e==null?VS:(qS||(qS=document.createElementNS("http://www.w3.org/2000/svg","g")),qS.setAttribute("transform",e),(e=qS.transform.baseVal.consolidate())?(e=e.matrix,WS(e.a,e.b,e.c,e.d,e.e,e.f)):VS)}var qS,ite=F(()=>{"use strict";tte();o(rte,"parseCss");o(nte,"parseSvg")});function ate(e,t,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push("translate(",null,t,null,r);g.push({i:y-4,x:va(h,f)},{i:y-2,x:va(d,p)})}else(f||p)&&m.push("translate("+f+t+p+r)}o(a,"translate");function s(h,d,f,p){h!==d?(h-d>180?d+=360:d-h>180&&(h+=360),p.push({i:f.push(i(f)+"rotate(",null,n)-2,x:va(h,d)})):d&&f.push(i(f)+"rotate("+d+n)}o(s,"rotate");function l(h,d,f,p){h!==d?p.push({i:f.push(i(f)+"skewX(",null,n)-2,x:va(h,d)}):d&&f.push(i(f)+"skewX("+d+n)}o(l,"skewX");function u(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:va(h,f)},{i:y-2,x:va(d,p)})}else(f!==1||p!==1)&&m.push(i(m)+"scale("+f+","+p+")")}return o(u,"scale"),function(h,d){var f=[],p=[];return h=e(h),d=e(d),a(h.translateX,h.translateY,d.translateX,d.translateY,f,p),s(h.rotate,d.rotate,f,p),l(h.skewX,d.skewX,f,p),u(h.scaleX,h.scaleY,d.scaleX,d.scaleY,f,p),h=d=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";kb();ite();o(ate,"interpolateTransform");ZI=ate(rte,"px, ","px)","deg)"),QI=ate(nte,", ",")",")")});function ote(e){return function(t,r){var n=e((t=wb(t)).h,(r=wb(r)).h),i=uh(t.c,r.c),a=uh(t.l,r.l),s=uh(t.opacity,r.opacity);return function(l){return t.h=n(l),t.c=i(l),t.l=a(l),t.opacity=s(l),t+""}}}var JI,cHe,lte=F(()=>{"use strict";dy();WI();o(ote,"hcl");JI=ote(qee),cHe=ote(uh)});var my=F(()=>{"use strict";zS();kb();Jee();KI();ste();qI();lte()});function Lb(){return Jp||(hte(uHe),Jp=Rb.now()+YS)}function uHe(){Jp=0}function _b(){this._call=this._time=this._next=null}function jS(e,t,r){var n=new _b;return n.restart(e,t,r),n}function dte(){Lb(),++gy;for(var e=HS,t;e;)(t=Jp-e._time)>=0&&e._call.call(void 0,t),e=e._next;--gy}function cte(){Jp=(US=Rb.now())+YS,gy=Eb=0;try{dte()}finally{gy=0,dHe(),Jp=0}}function hHe(){var e=Rb.now(),t=e-US;t>ute&&(YS-=t,US=e)}function dHe(){for(var e,t=HS,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:HS=r);Ab=e,eM(n)}function eM(e){if(!gy){Eb&&(Eb=clearTimeout(Eb));var t=e-Jp;t>24?(e<1/0&&(Eb=setTimeout(cte,e-Rb.now()-YS)),Sb&&(Sb=clearInterval(Sb))):(Sb||(US=Rb.now(),Sb=setInterval(hHe,ute)),gy=1,hte(cte))}}var gy,Eb,Sb,ute,HS,Ab,US,Jp,YS,Rb,hte,tM=F(()=>{"use strict";gy=0,Eb=0,Sb=0,ute=1e3,US=0,Jp=0,YS=0,Rb=typeof performance=="object"&&performance.now?performance:Date,hte=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};o(Lb,"now");o(uHe,"clearNow");o(_b,"Timer");_b.prototype=jS.prototype={constructor:_b,restart:o(function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?Lb():+r)+(t==null?0:+t),!this._next&&Ab!==this&&(Ab?Ab._next=this:HS=this,Ab=this),this._call=e,this._time=r,eM()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,eM())},"stop")};o(jS,"timer");o(dte,"timerFlush");o(cte,"wake");o(hHe,"poke");o(dHe,"nap");o(eM,"sleep")});function Db(e,t,r){var n=new _b;return t=t==null?0:+t,n.restart(i=>{n.stop(),e(i+t)},t,r),n}var fte=F(()=>{"use strict";tM();o(Db,"default")});var XS=F(()=>{"use strict";tM();fte()});function hh(e,t,r,n,i,a){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;mHe(e,r,{name:t,index:n,group:i,on:fHe,tween:pHe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:gte})}function Mb(e,t){var r=aa(e,t);if(r.state>gte)throw new Error("too late; already scheduled");return r}function Ba(e,t){var r=aa(e,t);if(r.state>KS)throw new Error("too late; already running");return r}function aa(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function mHe(e,t,r){var n=e.__transition,i;n[t]=r,r.timer=jS(a,0,r.time);function a(h){r.state=pte,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var d,f,p,m;if(r.state!==pte)return u();for(d in n)if(m=n[d],m.name===r.name){if(m.state===KS)return Db(s);m.state===mte?(m.state=Ib,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[d]):+d{"use strict";O8();XS();fHe=P8("start","end","cancel","interrupt"),pHe=[],gte=0,pte=1,ZS=2,KS=3,mte=4,QS=5,Ib=6;o(hh,"default");o(Mb,"init");o(Ba,"set");o(aa,"get");o(mHe,"create")});function Nb(e,t){var r=e.__transition,n,i,a=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((n=r[s]).name!==t){a=!1;continue}i=n.state>ZS&&n.state{"use strict";Js();o(Nb,"default")});function rM(e){return this.each(function(){Nb(this,e)})}var vte=F(()=>{"use strict";yte();o(rM,"default")});function gHe(e,t){var r,n;return function(){var i=Ba(this,e),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";Js();o(gHe,"tweenRemove");o(yHe,"tweenFunction");o(nM,"default");o(yy,"tweenValue")});function Ob(e,t){var r;return(typeof t=="number"?va:t instanceof jl?Qp:(r=jl(t))?(t=r,Qp):py)(e,t)}var iM=F(()=>{"use strict";dy();my();o(Ob,"default")});function vHe(e){return function(){this.removeAttribute(e)}}function xHe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function bHe(e,t,r){var n,i=r+"",a;return function(){var s=this.getAttribute(e);return s===i?null:s===n?a:a=t(n=s,r)}}function THe(e,t,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(e.space,e.local);return s===i?null:s===n?a:a=t(n=s,r)}}function CHe(e,t,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(e):(s=this.getAttribute(e),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l)))}}function wHe(e,t,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l)))}}function aM(e,t){var r=Uc(e),n=r==="transform"?QI:Ob;return this.attrTween(e,typeof t=="function"?(r.local?wHe:CHe)(r,n,yy(this,"attr."+e,t)):t==null?(r.local?xHe:vHe)(r):(r.local?THe:bHe)(r,n,t))}var xte=F(()=>{"use strict";my();Ul();Pb();iM();o(vHe,"attrRemove");o(xHe,"attrRemoveNS");o(bHe,"attrConstant");o(THe,"attrConstantNS");o(CHe,"attrFunction");o(wHe,"attrFunctionNS");o(aM,"default")});function kHe(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function SHe(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function EHe(e,t){var r,n;function i(){var a=t.apply(this,arguments);return a!==n&&(r=(n=a)&&SHe(e,a)),r}return o(i,"tween"),i._value=t,i}function AHe(e,t){var r,n;function i(){var a=t.apply(this,arguments);return a!==n&&(r=(n=a)&&kHe(e,a)),r}return o(i,"tween"),i._value=t,i}function sM(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=Uc(e);return this.tween(r,(n.local?EHe:AHe)(n,t))}var bte=F(()=>{"use strict";Ul();o(kHe,"attrInterpolate");o(SHe,"attrInterpolateNS");o(EHe,"attrTweenNS");o(AHe,"attrTween");o(sM,"default")});function RHe(e,t){return function(){Mb(this,e).delay=+t.apply(this,arguments)}}function _He(e,t){return t=+t,function(){Mb(this,e).delay=t}}function oM(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?RHe:_He)(t,e)):aa(this.node(),t).delay}var Tte=F(()=>{"use strict";Js();o(RHe,"delayFunction");o(_He,"delayConstant");o(oM,"default")});function LHe(e,t){return function(){Ba(this,e).duration=+t.apply(this,arguments)}}function DHe(e,t){return t=+t,function(){Ba(this,e).duration=t}}function lM(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?LHe:DHe)(t,e)):aa(this.node(),t).duration}var Cte=F(()=>{"use strict";Js();o(LHe,"durationFunction");o(DHe,"durationConstant");o(lM,"default")});function IHe(e,t){if(typeof t!="function")throw new Error;return function(){Ba(this,e).ease=t}}function cM(e){var t=this._id;return arguments.length?this.each(IHe(t,e)):aa(this.node(),t).ease}var wte=F(()=>{"use strict";Js();o(IHe,"easeConstant");o(cM,"default")});function MHe(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;Ba(this,e).ease=r}}function uM(e){if(typeof e!="function")throw new Error;return this.each(MHe(this._id,e))}var kte=F(()=>{"use strict";Js();o(MHe,"easeVarying");o(uM,"default")});function hM(e){typeof e!="function"&&(e=oy(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{"use strict";Ul();em();o(hM,"default")});function dM(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";em();o(dM,"default")});function NHe(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function PHe(e,t,r){var n,i,a=NHe(t)?Mb:Ba;return function(){var s=a(this,e),l=s.on;l!==n&&(i=(n=l).copy()).on(t,r),s.on=i}}function fM(e,t){var r=this._id;return arguments.length<2?aa(this.node(),r).on.on(e):this.each(PHe(r,e,t))}var Ate=F(()=>{"use strict";Js();o(NHe,"start");o(PHe,"onFunction");o(fM,"default")});function OHe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function pM(){return this.on("end.remove",OHe(this._id))}var Rte=F(()=>{"use strict";o(OHe,"removeFunction");o(pM,"default")});function mM(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Nd(e));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";Ul();em();Js();o(mM,"default")});function gM(e){var t=this._name,r=this._id;typeof e!="function"&&(e=sy(e));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";Ul();em();Js();o(gM,"default")});function yM(){return new BHe(this._groups,this._parents)}var BHe,Dte=F(()=>{"use strict";Ul();BHe=lh.prototype.constructor;o(yM,"default")});function $He(e,t){var r,n,i;return function(){var a=Pd(this,e),s=(this.style.removeProperty(e),Pd(this,e));return a===s?null:a===r&&s===n?i:i=t(r=a,n=s)}}function Ite(e){return function(){this.style.removeProperty(e)}}function FHe(e,t,r){var n,i=r+"",a;return function(){var s=Pd(this,e);return s===i?null:s===n?a:a=t(n=s,r)}}function zHe(e,t,r){var n,i,a;return function(){var s=Pd(this,e),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(e),Pd(this,e))),s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l))}}function GHe(e,t){var r,n,i,a="style."+t,s="end."+a,l;return function(){var u=Ba(this,e),h=u.on,d=u.value[a]==null?l||(l=Ite(t)):void 0;(h!==r||i!==d)&&(n=(r=h).copy()).on(s,i=d),u.on=n}}function vM(e,t,r){var n=(e+="")=="transform"?ZI:Ob;return t==null?this.styleTween(e,$He(e,n)).on("end.style."+e,Ite(e)):typeof t=="function"?this.styleTween(e,zHe(e,n,yy(this,"style."+e,t))).each(GHe(this._id,e)):this.styleTween(e,FHe(e,n,t),r).on("end.style."+e,null)}var Mte=F(()=>{"use strict";my();Ul();Js();Pb();iM();o($He,"styleNull");o(Ite,"styleRemove");o(FHe,"styleConstant");o(zHe,"styleFunction");o(GHe,"styleMaybeRemove");o(vM,"default")});function VHe(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function WHe(e,t,r){var n,i;function a(){var s=t.apply(this,arguments);return s!==i&&(n=(i=s)&&VHe(e,s,r)),n}return o(a,"tween"),a._value=t,a}function xM(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,WHe(e,t,r??""))}var Nte=F(()=>{"use strict";o(VHe,"styleInterpolate");o(WHe,"styleTween");o(xM,"default")});function qHe(e){return function(){this.textContent=e}}function HHe(e){return function(){var t=e(this);this.textContent=t??""}}function bM(e){return this.tween("text",typeof e=="function"?HHe(yy(this,"text",e)):qHe(e==null?"":e+""))}var Pte=F(()=>{"use strict";Pb();o(qHe,"textConstant");o(HHe,"textFunction");o(bM,"default")});function UHe(e){return function(t){this.textContent=e.call(this,t)}}function YHe(e){var t,r;function n(){var i=e.apply(this,arguments);return i!==r&&(t=(r=i)&&UHe(i)),t}return o(n,"tween"),n._value=e,n}function TM(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,YHe(e))}var Ote=F(()=>{"use strict";o(UHe,"textInterpolate");o(YHe,"textTween");o(TM,"default")});function CM(){for(var e=this._name,t=this._id,r=JS(),n=this._groups,i=n.length,a=0;a{"use strict";em();Js();o(CM,"default")});function wM(){var e,t,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=Ba(this,n),d=h.on;d!==e&&(t=(e=d).copy(),t._.cancel.push(l),t._.interrupt.push(l),t._.end.push(u)),h.on=t}),i===0&&a()})}var $te=F(()=>{"use strict";Js();o(wM,"default")});function Es(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function Fte(e){return lh().transition(e)}function JS(){return++jHe}var jHe,dh,em=F(()=>{"use strict";Ul();xte();bte();Tte();Cte();wte();kte();Ste();Ete();Ate();Rte();_te();Lte();Dte();Mte();Nte();Pte();Ote();Bte();Pb();$te();jHe=0;o(Es,"Transition");o(Fte,"transition");o(JS,"newId");dh=lh.prototype;Es.prototype=Fte.prototype={constructor:Es,select:mM,selectAll:gM,selectChild:dh.selectChild,selectChildren:dh.selectChildren,filter:hM,merge:dM,selection:yM,transition:CM,call:dh.call,nodes:dh.nodes,node:dh.node,size:dh.size,empty:dh.empty,each:dh.each,on:fM,attr:aM,attrTween:sM,style:vM,styleTween:xM,text:bM,textTween:TM,remove:pM,tween:nM,delay:oM,duration:lM,ease:cM,easeVarying:uM,end:wM,[Symbol.iterator]:dh[Symbol.iterator]}});function eE(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var zte=F(()=>{"use strict";o(eE,"cubicInOut")});var kM=F(()=>{"use strict";zte()});function KHe(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function SM(e){var t,r;e instanceof Es?(t=e._id,e=e._name):(t=JS(),(r=XHe).time=Lb(),e=e==null?null:e+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";em();Js();kM();XS();XHe={time:null,delay:0,duration:250,ease:eE};o(KHe,"inherit");o(SM,"default")});var Vte=F(()=>{"use strict";Ul();vte();Gte();lh.prototype.interrupt=rM;lh.prototype.transition=SM});var tE=F(()=>{"use strict";Vte()});var Wte=F(()=>{"use strict"});var qte=F(()=>{"use strict"});var Hte=F(()=>{"use strict"});function Ute(e){return[+e[0],+e[1]]}function ZHe(e){return[Ute(e[0]),Ute(e[1])]}function EM(e){return{type:e}}var mjt,gjt,yjt,vjt,xjt,bjt,Yte=F(()=>{"use strict";tE();Wte();qte();Hte();({abs:mjt,max:gjt,min:yjt}=Math);o(Ute,"number1");o(ZHe,"number2");vjt={name:"x",handles:["w","e"].map(EM),input:o(function(e,t){return e==null?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},"input"),output:o(function(e){return e&&[e[0][0],e[1][0]]},"output")},xjt={name:"y",handles:["n","s"].map(EM),input:o(function(e,t){return e==null?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},"input"),output:o(function(e){return e&&[e[0][1],e[1][1]]},"output")},bjt={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(EM),input:o(function(e){return e==null?null:ZHe(e)},"input"),output:o(function(e){return e},"output")};o(EM,"type")});var jte=F(()=>{"use strict";Yte()});function Xte(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Xte;let r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";AM=Math.PI,RM=2*AM,tm=1e-6,QHe=RM-tm;o(Xte,"append");o(JHe,"appendRound");rm=class{static{o(this,"Path")}constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Xte:JHe(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,a,s){this._append`C${+t},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(t,r,n,i,a){if(t=+t,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-t,h=i-r,d=s-t,f=l-r,p=d*d+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>tm)if(!(Math.abs(f*u-h*d)>tm)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),T=a*Math.tan((AM-Math.acos((y+p-v)/(2*x*b)))/2),k=T/b,C=T/x;Math.abs(k-1)>tm&&this._append`L${t+k*d},${r+k*f}`,this._append`A${a},${a},0,0,${+(f*m>d*g)},${this._x1=t+C*u},${this._y1=r+C*h}`}}arc(t,r,n,i,a,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=t+l,d=r+u,f=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${d}`:(Math.abs(this._x1-h)>tm||Math.abs(this._y1-d)>tm)&&this._append`L${h},${d}`,n&&(p<0&&(p=p%RM+RM),p>QHe?this._append`A${n},${n},0,1,${f},${t-l},${r-u}A${n},${n},0,1,${f},${this._x1=h},${this._y1=d}`:p>tm&&this._append`A${n},${n},0,${+(p>=AM)},${f},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(Kte,"path");Kte.prototype=rm.prototype});var _M=F(()=>{"use strict";Zte()});var Qte=F(()=>{"use strict"});var Jte=F(()=>{"use strict"});var ere=F(()=>{"use strict"});var tre=F(()=>{"use strict"});var rre=F(()=>{"use strict"});var nre=F(()=>{"use strict"});var ire=F(()=>{"use strict"});function LM(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function nm(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}var Bb=F(()=>{"use strict";o(LM,"default");o(nm,"formatDecimalParts")});function Xl(e){return e=nm(Math.abs(e)),e?e[1]:NaN}var $b=F(()=>{"use strict";Bb();o(Xl,"default")});function DM(e,t){return function(r,n){for(var i=r.length,a=[],s=0,l=e[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=e[s=(s+1)%e.length];return a.reverse().join(t)}}var are=F(()=>{"use strict";o(DM,"default")});function IM(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var sre=F(()=>{"use strict";o(IM,"default")});function Fd(e){if(!(t=eUe.exec(e)))throw new Error("invalid format: "+e);var t;return new rE({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function rE(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}var eUe,MM=F(()=>{"use strict";eUe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Fd,"formatSpecifier");Fd.prototype=rE.prototype;o(rE,"FormatSpecifier");rE.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function NM(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var ore=F(()=>{"use strict";o(NM,"default")});function OM(e,t){var r=nm(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(PM=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+nm(e,Math.max(0,t+a-1))[0]}var PM,BM=F(()=>{"use strict";Bb();o(OM,"default")});function nE(e,t){var r=nm(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var lre=F(()=>{"use strict";Bb();o(nE,"default")});var $M,cre=F(()=>{"use strict";Bb();BM();lre();$M={"%":o((e,t)=>(e*100).toFixed(t),"%"),b:o(e=>Math.round(e).toString(2),"b"),c:o(e=>e+"","c"),d:LM,e:o((e,t)=>e.toExponential(t),"e"),f:o((e,t)=>e.toFixed(t),"f"),g:o((e,t)=>e.toPrecision(t),"g"),o:o(e=>Math.round(e).toString(8),"o"),p:o((e,t)=>nE(e*100,t),"p"),r:nE,s:OM,X:o(e=>Math.round(e).toString(16).toUpperCase(),"X"),x:o(e=>Math.round(e).toString(16),"x")}});function iE(e){return e}var ure=F(()=>{"use strict";o(iE,"default")});function FM(e){var t=e.grouping===void 0||e.thousands===void 0?iE:DM(hre.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?iE:IM(hre.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",l=e.minus===void 0?"\u2212":e.minus+"",u=e.nan===void 0?"NaN":e.nan+"";function h(f){f=Fd(f);var p=f.fill,m=f.align,g=f.sign,y=f.symbol,v=f.zero,x=f.width,b=f.comma,T=f.precision,k=f.trim,C=f.type;C==="n"?(b=!0,C="g"):$M[C]||(T===void 0&&(T=12),k=!0,C="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var w=y==="$"?r:y==="#"&&/[boxX]/.test(C)?"0"+C.toLowerCase():"",S=y==="$"?n:/[%p]/.test(C)?s:"",R=$M[C],L=/[defgprs%]/.test(C);T=T===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T));function N(I){var _=w,A=S,M,D,P;if(C==="c")A=R(I)+A,I="";else{I=+I;var B=I<0||1/I<0;if(I=isNaN(I)?u:R(Math.abs(I),T),k&&(I=NM(I)),B&&+I==0&&g!=="+"&&(B=!1),_=(B?g==="("?g:l:g==="-"||g==="("?"":g)+_,A=(C==="s"?dre[8+PM/3]:"")+A+(B&&g==="("?")":""),L){for(M=-1,D=I.length;++MP||P>57){A=(P===46?i+I.slice(M+1):I.slice(M))+A,I=I.slice(0,M);break}}}b&&!v&&(I=t(I,1/0));var O=_.length+I.length+A.length,$=O>1)+_+I+A+$.slice(O);break;default:I=$+_+I+A;break}return a(I)}return o(N,"format"),N.toString=function(){return f+""},N}o(h,"newFormat");function d(f,p){var m=h((f=Fd(f),f.type="f",f)),g=Math.max(-8,Math.min(8,Math.floor(Xl(p)/3)))*3,y=Math.pow(10,-g),v=dre[8+g/3];return function(x){return m(y*x)+v}}return o(d,"formatPrefix"),{format:h,formatPrefix:d}}var hre,dre,fre=F(()=>{"use strict";$b();are();sre();MM();ore();cre();BM();ure();hre=Array.prototype.map,dre=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(FM,"default")});function zM(e){return aE=FM(e),Xc=aE.format,sE=aE.formatPrefix,aE}var aE,Xc,sE,pre=F(()=>{"use strict";fre();zM({thousands:",",grouping:[3],currency:["$",""]});o(zM,"defaultLocale")});function oE(e){return Math.max(0,-Xl(Math.abs(e)))}var mre=F(()=>{"use strict";$b();o(oE,"default")});function lE(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Xl(t)/3)))*3-Xl(Math.abs(e)))}var gre=F(()=>{"use strict";$b();o(lE,"default")});function cE(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Xl(t)-Xl(e))+1}var yre=F(()=>{"use strict";$b();o(cE,"default")});var GM=F(()=>{"use strict";pre();MM();mre();gre();yre()});var vre=F(()=>{"use strict"});function tUe(e){var t=0,r=e.children,n=r&&r.length;if(!n)t=1;else for(;--n>=0;)t+=r[n].value;e.value=t}function VM(){return this.eachAfter(tUe)}var xre=F(()=>{"use strict";o(tUe,"count");o(VM,"default")});function WM(e,t){let r=-1;for(let n of this)e.call(t,n,++r,this);return this}var bre=F(()=>{"use strict";o(WM,"default")});function qM(e,t){for(var r=this,n=[r],i,a,s=-1;r=n.pop();)if(e.call(t,r,++s,this),i=r.children)for(a=i.length-1;a>=0;--a)n.push(i[a]);return this}var Tre=F(()=>{"use strict";o(qM,"default")});function HM(e,t){for(var r=this,n=[r],i=[],a,s,l,u=-1;r=n.pop();)if(i.push(r),a=r.children)for(s=0,l=a.length;s{"use strict";o(HM,"default")});function UM(e,t){let r=-1;for(let n of this)if(e.call(t,n,++r,this))return n}var wre=F(()=>{"use strict";o(UM,"default")});function YM(e){return this.eachAfter(function(t){for(var r=+e(t.data)||0,n=t.children,i=n&&n.length;--i>=0;)r+=n[i].value;t.value=r})}var kre=F(()=>{"use strict";o(YM,"default")});function jM(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}var Sre=F(()=>{"use strict";o(jM,"default")});function XM(e){for(var t=this,r=rUe(t,e),n=[t];t!==r;)t=t.parent,n.push(t);for(var i=n.length;e!==r;)n.splice(i,0,e),e=e.parent;return n}function rUe(e,t){if(e===t)return e;var r=e.ancestors(),n=t.ancestors(),i=null;for(e=r.pop(),t=n.pop();e===t;)i=e,e=r.pop(),t=n.pop();return i}var Ere=F(()=>{"use strict";o(XM,"default");o(rUe,"leastCommonAncestor")});function KM(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}var Are=F(()=>{"use strict";o(KM,"default")});function ZM(){return Array.from(this)}var Rre=F(()=>{"use strict";o(ZM,"default")});function QM(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}var _re=F(()=>{"use strict";o(QM,"default")});function JM(){var e=this,t=[];return e.each(function(r){r!==e&&t.push({source:r.parent,target:r})}),t}var Lre=F(()=>{"use strict";o(JM,"default")});function*eN(){var e=this,t,r=[e],n,i,a;do for(t=r.reverse(),r=[];e=t.pop();)if(yield e,n=e.children)for(i=0,a=n.length;i{"use strict";o(eN,"default")});function vy(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=aUe)):t===void 0&&(t=iUe);for(var r=new Fb(e),n,i=[r],a,s,l,u;n=i.pop();)if((s=t(n.data))&&(u=(s=Array.from(s)).length))for(n.children=s,l=u-1;l>=0;--l)i.push(a=s[l]=new Fb(s[l])),a.parent=n,a.depth=n.depth+1;return r.eachBefore(oUe)}function nUe(){return vy(this).eachBefore(sUe)}function iUe(e){return e.children}function aUe(e){return Array.isArray(e)?e[1]:null}function sUe(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function oUe(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Fb(e){this.data=e,this.depth=this.height=0,this.parent=null}var Ire=F(()=>{"use strict";xre();bre();Tre();Cre();wre();kre();Sre();Ere();Are();Rre();_re();Lre();Dre();o(vy,"hierarchy");o(nUe,"node_copy");o(iUe,"objectChildren");o(aUe,"mapChildren");o(sUe,"copyData");o(oUe,"computeHeight");o(Fb,"Node");Fb.prototype=vy.prototype={constructor:Fb,count:VM,each:WM,eachAfter:HM,eachBefore:qM,find:UM,sum:YM,sort:jM,path:XM,ancestors:KM,descendants:ZM,leaves:QM,links:JM,copy:nUe,[Symbol.iterator]:eN}});function Mre(e){if(typeof e!="function")throw new Error;return e}var Nre=F(()=>{"use strict";o(Mre,"required")});function xy(){return 0}function im(e){return function(){return e}}var Pre=F(()=>{"use strict";o(xy,"constantZero");o(im,"default")});function tN(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}var Ore=F(()=>{"use strict";o(tN,"default")});function rN(e,t,r,n,i){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(n-t)/e.value;++l{"use strict";o(rN,"default")});function nN(e,t,r,n,i){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(i-r)/e.value;++l{"use strict";o(nN,"default")});function cUe(e,t,r,n,i,a){for(var s=[],l=t.children,u,h,d=0,f=0,p=l.length,m,g,y=t.value,v,x,b,T,k,C,w;db&&(b=h),w=v*v*C,T=Math.max(b/w,w/x),T>k){v-=h;break}k=T}s.push(u={value:v,dice:m{"use strict";Bre();$re();lUe=(1+Math.sqrt(5))/2;o(cUe,"squarifyRatio");Fre=o((function e(t){function r(n,i,a,s,l){cUe(t,n,i,a,s,l)}return o(r,"squarify"),r.ratio=function(n){return e((n=+n)>1?n:1)},r}),"custom")(lUe)});function uE(){var e=Fre,t=!1,r=1,n=1,i=[0],a=xy,s=xy,l=xy,u=xy,h=xy;function d(p){return p.x0=p.y0=0,p.x1=r,p.y1=n,p.eachBefore(f),i=[0],t&&p.eachBefore(tN),p}o(d,"treemap");function f(p){var m=i[p.depth],g=p.x0+m,y=p.y0+m,v=p.x1-m,x=p.y1-m;v{"use strict";Ore();zre();Nre();Pre();o(uE,"default")});var Vre=F(()=>{"use strict";Ire();Gre()});var Wre=F(()=>{"use strict"});var qre=F(()=>{"use strict"});function zd(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}var zb=F(()=>{"use strict";o(zd,"initRange")});function Oo(){var e=new iy,t=[],r=[],n=iN;function i(a){let s=e.get(a);if(s===void 0){if(n!==iN)return n;e.set(a,s=t.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return t.slice();t=[],e=new iy;for(let s of a)e.has(s)||e.set(s,t.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return Oo(t,r).unknown(n)},zd.apply(i,arguments),i}var iN,aN=F(()=>{"use strict";Md();zb();iN=Symbol("implicit");o(Oo,"ordinal")});function by(){var e=Oo().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,a,s,l=!1,u=0,h=0,d=.5;delete e.unknown;function f(){var p=t().length,m=i{"use strict";Md();zb();aN();o(by,"band")});function sN(e){return function(){return e}}var Ure=F(()=>{"use strict";o(sN,"constants")});function oN(e){return+e}var Yre=F(()=>{"use strict";o(oN,"number")});function Ty(e){return e}function lN(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:sN(isNaN(t)?NaN:.5)}function uUe(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function hUe(e,t,r){var n=e[0],i=e[1],a=t[0],s=t[1];return i2?dUe:hUe,u=h=null,f}o(d,"rescale");function f(p){return p==null||isNaN(p=+p)?a:(u||(u=l(e.map(n),t,r)))(n(s(p)))}return o(f,"scale"),f.invert=function(p){return s(i((h||(h=l(t,e.map(n),va)))(p)))},f.domain=function(p){return arguments.length?(e=Array.from(p,oN),d()):e.slice()},f.range=function(p){return arguments.length?(t=Array.from(p),d()):t.slice()},f.rangeRound=function(p){return t=Array.from(p),r=GS,d()},f.clamp=function(p){return arguments.length?(s=p?!0:Ty,d()):s!==Ty},f.interpolate=function(p){return arguments.length?(r=p,d()):r},f.unknown=function(p){return arguments.length?(a=p,f):a},function(p,m){return n=p,i=m,d()}}function Gb(){return fUe()(Ty,Ty)}var jre,cN=F(()=>{"use strict";Md();my();Ure();Yre();jre=[0,1];o(Ty,"identity");o(lN,"normalize");o(uUe,"clamper");o(hUe,"bimap");o(dUe,"polymap");o(hE,"copy");o(fUe,"transformer");o(Gb,"continuous")});function uN(e,t,r,n){var i=ay(e,t,r),a;switch(n=Fd(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=lE(i,s))&&(n.precision=a),sE(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=cE(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=oE(i))&&(n.precision=a-(n.type==="%")*2);break}}return Xc(n)}var Xre=F(()=>{"use strict";Md();GM();o(uN,"tickFormat")});function pUe(e){var t=e.domain;return e.ticks=function(r){var n=t();return kS(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return uN(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,d=10;for(l0;){if(h=mb(s,l,r),h===u)return n[i]=s,n[a]=l,t(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return e},e}function Kl(){var e=Gb();return e.copy=function(){return hE(e,Kl())},zd.apply(e,arguments),pUe(e)}var Kre=F(()=>{"use strict";Md();cN();zb();Xre();o(pUe,"linearish");o(Kl,"linear")});function hN(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],a=e[n],s;return a{"use strict";o(hN,"nice")});function qn(e,t,r,n){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(e(a=new Date(+a)),a),i.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(t(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),t(a,l),e(a);while(hqn(s=>{if(s>=s)for(;e(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;t(s,-1),!a(s););else for(;--l>=0;)for(;t(s,1),!a(s););}),r&&(i.count=(a,s)=>(dN.setTime(+a),fN.setTime(+s),e(dN),e(fN),Math.floor(r(dN,fN))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var dN,fN,fh=F(()=>{"use strict";dN=new Date,fN=new Date;o(qn,"timeInterval")});var Kc,Qre,pN=F(()=>{"use strict";fh();Kc=qn(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Kc.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?qn(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Kc);Qre=Kc.range});var Bo,Jre,mN=F(()=>{"use strict";fh();Bo=qn(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),Jre=Bo.range});var ph,mUe,dE,gUe,gN=F(()=>{"use strict";fh();ph=qn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),mUe=ph.range,dE=qn(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),gUe=dE.range});var mh,yUe,fE,vUe,yN=F(()=>{"use strict";fh();mh=qn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),yUe=mh.range,fE=qn(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),vUe=fE.range});var hl,xUe,Wb,bUe,pE,TUe,vN=F(()=>{"use strict";fh();hl=qn(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),xUe=hl.range,Wb=qn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),bUe=Wb.range,pE=qn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),TUe=pE.range});function om(e){return qn(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}function lm(e){return qn(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Zl,Gd,mE,gE,Qc,yE,vE,tne,CUe,wUe,kUe,SUe,EUe,AUe,cm,Cy,rne,nne,Vd,ine,ane,sne,RUe,_Ue,LUe,DUe,IUe,MUe,xN=F(()=>{"use strict";fh();o(om,"timeWeekday");Zl=om(0),Gd=om(1),mE=om(2),gE=om(3),Qc=om(4),yE=om(5),vE=om(6),tne=Zl.range,CUe=Gd.range,wUe=mE.range,kUe=gE.range,SUe=Qc.range,EUe=yE.range,AUe=vE.range;o(lm,"utcWeekday");cm=lm(0),Cy=lm(1),rne=lm(2),nne=lm(3),Vd=lm(4),ine=lm(5),ane=lm(6),sne=cm.range,RUe=Cy.range,_Ue=rne.range,LUe=nne.range,DUe=Vd.range,IUe=ine.range,MUe=ane.range});var gh,NUe,xE,PUe,bN=F(()=>{"use strict";fh();gh=qn(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),NUe=gh.range,xE=qn(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),PUe=xE.range});var $o,OUe,Ql,BUe,TN=F(()=>{"use strict";fh();$o=qn(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());$o.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qn(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});OUe=$o.range,Ql=qn(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ql.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qn(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});BUe=Ql.range});function lne(e,t,r,n,i,a){let s=[[Bo,1,1e3],[Bo,5,5*1e3],[Bo,15,15*1e3],[Bo,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function l(h,d,f){let p=dv).right(s,p);if(m===s.length)return e.every(ay(h/31536e6,d/31536e6,f));if(m===0)return Kc.every(Math.max(ay(h,d,f),1));let[g,y]=s[p/s[m-1][2]{"use strict";Md();pN();mN();gN();yN();vN();xN();bN();TN();o(lne,"ticker");[FUe,zUe]=lne(Ql,xE,cm,pE,fE,dE),[CN,wN]=lne($o,gh,Zl,hl,mh,ph)});var bE=F(()=>{"use strict";pN();mN();gN();yN();vN();xN();bN();TN();cne()});function kN(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function SN(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function qb(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function EN(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,a=e.days,s=e.shortDays,l=e.months,u=e.shortMonths,h=Hb(i),d=Ub(i),f=Hb(a),p=Ub(a),m=Hb(s),g=Ub(s),y=Hb(l),v=Ub(l),x=Hb(u),b=Ub(u),T={a:B,A:O,b:$,B:V,c:null,d:mne,e:mne,f:cYe,g:xYe,G:TYe,H:sYe,I:oYe,j:lYe,L:bne,m:uYe,M:hYe,p:G,q:z,Q:vne,s:xne,S:dYe,u:fYe,U:pYe,V:mYe,w:gYe,W:yYe,x:null,X:null,y:vYe,Y:bYe,Z:CYe,"%":yne},k={a:W,A:H,b:j,B:Q,c:null,d:gne,e:gne,f:EYe,g:OYe,G:$Ye,H:wYe,I:kYe,j:SYe,L:Cne,m:AYe,M:RYe,p:U,q:oe,Q:vne,s:xne,S:_Ye,u:LYe,U:DYe,V:IYe,w:MYe,W:NYe,x:null,X:null,y:PYe,Y:BYe,Z:FYe,"%":yne},C={a:N,A:I,b:_,B:A,c:M,d:fne,e:fne,f:rYe,g:dne,G:hne,H:pne,I:pne,j:QUe,L:tYe,m:ZUe,M:JUe,p:L,q:KUe,Q:iYe,s:aYe,S:eYe,u:HUe,U:UUe,V:YUe,w:qUe,W:jUe,x:D,X:P,y:dne,Y:hne,Z:XUe,"%":nYe};T.x=w(r,T),T.X=w(n,T),T.c=w(t,T),k.x=w(r,k),k.X=w(n,k),k.c=w(t,k);function w(te,le){return function(ie){var ae=[],Re=-1,be=0,Pe=te.length,Ge,Oe,ue;for(ie instanceof Date||(ie=new Date(+ie));++Re53)return null;"w"in ae||(ae.w=1),"Z"in ae?(be=SN(qb(ae.y,0,1)),Pe=be.getUTCDay(),be=Pe>4||Pe===0?Cy.ceil(be):Cy(be),be=Wb.offset(be,(ae.V-1)*7),ae.y=be.getUTCFullYear(),ae.m=be.getUTCMonth(),ae.d=be.getUTCDate()+(ae.w+6)%7):(be=kN(qb(ae.y,0,1)),Pe=be.getDay(),be=Pe>4||Pe===0?Gd.ceil(be):Gd(be),be=hl.offset(be,(ae.V-1)*7),ae.y=be.getFullYear(),ae.m=be.getMonth(),ae.d=be.getDate()+(ae.w+6)%7)}else("W"in ae||"U"in ae)&&("w"in ae||(ae.w="u"in ae?ae.u%7:"W"in ae?1:0),Pe="Z"in ae?SN(qb(ae.y,0,1)).getUTCDay():kN(qb(ae.y,0,1)).getDay(),ae.m=0,ae.d="W"in ae?(ae.w+6)%7+ae.W*7-(Pe+5)%7:ae.w+ae.U*7-(Pe+6)%7);return"Z"in ae?(ae.H+=ae.Z/100|0,ae.M+=ae.Z%100,SN(ae)):kN(ae)}}o(S,"newParse");function R(te,le,ie,ae){for(var Re=0,be=le.length,Pe=ie.length,Ge,Oe;Re=Pe)return-1;if(Ge=le.charCodeAt(Re++),Ge===37){if(Ge=le.charAt(Re++),Oe=C[Ge in une?le.charAt(Re++):Ge],!Oe||(ae=Oe(te,ie,ae))<0)return-1}else if(Ge!=ie.charCodeAt(ae++))return-1}return ae}o(R,"parseSpecifier");function L(te,le,ie){var ae=h.exec(le.slice(ie));return ae?(te.p=d.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(L,"parsePeriod");function N(te,le,ie){var ae=m.exec(le.slice(ie));return ae?(te.w=g.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(N,"parseShortWeekday");function I(te,le,ie){var ae=f.exec(le.slice(ie));return ae?(te.w=p.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(I,"parseWeekday");function _(te,le,ie){var ae=x.exec(le.slice(ie));return ae?(te.m=b.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(_,"parseShortMonth");function A(te,le,ie){var ae=y.exec(le.slice(ie));return ae?(te.m=v.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(A,"parseMonth");function M(te,le,ie){return R(te,t,le,ie)}o(M,"parseLocaleDateTime");function D(te,le,ie){return R(te,r,le,ie)}o(D,"parseLocaleDate");function P(te,le,ie){return R(te,n,le,ie)}o(P,"parseLocaleTime");function B(te){return s[te.getDay()]}o(B,"formatShortWeekday");function O(te){return a[te.getDay()]}o(O,"formatWeekday");function $(te){return u[te.getMonth()]}o($,"formatShortMonth");function V(te){return l[te.getMonth()]}o(V,"formatMonth");function G(te){return i[+(te.getHours()>=12)]}o(G,"formatPeriod");function z(te){return 1+~~(te.getMonth()/3)}o(z,"formatQuarter");function W(te){return s[te.getUTCDay()]}o(W,"formatUTCShortWeekday");function H(te){return a[te.getUTCDay()]}o(H,"formatUTCWeekday");function j(te){return u[te.getUTCMonth()]}o(j,"formatUTCShortMonth");function Q(te){return l[te.getUTCMonth()]}o(Q,"formatUTCMonth");function U(te){return i[+(te.getUTCHours()>=12)]}o(U,"formatUTCPeriod");function oe(te){return 1+~~(te.getUTCMonth()/3)}return o(oe,"formatUTCQuarter"),{format:o(function(te){var le=w(te+="",T);return le.toString=function(){return te},le},"format"),parse:o(function(te){var le=S(te+="",!1);return le.toString=function(){return te},le},"parse"),utcFormat:o(function(te){var le=w(te+="",k);return le.toString=function(){return te},le},"utcFormat"),utcParse:o(function(te){var le=S(te+="",!0);return le.toString=function(){return te},le},"utcParse")}}function pn(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a[t.toLowerCase(),r]))}function qUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function HUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function UUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function YUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function jUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function hne(e,t,r){var n=xa.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function dne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function XUe(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function KUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function ZUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function fne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function QUe(e,t,r){var n=xa.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function pne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function JUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function eYe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function tYe(e,t,r){var n=xa.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function rYe(e,t,r){var n=xa.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function nYe(e,t,r){var n=GUe.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function iYe(e,t,r){var n=xa.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function aYe(e,t,r){var n=xa.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function mne(e,t){return pn(e.getDate(),t,2)}function sYe(e,t){return pn(e.getHours(),t,2)}function oYe(e,t){return pn(e.getHours()%12||12,t,2)}function lYe(e,t){return pn(1+hl.count($o(e),e),t,3)}function bne(e,t){return pn(e.getMilliseconds(),t,3)}function cYe(e,t){return bne(e,t)+"000"}function uYe(e,t){return pn(e.getMonth()+1,t,2)}function hYe(e,t){return pn(e.getMinutes(),t,2)}function dYe(e,t){return pn(e.getSeconds(),t,2)}function fYe(e){var t=e.getDay();return t===0?7:t}function pYe(e,t){return pn(Zl.count($o(e)-1,e),t,2)}function Tne(e){var t=e.getDay();return t>=4||t===0?Qc(e):Qc.ceil(e)}function mYe(e,t){return e=Tne(e),pn(Qc.count($o(e),e)+($o(e).getDay()===4),t,2)}function gYe(e){return e.getDay()}function yYe(e,t){return pn(Gd.count($o(e)-1,e),t,2)}function vYe(e,t){return pn(e.getFullYear()%100,t,2)}function xYe(e,t){return e=Tne(e),pn(e.getFullYear()%100,t,2)}function bYe(e,t){return pn(e.getFullYear()%1e4,t,4)}function TYe(e,t){var r=e.getDay();return e=r>=4||r===0?Qc(e):Qc.ceil(e),pn(e.getFullYear()%1e4,t,4)}function CYe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+pn(t/60|0,"0",2)+pn(t%60,"0",2)}function gne(e,t){return pn(e.getUTCDate(),t,2)}function wYe(e,t){return pn(e.getUTCHours(),t,2)}function kYe(e,t){return pn(e.getUTCHours()%12||12,t,2)}function SYe(e,t){return pn(1+Wb.count(Ql(e),e),t,3)}function Cne(e,t){return pn(e.getUTCMilliseconds(),t,3)}function EYe(e,t){return Cne(e,t)+"000"}function AYe(e,t){return pn(e.getUTCMonth()+1,t,2)}function RYe(e,t){return pn(e.getUTCMinutes(),t,2)}function _Ye(e,t){return pn(e.getUTCSeconds(),t,2)}function LYe(e){var t=e.getUTCDay();return t===0?7:t}function DYe(e,t){return pn(cm.count(Ql(e)-1,e),t,2)}function wne(e){var t=e.getUTCDay();return t>=4||t===0?Vd(e):Vd.ceil(e)}function IYe(e,t){return e=wne(e),pn(Vd.count(Ql(e),e)+(Ql(e).getUTCDay()===4),t,2)}function MYe(e){return e.getUTCDay()}function NYe(e,t){return pn(Cy.count(Ql(e)-1,e),t,2)}function PYe(e,t){return pn(e.getUTCFullYear()%100,t,2)}function OYe(e,t){return e=wne(e),pn(e.getUTCFullYear()%100,t,2)}function BYe(e,t){return pn(e.getUTCFullYear()%1e4,t,4)}function $Ye(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Vd(e):Vd.ceil(e),pn(e.getUTCFullYear()%1e4,t,4)}function FYe(){return"+0000"}function yne(){return"%"}function vne(e){return+e}function xne(e){return Math.floor(+e/1e3)}var une,xa,GUe,VUe,kne=F(()=>{"use strict";bE();o(kN,"localDate");o(SN,"utcDate");o(qb,"newDate");o(EN,"formatLocale");une={"-":"",_:" ",0:"0"},xa=/^\s*\d+/,GUe=/^%/,VUe=/[\\^$*+?|[\]().{}]/g;o(pn,"pad");o(WUe,"requote");o(Hb,"formatRe");o(Ub,"formatLookup");o(qUe,"parseWeekdayNumberSunday");o(HUe,"parseWeekdayNumberMonday");o(UUe,"parseWeekNumberSunday");o(YUe,"parseWeekNumberISO");o(jUe,"parseWeekNumberMonday");o(hne,"parseFullYear");o(dne,"parseYear");o(XUe,"parseZone");o(KUe,"parseQuarter");o(ZUe,"parseMonthNumber");o(fne,"parseDayOfMonth");o(QUe,"parseDayOfYear");o(pne,"parseHour24");o(JUe,"parseMinutes");o(eYe,"parseSeconds");o(tYe,"parseMilliseconds");o(rYe,"parseMicroseconds");o(nYe,"parseLiteralPercent");o(iYe,"parseUnixTimestamp");o(aYe,"parseUnixTimestampSeconds");o(mne,"formatDayOfMonth");o(sYe,"formatHour24");o(oYe,"formatHour12");o(lYe,"formatDayOfYear");o(bne,"formatMilliseconds");o(cYe,"formatMicroseconds");o(uYe,"formatMonthNumber");o(hYe,"formatMinutes");o(dYe,"formatSeconds");o(fYe,"formatWeekdayNumberMonday");o(pYe,"formatWeekNumberSunday");o(Tne,"dISO");o(mYe,"formatWeekNumberISO");o(gYe,"formatWeekdayNumberSunday");o(yYe,"formatWeekNumberMonday");o(vYe,"formatYear");o(xYe,"formatYearISO");o(bYe,"formatFullYear");o(TYe,"formatFullYearISO");o(CYe,"formatZone");o(gne,"formatUTCDayOfMonth");o(wYe,"formatUTCHour24");o(kYe,"formatUTCHour12");o(SYe,"formatUTCDayOfYear");o(Cne,"formatUTCMilliseconds");o(EYe,"formatUTCMicroseconds");o(AYe,"formatUTCMonthNumber");o(RYe,"formatUTCMinutes");o(_Ye,"formatUTCSeconds");o(LYe,"formatUTCWeekdayNumberMonday");o(DYe,"formatUTCWeekNumberSunday");o(wne,"UTCdISO");o(IYe,"formatUTCWeekNumberISO");o(MYe,"formatUTCWeekdayNumberSunday");o(NYe,"formatUTCWeekNumberMonday");o(PYe,"formatUTCYear");o(OYe,"formatUTCYearISO");o(BYe,"formatUTCFullYear");o($Ye,"formatUTCFullYearISO");o(FYe,"formatUTCZone");o(yne,"formatLiteralPercent");o(vne,"formatUnixTimestamp");o(xne,"formatUnixTimestampSeconds")});function AN(e){return wy=EN(e),um=wy.format,Sne=wy.parse,Ene=wy.utcFormat,Ane=wy.utcParse,wy}var wy,um,Sne,Ene,Ane,Rne=F(()=>{"use strict";kne();AN({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(AN,"defaultLocale")});var RN=F(()=>{"use strict";Rne()});function zYe(e){return new Date(e)}function GYe(e){return e instanceof Date?+e:+new Date(+e)}function _ne(e,t,r,n,i,a,s,l,u,h){var d=Gb(),f=d.invert,p=d.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),T=h("%B"),k=h("%Y");function C(w){return(u(w){"use strict";bE();RN();cN();zb();Zre();o(zYe,"date");o(GYe,"number");o(_ne,"calendar");o(TE,"time")});var Dne=F(()=>{"use strict";Hre();Kre();aN();Lne()});function _N(e){for(var t=e.length/6|0,r=new Array(t),n=0;n{"use strict";o(_N,"default")});var LN,Mne=F(()=>{"use strict";Ine();LN=_N("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var Nne=F(()=>{"use strict";Mne()});function ii(e){return o(function(){return e},"constant")}var CE=F(()=>{"use strict";o(ii,"default")});function One(e){return e>1?0:e<-1?ky:Math.acos(e)}function IN(e){return e>=1?Yb:e<=-1?-Yb:Math.asin(e)}var DN,$a,Wd,Pne,wE,Jl,hm,ba,ky,Yb,Sy,kE=F(()=>{"use strict";DN=Math.abs,$a=Math.atan2,Wd=Math.cos,Pne=Math.max,wE=Math.min,Jl=Math.sin,hm=Math.sqrt,ba=1e-12,ky=Math.PI,Yb=ky/2,Sy=2*ky;o(One,"acos");o(IN,"asin")});function SE(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new rm(t)}var MN=F(()=>{"use strict";_M();o(SE,"withPath")});function VYe(e){return e.innerRadius}function WYe(e){return e.outerRadius}function qYe(e){return e.startAngle}function HYe(e){return e.endAngle}function UYe(e){return e&&e.padAngle}function YYe(e,t,r,n,i,a,s,l){var u=r-e,h=n-t,d=s-i,f=l-a,p=f*u-d*h;if(!(p*pM*M+D*D&&(R=N,L=I),{cx:R,cy:L,x01:-d,y01:-f,x11:R*(i/C-1),y11:L*(i/C-1)}}function ec(){var e=VYe,t=WYe,r=ii(0),n=null,i=qYe,a=HYe,s=UYe,l=null,u=SE(h);function h(){var d,f,p=+e.apply(this,arguments),m=+t.apply(this,arguments),g=i.apply(this,arguments)-Yb,y=a.apply(this,arguments)-Yb,v=DN(y-g),x=y>g;if(l||(l=d=u()),mba))l.moveTo(0,0);else if(v>Sy-ba)l.moveTo(m*Wd(g),m*Jl(g)),l.arc(0,0,m,g,y,!x),p>ba&&(l.moveTo(p*Wd(y),p*Jl(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,k=g,C=y,w=v,S=v,R=s.apply(this,arguments)/2,L=R>ba&&(n?+n.apply(this,arguments):hm(p*p+m*m)),N=wE(DN(m-p)/2,+r.apply(this,arguments)),I=N,_=N,A,M;if(L>ba){var D=IN(L/p*Jl(R)),P=IN(L/m*Jl(R));(w-=D*2)>ba?(D*=x?1:-1,k+=D,C-=D):(w=0,k=C=(g+y)/2),(S-=P*2)>ba?(P*=x?1:-1,b+=P,T-=P):(S=0,b=T=(g+y)/2)}var B=m*Wd(b),O=m*Jl(b),$=p*Wd(C),V=p*Jl(C);if(N>ba){var G=m*Wd(T),z=m*Jl(T),W=p*Wd(k),H=p*Jl(k),j;if(vba?_>ba?(A=EE(W,H,B,O,m,_,x),M=EE(G,z,$,V,m,_,x),l.moveTo(A.cx+A.x01,A.cy+A.y01),_ba)||!(w>ba)?l.lineTo($,V):I>ba?(A=EE($,V,G,z,p,-I,x),M=EE(B,O,W,H,p,-I,x),l.lineTo(A.cx+A.x01,A.cy+A.y01),I{"use strict";CE();kE();MN();o(VYe,"arcInnerRadius");o(WYe,"arcOuterRadius");o(qYe,"arcStartAngle");o(HYe,"arcEndAngle");o(UYe,"arcPadAngle");o(YYe,"intersect");o(EE,"cornerTangents");o(ec,"default")});function jb(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var iJt,NN=F(()=>{"use strict";iJt=Array.prototype.slice;o(jb,"default")});function $ne(e){this._context=e}function Jc(e){return new $ne(e)}var PN=F(()=>{"use strict";o($ne,"Linear");$ne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}},"point")};o(Jc,"default")});function Fne(e){return e[0]}function zne(e){return e[1]}var Gne=F(()=>{"use strict";o(Fne,"x");o(zne,"y")});function tc(e,t){var r=ii(!0),n=null,i=Jc,a=null,s=SE(l);e=typeof e=="function"?e:e===void 0?Fne:ii(e),t=typeof t=="function"?t:t===void 0?zne:ii(t);function l(u){var h,d=(u=jb(u)).length,f,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=d;++h)!(h{"use strict";NN();CE();PN();MN();Gne();o(tc,"default")});function ON(e,t){return te?1:t>=e?0:NaN}var Wne=F(()=>{"use strict";o(ON,"default")});function BN(e){return e}var qne=F(()=>{"use strict";o(BN,"default")});function AE(){var e=BN,t=ON,r=null,n=ii(0),i=ii(Sy),a=ii(0);function s(l){var u,h=(l=jb(l)).length,d,f,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(Sy,Math.max(-Sy,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),T=b*(v<0?-1:1),k;for(u=0;u0&&(p+=k);for(t!=null?m.sort(function(C,w){return t(g[C],g[w])}):r!=null&&m.sort(function(C,w){return r(l[C],l[w])}),u=0,f=p?(v-h*T)/p:0;u0?k*f:0)+T,g[d]={data:l[d],index:u,value:k,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(e=typeof l=="function"?l:ii(+l),s):e},s.sortValues=function(l){return arguments.length?(t=l,r=null,s):t},s.sort=function(l){return arguments.length?(r=l,t=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:ii(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:ii(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:ii(+l),s):a},s}var Hne=F(()=>{"use strict";NN();CE();Wne();qne();kE();o(AE,"default")});function Xb(e){return new RE(e,!0)}function Kb(e){return new RE(e,!1)}var RE,Une=F(()=>{"use strict";RE=class{static{o(this,"Bump")}constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};o(Xb,"bumpX");o(Kb,"bumpY")});function Fo(){}var Zb=F(()=>{"use strict";o(Fo,"default")});function Ey(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Qb(e){this._context=e}function rc(e){return new Qb(e)}var Jb=F(()=>{"use strict";o(Ey,"point");o(Qb,"Basis");Qb.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:Ey(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(rc,"default")});function Yne(e){this._context=e}function _E(e){return new Yne(e)}var jne=F(()=>{"use strict";Zb();Jb();o(Yne,"BasisClosed");Yne.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(_E,"default")});function Xne(e){this._context=e}function LE(e){return new Xne(e)}var Kne=F(()=>{"use strict";Jb();o(Xne,"BasisOpen");Xne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(LE,"default")});function Zne(e,t){this._basis=new Qb(e),this._beta=t}var $N,Qne=F(()=>{"use strict";Jb();o(Zne,"Bundle");Zne.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var n=e[0],i=t[0],a=e[r]-n,s=t[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(n+u*a),this._beta*t[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(e,t){this._x.push(+e),this._y.push(+t)},"point")};$N=o((function e(t){function r(n){return t===1?new Qb(n):new Zne(n,t)}return o(r,"bundle"),r.beta=function(n){return e(+n)},r}),"custom")(.85)});function Ay(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function DE(e,t){this._context=e,this._k=(1-t)/6}var e2,t2=F(()=>{"use strict";o(Ay,"point");o(DE,"Cardinal");DE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ay(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};e2=o((function e(t){function r(n){return new DE(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function IE(e,t){this._context=e,this._k=(1-t)/6}var FN,zN=F(()=>{"use strict";Zb();t2();o(IE,"CardinalClosed");IE.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};FN=o((function e(t){function r(n){return new IE(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function ME(e,t){this._context=e,this._k=(1-t)/6}var GN,VN=F(()=>{"use strict";t2();o(ME,"CardinalOpen");ME.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};GN=o((function e(t){function r(n){return new ME(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function r2(e,t,r){var n=e._x1,i=e._y1,a=e._x2,s=e._y2;if(e._l01_a>ba){var l=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,u=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*l-e._x0*e._l12_2a+e._x2*e._l01_2a)/u,i=(i*l-e._y0*e._l12_2a+e._y2*e._l01_2a)/u}if(e._l23_a>ba){var h=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,d=3*e._l23_a*(e._l23_a+e._l12_a);a=(a*h+e._x1*e._l23_2a-t*e._l12_2a)/d,s=(s*h+e._y1*e._l23_2a-r*e._l12_2a)/d}e._context.bezierCurveTo(n,i,a,s,e._x2,e._y2)}function Jne(e,t){this._context=e,this._alpha=t}var n2,NE=F(()=>{"use strict";kE();t2();o(r2,"point");o(Jne,"CatmullRom");Jne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:r2(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};n2=o((function e(t){function r(n){return t?new Jne(n,t):new DE(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function eie(e,t){this._context=e,this._alpha=t}var WN,tie=F(()=>{"use strict";zN();Zb();NE();o(eie,"CatmullRomClosed");eie.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:r2(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};WN=o((function e(t){function r(n){return t?new eie(n,t):new IE(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function rie(e,t){this._context=e,this._alpha=t}var qN,nie=F(()=>{"use strict";VN();NE();o(rie,"CatmullRomOpen");rie.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:r2(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};qN=o((function e(t){function r(n){return t?new rie(n,t):new ME(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function iie(e){this._context=e}function PE(e){return new iie(e)}var aie=F(()=>{"use strict";Zb();o(iie,"LinearClosed");iie.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))},"point")};o(PE,"default")});function sie(e){return e<0?-1:1}function oie(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),s=(r-e._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(sie(a)+sie(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function lie(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function HN(e,t,r){var n=e._x0,i=e._y0,a=e._x1,s=e._y1,l=(a-n)/3;e._context.bezierCurveTo(n+l,i+l*t,a-l,s-l*r,a,s)}function OE(e){this._context=e}function cie(e){this._context=new uie(e)}function uie(e){this._context=e}function i2(e){return new OE(e)}function a2(e){return new cie(e)}var hie=F(()=>{"use strict";o(sie,"sign");o(oie,"slope3");o(lie,"slope2");o(HN,"point");o(OE,"MonotoneX");OE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:HN(this,this._t0,lie(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,HN(this,lie(this,r=oie(this,e,t)),r);break;default:HN(this,this._t0,r=oie(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}},"point")};o(cie,"MonotoneY");(cie.prototype=Object.create(OE.prototype)).point=function(e,t){OE.prototype.point.call(this,t,e)};o(uie,"ReflectContext");uie.prototype={moveTo:o(function(e,t){this._context.moveTo(t,e)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(e,t){this._context.lineTo(t,e)},"lineTo"),bezierCurveTo:o(function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)},"bezierCurveTo")};o(i2,"monotoneX");o(a2,"monotoneY")});function fie(e){this._context=e}function die(e){var t,r=e.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(s[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t{"use strict";o(fie,"Natural");fie.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=die(e),i=die(t),a=0,s=1;s{"use strict";o(BE,"Step");BE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t},"point")};o(_y,"default");o(s2,"stepBefore");o(o2,"stepAfter")});var gie=F(()=>{"use strict";Bne();Vne();Hne();jne();Kne();Jb();Une();Qne();zN();VN();t2();tie();nie();NE();aie();PN();hie();pie();mie()});var yie=F(()=>{"use strict"});var vie=F(()=>{"use strict"});function qd(e,t,r){this.k=e,this.x=t,this.y=r}function YN(e){for(;!e.__zoom;)if(!(e=e.parentNode))return UN;return e.__zoom}var UN,jN=F(()=>{"use strict";o(qd,"Transform");qd.prototype={constructor:qd,scale:o(function(e){return e===1?this:new qd(this.k*e,this.x,this.y)},"scale"),translate:o(function(e,t){return e===0&t===0?this:new qd(this.k,this.x+this.k*e,this.y+this.k*t)},"translate"),apply:o(function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},"apply"),applyX:o(function(e){return e*this.k+this.x},"applyX"),applyY:o(function(e){return e*this.k+this.y},"applyY"),invert:o(function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},"invert"),invertX:o(function(e){return(e-this.x)/this.k},"invertX"),invertY:o(function(e){return(e-this.y)/this.k},"invertY"),rescaleX:o(function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},"rescaleX"),rescaleY:o(function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};UN=new qd(1,0,0);YN.prototype=qd.prototype;o(YN,"transform")});var xie=F(()=>{"use strict"});var bie=F(()=>{"use strict";tE();yie();vie();jN();xie()});var Tie=F(()=>{"use strict";bie();jN()});var $r=F(()=>{"use strict";Md();_J();jte();Qte();dy();Jte();ere();O8();bee();tre();kM();rre();ire();GM();vre();Vre();my();_M();Wre();nre();qre();Dne();Nne();Ul();gie();bE();RN();XS();tE();Tie()});var Cie=Io(Ta=>{"use strict";Object.defineProperty(Ta,"__esModule",{value:!0});Ta.BLANK_URL=Ta.relativeFirstCharacters=Ta.whitespaceEscapeCharsRegex=Ta.urlSchemeRegex=Ta.ctrlCharactersRegex=Ta.htmlCtrlEntityRegex=Ta.htmlEntitiesRegex=Ta.invalidProtocolRegex=void 0;Ta.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Ta.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Ta.htmlCtrlEntityRegex=/&(newline|tab);/gi;Ta.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Ta.urlSchemeRegex=/^.+(:|:)/gim;Ta.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Ta.relativeFirstCharacters=[".","/"];Ta.BLANK_URL="about:blank"});var Ly=Io(XN=>{"use strict";Object.defineProperty(XN,"__esModule",{value:!0});XN.sanitizeUrl=ZYe;var rs=Cie();function jYe(e){return rs.relativeFirstCharacters.indexOf(e[0])>-1}o(jYe,"isRelativeUrlWithoutProtocol");function XYe(e){var t=e.replace(rs.ctrlCharactersRegex,"");return t.replace(rs.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(XYe,"decodeHtmlCharacters");function KYe(e){return URL.canParse(e)}o(KYe,"isValidUrl");function wie(e){try{return decodeURIComponent(e)}catch{return e}}o(wie,"decodeURI");function ZYe(e){if(!e)return rs.BLANK_URL;var t,r=wie(e.trim());do r=XYe(r).replace(rs.htmlCtrlEntityRegex,"").replace(rs.ctrlCharactersRegex,"").replace(rs.whitespaceEscapeCharsRegex,"").trim(),r=wie(r),t=r.match(rs.ctrlCharactersRegex)||r.match(rs.htmlEntitiesRegex)||r.match(rs.htmlCtrlEntityRegex)||r.match(rs.whitespaceEscapeCharsRegex);while(t&&t.length>0);var n=r;if(!n)return rs.BLANK_URL;if(jYe(n))return n;var i=n.trimStart(),a=i.match(rs.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(rs.invalidProtocolRegex.test(s))return rs.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!KYe(l))return rs.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(ZYe,"sanitizeUrl")});var KN,dm,$E,kie,FE,zE,Fa,l2,Dy,Hd=F(()=>{"use strict";KN=Xs(Ly(),1);$r();Vr();dm=o((e,t)=>{let r=e.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),t.attrs!==void 0)for(let n in t.attrs)r.attr(n,t.attrs[n]);return t.class&&r.attr("class",t.class),r},"drawRect"),$E=o((e,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};dm(e,r).lower()},"drawBackgroundRect"),kie=o((e,t)=>{let r=t.text.replace(Vp," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class&&n.attr("class",t.class);let i=n.append("tspan");return i.attr("x",t.x+t.textMargin*2),i.text(r),n},"drawText"),FE=o((e,t,r,n)=>{let i=e.append("image");i.attr("x",t),i.attr("y",r);let a=(0,KN.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),zE=o((e,t,r,n)=>{let i=e.append("use");i.attr("x",t),i.attr("y",r);let a=(0,KN.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Fa=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),l2=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),Dy=o(()=>{let e=et(".mermaidTooltip");return e.empty()&&(e=et("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),e},"createTooltip")});var Sie,ZN,Eie,QYe,JYe,eje,tje,rje,nje,ije,aje,sje,oje,lje,yh,nc,Aie=F(()=>{"use strict";Vr();Hd();Sie=Xs(Ly(),1),ZN=o(function(e,t){return dm(e,t)},"drawRect"),Eie=o(function(e,t,r,n,i,a){let s=e.append("image");s.attr("width",t),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Sie.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),QYe=o((e,t,r,n)=>{let i=e.append("g"),a=0;for(let s of t){let l=s.textColor?s.textColor:"#444444",u=s.lineColor?s.lineColor:"#444444",h=s.offsetX?parseInt(s.offsetX):0,d=s.offsetY?parseInt(s.offsetY):0,f="";if(a===0){let m=i.append("line");m.attr("x1",s.startPoint.x),m.attr("y1",s.startPoint.y),m.attr("x2",s.endPoint.x),m.attr("y2",s.endPoint.y),m.attr("stroke-width","1"),m.attr("stroke",u),m.style("fill","none"),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+n+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+n+"-arrowend)"),a=-1}else{let m=i.append("path");m.attr("fill","none").attr("stroke-width","1").attr("stroke",u).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",s.startPoint.x).replaceAll("starty",s.startPoint.y).replaceAll("controlx",s.startPoint.x+(s.endPoint.x-s.startPoint.x)/2-(s.endPoint.x-s.startPoint.x)/4).replaceAll("controly",s.startPoint.y+(s.endPoint.y-s.startPoint.y)/2).replaceAll("stopx",s.endPoint.x).replaceAll("stopy",s.endPoint.y)),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+n+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+n+"-arrowend)")}let p=r.messageFont();yh(r)(s.label.text,i,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+d,s.label.width,s.label.height,{fill:l},p),s.techn&&s.techn.text!==""&&(p=r.messageFont(),yh(r)("["+s.techn.text+"]",i,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+r.messageFontSize+5+d,Math.max(s.label.width,s.techn.width),s.techn.height,{fill:l,"font-style":"italic"},p))}},"drawRels"),JYe=o(function(e,t,r){let n=e.append("g"),i=t.bgColor?t.bgColor:"none",a=t.borderColor?t.borderColor:"#444444",s=t.fontColor?t.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(l={"stroke-width":1});let u={x:t.x,y:t.y,fill:i,stroke:a,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:l};ZN(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,yh(r)(t.label.text,n,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},h),t.type&&t.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,yh(r)(t.type.text,n,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},h)),t.descr&&t.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,yh(r)(t.descr.text,n,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},h))},"drawBoundary"),eje=o(function(e,t,r){let n=t.bgColor?t.bgColor:r[t.typeC4Shape.text+"_bg_color"],i=t.borderColor?t.borderColor:r[t.typeC4Shape.text+"_border_color"],a=t.fontColor?t.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=e.append("g");l.attr("class","person-man");let u=Fa();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=t.x,u.y=t.y,u.fill=n,u.width=t.width,u.height=t.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},ZN(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let h=lje(r,t.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":Eie(l,48,48,t.x+t.width/2-24,t.y+t.image.Y,s);break}let d=r[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=a,yh(r)(t.label.text,l,t.x,t.y+t.label.Y,t.width,t.height,{fill:a},d),d=r[t.typeC4Shape.text+"Font"](),d.fontColor=a,t.techn&&t.techn?.text!==""?yh(r)(t.techn.text,l,t.x,t.y+t.techn.Y,t.width,t.height,{fill:a,"font-style":"italic"},d):t.type&&t.type.text!==""&&yh(r)(t.type.text,l,t.x,t.y+t.type.Y,t.width,t.height,{fill:a,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=r.personFont(),d.fontColor=a,yh(r)(t.descr.text,l,t.x,t.y+t.descr.Y,t.width,t.height,{fill:a},d)),t.height},"drawC4Shape"),tje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),rje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),nje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),ije=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),aje=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),sje=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),oje=o(function(e,t){let n=e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);n.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),n.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),lje=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"getC4ShapeFont"),yh=(function(){function e(i,a,s,l,u,h,d){let f=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(f,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f){let{fontSize:p,fontFamily:m,fontWeight:g}=f,y=i.split(xt.lineBreakRegex);for(let v=0;v=0}var _ie=F(()=>{"use strict";o(Rie,"isLength")});function VE(e){return e!=null&&typeof e!="function"&&Rie(e.length)}var QN=F(()=>{"use strict";_ie();o(VE,"isArrayLike")});function Lie(e){return e==="__proto__"}var Die=F(()=>{"use strict";o(Lie,"isUnsafeProperty")});function Ud(e){return e==null||typeof e!="object"&&typeof e!="function"}var c2=F(()=>{"use strict";o(Ud,"isPrimitive")});function WE(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var JN=F(()=>{"use strict";o(WE,"getSymbols")});function vh(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var u2=F(()=>{"use strict";o(vh,"getTag")});var h2,Yd,fm,pm,mm,d2,f2,p2,m2,qE,g2,Iy,y2,HE,UE,YE,jE,XE,KE,ZE,QE,JE,e4=F(()=>{"use strict";h2="[object RegExp]",Yd="[object String]",fm="[object Number]",pm="[object Boolean]",mm="[object Arguments]",d2="[object Symbol]",f2="[object Date]",p2="[object Map]",m2="[object Set]",qE="[object Array]",g2="[object ArrayBuffer]",Iy="[object Object]",y2="[object DataView]",HE="[object Uint8Array]",UE="[object Uint8ClampedArray]",YE="[object Uint16Array]",jE="[object Uint32Array]",XE="[object Int8Array]",KE="[object Int16Array]",ZE="[object Int32Array]",QE="[object Float32Array]",JE="[object Float64Array]"});function My(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var t4=F(()=>{"use strict";o(My,"isTypedArray")});function Iie(e,t){return Ny(e,void 0,e,new Map,t)}function Ny(e,t,r,n=new Map,i=void 0){let a=i?.(e,t,r,n);if(a!==void 0)return a;if(Ud(e))return e;if(n.has(e))return n.get(e);if(Array.isArray(e)){let s=new Array(e.length);n.set(e,s);for(let l=0;l{"use strict";JN();u2();e4();c2();t4();o(Iie,"cloneDeepWith");o(Ny,"cloneDeepWithImpl");o(dl,"copyProperties");o(cje,"isCloneableObject")});function Nie(e,t){return Iie(e,(r,n,i,a)=>{let s=t?.(r,n,i,a);if(s!==void 0)return s;if(typeof e=="object"){if(vh(e)===Iy&&typeof e.constructor!="function"){let l={};return a.set(e,l),dl(l,e,i,a),l}switch(Object.prototype.toString.call(e)){case fm:case Yd:case pm:{let l=new e.constructor(e?.valueOf());return dl(l,e),l}case mm:{let l={};return dl(l,e),l.length=e.length,l[Symbol.iterator]=e[Symbol.iterator],l}default:return}}})}var Pie=F(()=>{"use strict";Mie();u2();e4();o(Nie,"cloneDeepWith")});function eP(e){return Nie(e)}var Oie=F(()=>{"use strict";Pie();o(eP,"cloneDeep")});function v2(e){return e!==null&&typeof e=="object"&&vh(e)==="[object Arguments]"}var tP=F(()=>{"use strict";u2();o(v2,"isArguments")});function x2(e){return typeof e=="object"&&e!==null}var rP=F(()=>{"use strict";o(x2,"isObjectLike")});function Bie(e){return x2(e)&&VE(e)}var $ie=F(()=>{"use strict";QN();rP();o(Bie,"isArrayLikeObject")});function Fie(e){return Array.isArray(e)}var zie=F(()=>{"use strict";o(Fie,"isArray")});function gm(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError("Expected a function");let r=o(function(...i){let a=t?t.apply(this,i):i[0],s=r.cache;if(s.has(a))return s.get(a);let l=e.apply(this,i);return r.cache=s.set(a,l)||s,l},"memoized"),n=gm.Cache||Map;return r.cache=new n,r}var Gie=F(()=>{"use strict";o(gm,"memoize");gm.Cache=Map});function Vie(){}var Wie=F(()=>{"use strict";o(Vie,"noop")});function qie(e){let t=e?.constructor,r=typeof t=="function"?t.prototype:Object.prototype;return e===r}var Hie=F(()=>{"use strict";o(qie,"isPrototype")});function jd(e){return My(e)}var r4=F(()=>{"use strict";t4();o(jd,"isTypedArray")});function iP(e){if(Ud(e))return e;let t=vh(e);if(!uje(e))return{};if(Fie(e)){let n=Array.from(e);return e.length>0&&typeof e[0]=="string"&&Object.hasOwn(e,"index")&&(n.index=e.index,n.input=e.input),n}if(jd(e)){let n=e,i=n.constructor;return new i(n.buffer,n.byteOffset,n.length)}if(t===g2)return new ArrayBuffer(e.byteLength);if(t===y2){let n=e,i=n.buffer,a=n.byteOffset,s=n.byteLength,l=new ArrayBuffer(s),u=new Uint8Array(i,a,s);return new Uint8Array(l).set(u),new DataView(l)}if(t===pm||t===fm||t===Yd){let n=e.constructor,i=new n(e.valueOf());return t===Yd?dje(i,e):nP(i,e),i}if(t===f2)return new Date(Number(e));if(t===h2){let n=e,i=new RegExp(n.source,n.flags);return i.lastIndex=n.lastIndex,i}if(t===d2)return Object(Symbol.prototype.valueOf.call(e));if(t===p2){let n=e,i=new Map;return n.forEach((a,s)=>{i.set(s,a)}),i}if(t===m2){let n=e,i=new Set;return n.forEach(a=>{i.add(a)}),i}if(t===mm){let n=e,i={};return nP(i,n),i.length=n.length,i[Symbol.iterator]=n[Symbol.iterator],i}let r={};return fje(r,e),nP(r,e),hje(r,e),r}function uje(e){switch(vh(e)){case mm:case qE:case g2:case y2:case pm:case f2:case QE:case JE:case XE:case KE:case ZE:case p2:case fm:case Iy:case h2:case m2:case Yd:case d2:case HE:case UE:case YE:case jE:return!0;default:return!1}}function nP(e,t){for(let r in t)Object.hasOwn(t,r)&&(e[r]=t[r])}function hje(e,t){let r=Object.getOwnPropertySymbols(t);for(let n=0;n=r)&&(e[n]=t[n])}function fje(e,t){let r=Object.getPrototypeOf(t);r!==null&&typeof t.constructor=="function"&&Object.setPrototypeOf(e,r)}var Uie=F(()=>{"use strict";c2();u2();e4();zie();r4();o(iP,"clone");o(uje,"isCloneableObject");o(nP,"copyOwnProperties");o(hje,"copySymbolProperties");o(dje,"cloneStringObjectProperties");o(fje,"copyPrototype")});function n4(e){if(typeof e!="object"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!=="[object Object]"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var Yie=F(()=>{"use strict";o(n4,"isPlainObject")});function jie(e){if(Ud(e))return e;if(Array.isArray(e)||My(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e);if(t==null)return Object.assign(Object.create(t),e);let r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let n=new r(e);return n.lastIndex=e.lastIndex,n}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let n;return e instanceof AggregateError?n=new r(e.errors,e.message,{cause:e.cause}):n=new r(e.message,{cause:e.cause}),n.stack=e.stack,Object.assign(n,e),n}if(typeof File<"u"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e=="object"){let n=Object.create(t);return Object.assign(n,e)}return e}var Xie=F(()=>{"use strict";c2();t4();o(jie,"clone")});function Kie(e,...t){let r=t.slice(0,-1),n=t[t.length-1],i=e;for(let a=0;a{"use strict";Oie();Die();Xie();c2();JN();tP();$ie();rP();Yie();r4();o(Kie,"mergeWith");o(i4,"mergeWithDeep")});function aP(e,...t){return Kie(e,...t,Vie)}var Qie=F(()=>{"use strict";Zie();Wie();o(aP,"merge")});function a4(e){if(e==null)return!0;if(VE(e))return typeof e.splice!="function"&&typeof e!="string"&&(typeof Buffer>"u"||!Buffer.isBuffer(e))&&!jd(e)&&!v2(e)?!1:e.length===0;if(typeof e=="object"){if(e instanceof Map||e instanceof Set)return e.size===0;let t=Object.keys(e);return qie(e)?t.filter(r=>r!=="constructor").length===0:t.length===0}return!0}var Jie=F(()=>{"use strict";tP();QN();r4();Hie();o(a4,"isEmpty")});var s4=F(()=>{"use strict";Gie();Uie();Qie();Jie()});function lP(e,t){if(!e)return t;let r=`curve${e.charAt(0).toUpperCase()+e.slice(1)}`;return pje[r]??t}function vje(e,t){let r=e.trim();if(r)return t.securityLevel!=="loose"?(0,rae.sanitizeUrl)(r):r}function aae(e,t){return!e||!t?0:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function bje(e){let t,r=0;e.forEach(i=>{r+=aae(i,t),t=i});let n=r/2;return cP(e,n)}function Tje(e){return e.length===1?e[0]:bje(e)}function wje(e,t,r){let n=structuredClone(r);Z.info("our points",n),t!=="start_left"&&t!=="start_right"&&n.reverse();let i=25+e,a=cP(n,i),s=10+e*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return t==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):t==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):t==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function uP(e){let t="",r="";for(let n of e)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":t=t+n+";");return{style:t,labelStyle:r}}function kje(e){let t="",r="0123456789abcdef",n=r.length;for(let i=0;iMath.round(parseFloat(a)).toString());return i.includes(r.toString())||i.includes(n.toString())}var rae,oP,pje,mje,gje,nae,iae,yje,xje,eae,cP,Cje,tae,hP,dP,Sje,Eje,ym,Aje,b2,sP,o4,Rje,_je,As,Zt,sae,Rs,eu,Qt=F(()=>{"use strict";rae=Xs(Ly(),1);$r();Vr();Ek();vt();Up();G0();s4();yS();oP="\u200B",pje={curveBasis:rc,curveBasisClosed:_E,curveBasisOpen:LE,curveBumpX:Xb,curveBumpY:Kb,curveBundle:$N,curveCardinalClosed:FN,curveCardinalOpen:GN,curveCardinal:e2,curveCatmullRomClosed:WN,curveCatmullRomOpen:qN,curveCatmullRom:n2,curveLinear:Jc,curveLinearClosed:PE,curveMonotoneX:i2,curveMonotoneY:a2,curveNatural:Ry,curveStep:_y,curveStepAfter:o2,curveStepBefore:s2},mje=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,gje=o(function(e,t){let r=nae(e,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);W0(s),n=Yn(n,[...s])}else n=r.args;if(!n)return;let i=ny(e,t),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),nae=o(function(e,t=null){try{let r=new RegExp(`[%]{2}(?![{]${mje.source})(?=[}][%]{2}).* +`,"ig");e=e.trim().replace(r,"").replace(/'/gm,'"'),Z.debug(`Detecting diagram directive${t!==null?" type:"+t:""} based on the text:${e}`);let n,i=[];for(;(n=Hp.exec(e))!==null;)if(n.index===Hp.lastIndex&&Hp.lastIndex++,n&&!t||t&&n[1]?.match(t)||t&&n[2]?.match(t)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:e,args:null}:i.length===1?i[0]:i}catch(r){return Z.error(`ERROR: ${r.message} - Unable to parse directive type: '${t}' based on the text: '${e}'`),{type:void 0,args:null}}},"detectDirective"),iae=o(function(e){return e.replace(Hp,"")},"removeDirectives"),yje=o(function(e,t){for(let[r,n]of t.entries())if(n.match(e))return r;return-1},"isSubstringInArray");o(lP,"interpolateToCurve");o(vje,"formatUrl");xje=o((e,...t)=>{let r=e.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,t);return Math.round(e*r)/r},"roundNumber"),cP=o((e,t)=>{let r,n=t;for(let i of e){if(r){let a=aae(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:eae((1-s)*r.x+s*i.x,5),y:eae((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),Cje=o((e,t,r)=>{Z.info(`our points ${JSON.stringify(t)}`),t[0]!==r&&(t=t.reverse());let i=cP(t,25),a=e?10:5,s=Math.atan2(t[0].y-i.y,t[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(t[0].x+i.x)/2,l.y=-Math.cos(s)*a+(t[0].y+i.y)/2,l},"calcCardinalityPosition");o(wje,"calcTerminalLabelPosition");o(uP,"getStylesFromArray");tae=0,hP=o(()=>(tae++,"id-"+Math.random().toString(36).substr(2,12)+"-"+tae),"generateId");o(kje,"makeRandomHex");dP=o(e=>kje(e.length),"random"),Sje=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),Eje=o(function(e,t){let r=t.text.replace(xt.lineBreakRegex," "),[,n]=As(t.fontSize),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.style("text-anchor",t.anchor),i.style("font-family",t.fontFamily),i.style("font-size",n),i.style("font-weight",t.fontWeight),i.attr("fill",t.fill),t.class!==void 0&&i.attr("class",t.class);let a=i.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.attr("fill",t.fill),a.text(r),i},"drawSimpleText"),ym=gm((e,t,r)=>{if(!e||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),xt.lineBreakRegex.test(e)))return e;let n=e.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=Ca(`${s} `,r),h=Ca(a,r);if(u>t){let{hyphenatedStrings:p,remainingWord:m}=Aje(s,t,"-",r);i.push(a,...p),a=m}else h+u>=t?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Aje=gm((e,t,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...e],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(Ca(h,n)>=t){let f=u+1,p=i.length===f,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(e,t,r="-",n)=>`${e}${t}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(l4,"calculateTextHeight");o(Ca,"calculateTextWidth");b2=gm((e,t)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=t;if(!e)return{width:0,height:0};let[,a]=As(r),s=["sans-serif",n],l=e.split(xt.lineBreakRegex),u=[],h=et("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let d=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=Sje();v.text=y||oP;let x=Eje(d,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}d.remove();let f=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[f]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),sP=class{constructor(t=!1,r){this.count=0;this.count=r?r.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},Rje=o(function(e){return o4=o4||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),o4.innerHTML=e,unescape(o4.textContent)},"entityDecode");o(fP,"isDetailedError");_je=o((e,t,r,n)=>{if(!n)return;let i=e.node()?.getBBox();i&&e.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",t)},"insertTitle"),As=o(e=>{if(typeof e=="number")return[e,e+"px"];let t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");o(qr,"cleanAndMerge");Zt={assignWithDepth:Yn,wrapLabel:ym,calculateTextHeight:l4,calculateTextWidth:Ca,calculateTextDimensions:b2,cleanAndMerge:qr,detectInit:gje,detectDirective:nae,isSubstringInArray:yje,interpolateToCurve:lP,calcLabelPosition:Tje,calcCardinalityPosition:Cje,calcTerminalLabelPosition:wje,formatUrl:vje,getStylesFromArray:uP,generateId:hP,random:dP,runFunc:xje,entityDecode:Rje,insertTitle:_je,isLabelCoordinateInPath:Lje,parseFontSize:As,InitIDGenerator:sP},sae=o(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),t},"encodeEntities"),Rs=o(function(e){return e.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),eu=o((e,t,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${e}_${t}_${r}${i?`_${i}`:""}`,"getEdgeId");o(kn,"handleUndefinedAttr");o(Lje,"isLabelCoordinateInPath")});function ic(e,t,r,n,i){if(!t[e].width)if(r)t[e].text=ym(t[e].text,i,n),t[e].textLines=t[e].text.split(xt.lineBreakRegex).length,t[e].width=i,t[e].height=l4(t[e].text,n);else{let a=t[e].text.split(xt.lineBreakRegex);t[e].textLines=a.length;let s=0;t[e].height=0,t[e].width=0;for(let l of a)t[e].width=Math.max(Ca(l,n),t[e].width),s=l4(l,n),t[e].height=t[e].height+s}}function hae(e,t,r,n,i){let a=new d4(i);a.data.widthLimit=r.data.widthLimit/Math.min(pP,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&sr.wrap,d=c4(sr);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",ic("label",l,h,d,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=c4(sr);ic("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=c4(sr);g.fontSize=g.fontSize-2,ic("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%pP===0){let g=r.data.startx+sr.diagramMarginX,y=r.data.stopy+sr.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+sr.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let f=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&uae(a,e,f,p),t=l.alias;let m=i.db.getBoundaries(t);m.length>0&&hae(e,t,a,m,i),l.alias!=="global"&&cae(e,l,a),r.data.stopy=Math.max(a.data.stopy+sr.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+sr.c4ShapeMargin,r.data.stopx),u4=Math.max(u4,r.data.stopx),h4=Math.max(h4,r.data.stopy)}}var u4,h4,lae,pP,sr,d4,mP,T2,c4,Dje,cae,uae,eo,oae,Ije,Mje,Nje,gP,dae=F(()=>{"use strict";$r();Aie();vt();p8();Vr();k8();Xt();G0();Qt();$n();u4=0,h4=0,lae=4,pP=2;ob.yy=pb;sr={},d4=class{static{o(this,"Bounds")}constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,mP(t.db.getConfig())}setData(t,r,n,i){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(t,r,n,i){t[r]===void 0?t[r]=n:t[r]=i(n,t[r])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+t.margin*2,n=r+t.width,i=this.nextData.starty+t.margin*2,a=i+t.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>lae)&&(r=this.nextData.startx+t.margin+sr.nextLinePaddingX,i=this.nextData.stopy+t.margin*2,this.nextData.stopx=n=r+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+t.height,this.nextData.cnt=1),t.x=r,t.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},mP(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},mP=o(function(e){Yn(sr,e),e.fontFamily&&(sr.personFontFamily=sr.systemFontFamily=sr.messageFontFamily=e.fontFamily),e.fontSize&&(sr.personFontSize=sr.systemFontSize=sr.messageFontSize=e.fontSize),e.fontWeight&&(sr.personFontWeight=sr.systemFontWeight=sr.messageFontWeight=e.fontWeight)},"setConf"),T2=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"c4ShapeFont"),c4=o(e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),"boundaryFont"),Dje=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont");o(ic,"calcC4ShapeTextWH");cae=o(function(e,t,r){t.x=r.data.startx,t.y=r.data.starty,t.width=r.data.stopx-r.data.startx,t.height=r.data.stopy-r.data.starty,t.label.y=sr.c4ShapeMargin-35;let n=t.wrap&&sr.wrap,i=c4(sr);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=Ca(t.label.text,i);ic("label",t,n,i,a),nc.drawBoundary(e,t,sr)},"drawBoundary"),uae=o(function(e,t,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=T2(sr,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Ca("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=sr.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&sr.wrap,h=sr.width-sr.c4ShapePadding*2,d=T2(sr,s.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",ic("label",s,u,d,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=T2(sr,s.typeC4Shape.text);ic("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=T2(sr,s.techn.text);ic("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let f=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=T2(sr,s.typeC4Shape.text);ic("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),f=i-s.descr.textLines*5}p=p+sr.c4ShapePadding,s.width=Math.max(s.width||sr.width,p,sr.width),s.height=Math.max(s.height||sr.height,f,sr.height),s.margin=s.margin||sr.c4ShapeMargin,e.insert(s),nc.drawC4Shape(t,s,sr)}e.bumpLastMargin(sr.c4ShapeMargin)},"drawC4ShapeArray"),eo=class{static{o(this,"Point")}constructor(t,r){this.x=t,this.y=r}},oae=o(function(e,t){let r=e.x,n=e.y,i=t.x,a=t.y,s=r+e.width/2,l=n+e.height/2,u=Math.abs(r-i),h=Math.abs(n-a),d=h/u,f=e.height/e.width,p=null;return n==a&&ri?p=new eo(r,l):r==i&&na&&(p=new eo(s,n)),r>i&&n=d?p=new eo(r,l+d*e.width/2):p=new eo(s-u/h*e.height/2,n+e.height):r=d?p=new eo(r+e.width,l+d*e.width/2):p=new eo(s+u/h*e.height/2,n+e.height):ra?f>=d?p=new eo(r+e.width,l-d*e.width/2):p=new eo(s+e.height/2*u/h,n):r>i&&n>a&&(f>=d?p=new eo(r,l-e.width/2*d):p=new eo(s-e.height/2*u/h,n)),p},"getIntersectPoint"),Ije=o(function(e,t){let r={x:0,y:0};r.x=t.x+t.width/2,r.y=t.y+t.height/2;let n=oae(e,r);r.x=e.x+e.width/2,r.y=e.y+e.height/2;let i=oae(t,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),Mje=o(function(e,t,r,n,i){let a=0;for(let s of t){a=a+1;let l=s.wrap&&sr.wrap,u=Dje(sr);n.db.getC4Type()==="C4Dynamic"&&(s.label.text=a+": "+s.label.text);let d=Ca(s.label.text,u);ic("label",s,l,u,d),s.techn&&s.techn.text!==""&&(d=Ca(s.techn.text,u),ic("techn",s,l,u,d)),s.descr&&s.descr.text!==""&&(d=Ca(s.descr.text,u),ic("descr",s,l,u,d));let f=r(s.from),p=r(s.to),m=Ije(f,p);s.startPoint=m.startPoint,s.endPoint=m.endPoint}nc.drawRels(e,t,sr,i)},"drawRels");o(hae,"drawInsideBoundary");Nje=o(function(e,t,r,n){sr=Ae().c4;let i=Ae().securityLevel,a;i==="sandbox"&&(a=et("#i"+t));let s=i==="sandbox"?et(a.nodes()[0].contentDocument.body):et("body"),l=n.db;n.db.setWrap(sr.wrap),lae=l.getC4ShapeInRow(),pP=l.getC4BoundaryInRow(),Z.debug(`C:${JSON.stringify(sr,null,2)}`);let u=i==="sandbox"?s.select(`[id="${t}"]`):et(`[id="${t}"]`);nc.insertComputerIcon(u,t),nc.insertDatabaseIcon(u,t),nc.insertClockIcon(u,t);let h=new d4(n);h.setData(sr.diagramMarginX,sr.diagramMarginX,sr.diagramMarginY,sr.diagramMarginY),h.data.widthLimit=screen.availWidth,u4=sr.diagramMarginX,h4=sr.diagramMarginY;let d=n.db.getTitle(),f=n.db.getBoundaries("");hae(u,"",h,f,n),nc.insertArrowHead(u,t),nc.insertArrowEnd(u,t),nc.insertArrowCrossHead(u,t),nc.insertArrowFilledHead(u,t),Mje(u,n.db.getRels(),n.db.getC4Shape,n,t),h.data.stopx=u4,h.data.stopy=h4;let p=h.data,g=p.stopy-p.starty+2*sr.diagramMarginY,v=p.stopx-p.startx+2*sr.diagramMarginX;d&&u.append("text").text(d).attr("x",(p.stopx-p.startx)/2-4*sr.diagramMarginX).attr("y",p.starty+sr.diagramMarginY),Wr(u,g,v,sr.useMaxWidth);let x=d?60:0;u.attr("viewBox",p.startx-sr.diagramMarginX+" -"+(sr.diagramMarginY+x)+" "+v+" "+(g+x)),Z.debug("models:",p)},"draw"),gP={drawPersonOrSystemArray:uae,drawBoundary:cae,setConf:mP,draw:Nje}});var Pje,fae,pae=F(()=>{"use strict";Pje=o(e=>`.person { + stroke: ${e.personBorder}; + fill: ${e.personBkg}; + } +`,"getStyles"),fae=Pje});var mae={};ir(mae,{diagram:()=>Oje});var Oje,gae=F(()=>{"use strict";p8();k8();dae();pae();Oje={parser:oJ,db:pb,renderer:gP,styles:fae,init:o(({c4:e,wrap:t})=>{gP.setConf(e),pb.setWrap(t)},"init")}});function Mae(e){return typeof e>"u"||e===null}function zje(e){return typeof e=="object"&&e!==null}function Gje(e){return Array.isArray(e)?e:Mae(e)?[]:[e]}function Vje(e,t){var r,n,i,a;if(t)for(a=Object.keys(t),r=0,n=a.length;rl&&(a=" ... ",t=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+e.slice(t,r).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function vP(e,t){return sa.repeat(" ",t-e.length)+e}function Zje(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(e.buffer);)i.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,d=Math.min(e.line+t.linesAfter,i.length).toString().length,f=t.maxLength-(t.indent+d+3);for(u=1;u<=t.linesBefore&&!(s-u<0);u++)h=yP(e.buffer,n[s-u],i[s-u],e.position-(n[s]-n[s-u]),f),l=sa.repeat(" ",t.indent)+vP((e.line-u+1).toString(),d)+" | "+h.str+` +`+l;for(h=yP(e.buffer,n[s],i[s],e.position,f),l+=sa.repeat(" ",t.indent)+vP((e.line+1).toString(),d)+" | "+h.str+` +`,l+=sa.repeat("-",t.indent+d+3+h.pos)+`^ +`,u=1;u<=t.linesAfter&&!(s+u>=i.length);u++)h=yP(e.buffer,n[s+u],i[s+u],e.position-(n[s]-n[s+u]),f),l+=sa.repeat(" ",t.indent)+vP((e.line+u+1).toString(),d)+" | "+h.str+` +`;return l.replace(/\n$/,"")}function tXe(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(n){t[String(n)]=r})}),t}function rXe(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(Jje.indexOf(r)===-1)throw new to('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=tXe(t.styleAliases||null),eXe.indexOf(this.kind)===-1)throw new to('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}function vae(e,t){var r=[];return e[t].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function nXe(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,r;function n(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(o(n,"collectType"),t=0,r=arguments.length;t=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)}function RXe(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(sa.isNegativeZero(e))return"-0.0";return r=e.toString(10),AXe.test(r)?r.replace("e",".e"):r}function _Xe(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||sa.isNegativeZero(e))}function IXe(e){return e===null?!1:Oae.exec(e)!==null||Bae.exec(e)!==null}function MXe(e){var t,r,n,i,a,s,l,u=0,h=null,d,f,p;if(t=Oae.exec(e),t===null&&(t=Bae.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],n=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,n,i));if(a=+t[4],s=+t[5],l=+t[6],t[7]){for(u=t[7].slice(0,3);u.length<3;)u+="0";u=+u}return t[9]&&(d=+t[10],f=+(t[11]||0),h=(d*60+f)*6e4,t[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function NXe(e){return e.toISOString()}function OXe(e){return e==="<<"||e===null}function $Xe(e){if(e===null)return!1;var t,r,n=0,i=e.length,a=SP;for(r=0;r64)){if(t<0)return!1;n+=6}return n%8===0}function FXe(e){var t,r,n=e.replace(/[\r\n=]/g,""),i=n.length,a=SP,s=0,l=[];for(t=0;t>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function zXe(e){var t="",r=0,n,i,a=e.length,s=SP;for(n=0;n>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[n];return i=a%3,i===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):i===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):i===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function GXe(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}function HXe(e){if(e===null)return!0;var t=[],r,n,i,a,s,l=e;for(r=0,n=l.length;r>10)+55296,(e-65536&1023)+56320)}function Wae(e,t,r){t==="__proto__"?Object.defineProperty(e,t,{configurable:!0,enumerable:!0,writable:!0,value:r}):e[t]=r}function uKe(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||$ae,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Uae(e,t){var r={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return r.snippet=Qje(r),new to(t,r)}function dr(e,t){throw Uae(e,t)}function m4(e,t){e.onWarning&&e.onWarning.call(null,Uae(e,t))}function Xd(e,t,r,n){var i,a,s,l;if(t1&&(e.result+=sa.repeat(` +`,t-1))}function hKe(e,t,r){var n,i,a,s,l,u,h,d,f=e.kind,p=e.result,m;if(m=e.input.charCodeAt(e.position),ro(m)||Oy(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=e.input.charCodeAt(e.position+1),ro(i)||r&&Oy(i)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,l=!1;m!==0;){if(m===58){if(i=e.input.charCodeAt(e.position+1),ro(i)||r&&Oy(i))break}else if(m===35){if(n=e.input.charCodeAt(e.position-1),ro(n))break}else{if(e.position===e.lineStart&&v4(e)||r&&Oy(m))break;if(tu(m))if(u=e.line,h=e.lineStart,d=e.lineIndent,Ui(e,!1,-1),e.lineIndent>=t){l=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=u,e.lineStart=h,e.lineIndent=d;break}}l&&(Xd(e,a,s,!1),AP(e,e.line-u),a=s=e.position,l=!1),xm(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return Xd(e,a,s,!1),e.result?!0:(e.kind=f,e.result=p,!1)}function dKe(e,t){var r,n,i;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=i=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(Xd(e,n,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)n=e.position,e.position++,i=e.position;else return!0;else tu(r)?(Xd(e,n,i,!0),AP(e,Ui(e,!1,t)),n=i=e.position):e.position===e.lineStart&&v4(e)?dr(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);dr(e,"unexpected end of the stream within a single quoted scalar")}function fKe(e,t){var r,n,i,a,s,l;if(l=e.input.charCodeAt(e.position),l!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=n=e.position;(l=e.input.charCodeAt(e.position))!==0;){if(l===34)return Xd(e,r,e.position,!0),e.position++,!0;if(l===92){if(Xd(e,r,e.position,!0),l=e.input.charCodeAt(++e.position),tu(l))Ui(e,!1,t);else if(l<256&&qae[l])e.result+=Hae[l],e.position++;else if((s=oKe(l))>0){for(i=s,a=0;i>0;i--)l=e.input.charCodeAt(++e.position),(s=sKe(l))>=0?a=(a<<4)+s:dr(e,"expected hexadecimal character");e.result+=cKe(a),e.position++}else dr(e,"unknown escape sequence");r=n=e.position}else tu(l)?(Xd(e,r,n,!0),AP(e,Ui(e,!1,t)),r=n=e.position):e.position===e.lineStart&&v4(e)?dr(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}dr(e,"unexpected end of the stream within a double quoted scalar")}function pKe(e,t){var r=!0,n,i,a,s=e.tag,l,u=e.anchor,h,d,f,p,m,g=Object.create(null),y,v,x,b;if(b=e.input.charCodeAt(e.position),b===91)d=93,m=!1,l=[];else if(b===123)d=125,m=!0,l={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=l),b=e.input.charCodeAt(++e.position);b!==0;){if(Ui(e,!0,t),b=e.input.charCodeAt(e.position),b===d)return e.position++,e.tag=s,e.anchor=u,e.kind=m?"mapping":"sequence",e.result=l,!0;r?b===44&&dr(e,"expected the node content, but found ','"):dr(e,"missed comma between flow collection entries"),v=y=x=null,f=p=!1,b===63&&(h=e.input.charCodeAt(e.position+1),ro(h)&&(f=p=!0,e.position++,Ui(e,!0,t))),n=e.line,i=e.lineStart,a=e.position,$y(e,t,f4,!1,!0),v=e.tag,y=e.result,Ui(e,!0,t),b=e.input.charCodeAt(e.position),(p||e.line===n)&&b===58&&(f=!0,b=e.input.charCodeAt(++e.position),Ui(e,!0,t),$y(e,t,f4,!1,!0),x=e.result),m?By(e,l,g,v,y,x,n,i,a):f?l.push(By(e,null,g,v,y,x,n,i,a)):l.push(y),Ui(e,!0,t),b=e.input.charCodeAt(e.position),b===44?(r=!0,b=e.input.charCodeAt(++e.position)):r=!1}dr(e,"unexpected end of the stream within a flow collection")}function mKe(e,t){var r,n,i=xP,a=!1,s=!1,l=t,u=0,h=!1,d,f;if(f=e.input.charCodeAt(e.position),f===124)n=!1;else if(f===62)n=!0;else return!1;for(e.kind="scalar",e.result="";f!==0;)if(f=e.input.charCodeAt(++e.position),f===43||f===45)xP===i?i=f===43?xae:rKe:dr(e,"repeat of a chomping mode identifier");else if((d=lKe(f))>=0)d===0?dr(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?dr(e,"repeat of an indentation width identifier"):(l=t+d-1,s=!0);else break;if(xm(f)){do f=e.input.charCodeAt(++e.position);while(xm(f));if(f===35)do f=e.input.charCodeAt(++e.position);while(!tu(f)&&f!==0)}for(;f!==0;){for(EP(e),e.lineIndent=0,f=e.input.charCodeAt(e.position);(!s||e.lineIndentl&&(l=e.lineIndent),tu(f)){u++;continue}if(e.lineIndentt)&&u!==0)dr(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(v&&(s=e.line,l=e.lineStart,u=e.position),$y(e,t,p4,!0,i)&&(v?g=e.result:y=e.result),v||(By(e,f,p,m,g,y,s,l,u),m=g=y=null),Ui(e,!0,-1),b=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&b!==0)dr(e,"bad indentation of a mapping entry");else if(e.lineIndentt?u=1:e.lineIndent===t?u=0:e.lineIndentt?u=1:e.lineIndent===t?u=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),f=0,p=e.implicitTypes.length;f"),e.result!==null&&g.kind!==e.kind&&dr(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+g.kind+'", not "'+e.kind+'"'),g.resolve(e.result,e.tag)?(e.result=g.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):dr(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||d}function bKe(e){var t=e.position,r,n,i,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(Ui(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),r=e.position;s!==0&&!ro(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(r,e.position),i=[],n.length<1&&dr(e,"directive name must not be less than one character in length");s!==0;){for(;xm(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!tu(s));break}if(tu(s))break;for(r=e.position;s!==0&&!ro(s);)s=e.input.charCodeAt(++e.position);i.push(e.input.slice(r,e.position))}s!==0&&EP(e),Kd.call(Cae,n)?Cae[n](e,n,i):m4(e,'unknown document directive "'+n+'"')}if(Ui(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,Ui(e,!0,-1)):a&&dr(e,"directives end mark is expected"),$y(e,e.lineIndent-1,p4,!1,!0),Ui(e,!0,-1),e.checkLineBreaks&&iKe.test(e.input.slice(t,e.position))&&m4(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&v4(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,Ui(e,!0,-1));return}if(e.position"u"&&(r=t,t=null);var n=Yae(e,r);if(typeof t!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&t+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function rse(e){var t=/^\n* /;return t.test(e)}function KKe(e,t,r,n,i,a,s,l){var u,h=0,d=null,f=!1,p=!1,m=n!==-1,g=-1,y=jKe(C2(e,0))&&XKe(C2(e,e.length-1));if(t||s)for(u=0;u=65536?u+=2:u++){if(h=C2(e,u),!E2(h))return Py;y=y&&Aae(h,d,l),d=h}else{for(u=0;u=65536?u+=2:u++){if(h=C2(e,u),h===k2)f=!0,m&&(p=p||u-g-1>n&&e[g+1]!==" ",g=u);else if(!E2(h))return Py;y=y&&Aae(h,d,l),d=h}p=p||m&&u-g-1>n&&e[g+1]!==" "}return!f&&!p?y&&!s&&!i(e)?nse:a===S2?Py:wP:r>9&&rse(e)?Py:s?a===S2?Py:wP:p?ase:ise}function ZKe(e,t,r,n,i){e.dump=(function(){if(t.length===0)return e.quotingType===S2?'""':"''";if(!e.noCompatMode&&(GKe.indexOf(t)!==-1||VKe.test(t)))return e.quotingType===S2?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,r),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),l=n||e.flowLevel>-1&&r>=e.flowLevel;function u(h){return YKe(e,h)}switch(o(u,"testAmbiguity"),KKe(t,l,e.indent,s,u,e.quotingType,e.forceQuotes&&!n,i)){case nse:return t;case wP:return"'"+t.replace(/'/g,"''")+"'";case ise:return"|"+Rae(t,e.indent)+_ae(Sae(t,a));case ase:return">"+Rae(t,e.indent)+_ae(Sae(QKe(t,s),a));case Py:return'"'+JKe(t)+'"';default:throw new to("impossible error: invalid scalar style")}})()}function Rae(e,t){var r=rse(e)?String(t):"",n=e[e.length-1]===` +`,i=n&&(e[e.length-2]===` +`||e===` +`),a=i?"+":n?"":"-";return r+a+` +`}function _ae(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function QKe(e,t){for(var r=/(\n+)([^\n]*)/g,n=(function(){var h=e.indexOf(` +`);return h=h!==-1?h:e.length,r.lastIndex=h,Lae(e.slice(0,h),t)})(),i=e[0]===` +`||e[0]===" ",a,s;s=r.exec(e);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` +`:"")+Lae(u,t),i=a}return n}function Lae(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(e);)l=n.index,l-i>t&&(a=s>i?s:l,u+=` +`+e.slice(i,a),i=a+1),s=l;return u+=` +`,e.length-i>t&&s>i?u+=e.slice(i,s)+` +`+e.slice(s+1):u+=e.slice(i),u.slice(1)}function JKe(e){for(var t="",r=0,n,i=0;i=65536?i+=2:i++)r=C2(e,i),n=is[r],!n&&E2(r)?(t+=e[i],r>=65536&&(t+=e[i+1])):t+=n||qKe(r);return t}function eZe(e,t,r){var n="",i=e.tag,a,s,l;for(a=0,s=r.length;a"u"&&xh(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=i,e.dump="["+n+"]"}function Dae(e,t,r,n){var i="",a=e.tag,s,l,u;for(s=0,l=r.length;s"u"&&xh(e,t+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=CP(e,t)),e.dump&&k2===e.dump.charCodeAt(0)?i+="-":i+="- ",i+=e.dump);e.tag=a,e.dump=i||"[]"}function tZe(e,t,r){var n="",i=e.tag,a=Object.keys(r),s,l,u,h,d;for(s=0,l=a.length;s1024&&(d+="? "),d+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),xh(e,t,h,!1,!1)&&(d+=e.dump,n+=d));e.tag=i,e.dump="{"+n+"}"}function rZe(e,t,r,n){var i="",a=e.tag,s=Object.keys(r),l,u,h,d,f,p;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new to("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,f&&(e.dump&&k2===e.dump.charCodeAt(0)?p+="?":p+="? "),p+=e.dump,f&&(p+=CP(e,t)),xh(e,t+1,d,!0,f)&&(e.dump&&k2===e.dump.charCodeAt(0)?p+=":":p+=": ",p+=e.dump,i+=p));e.tag=a,e.dump=i||"{}"}function Iae(e,t,r){var n,i,a,s,l,u;for(i=r?e.explicitTypes:e.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');e.dump=n}return!0}return!1}function xh(e,t,r,n,i,a,s){e.tag=null,e.dump=r,Iae(e,r,!1)||Iae(e,r,!0);var l=Xae.call(e.dump),u=n,h;n&&(n=e.flowLevel<0||e.flowLevel>t);var d=l==="[object Object]"||l==="[object Array]",f,p;if(d&&(f=e.duplicates.indexOf(r),p=f!==-1),(e.tag!==null&&e.tag!=="?"||p||e.indent!==2&&t>0)&&(i=!1),p&&e.usedDuplicates[f])e.dump="*ref_"+f;else{if(d&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),l==="[object Object]")n&&Object.keys(e.dump).length!==0?(rZe(e,t,e.dump,i),p&&(e.dump="&ref_"+f+e.dump)):(tZe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?Dae(e,t-1,e.dump,i):Dae(e,t,e.dump,i),p&&(e.dump="&ref_"+f+e.dump)):(eZe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object String]")e.tag!=="?"&&ZKe(e,e.dump,t,a,u);else{if(l==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new to("unacceptable kind of an object to dump "+l)}e.tag!==null&&e.tag!=="?"&&(h=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",e.dump=h+" "+e.dump)}return!0}function nZe(e,t){var r=[],n=[],i,a;for(kP(e,r,n),i=0,a=n.length;i{"use strict";o(Mae,"isNothing");o(zje,"isObject");o(Gje,"toArray");o(Vje,"extend");o(Wje,"repeat");o(qje,"isNegativeZero");Hje=Mae,Uje=zje,Yje=Gje,jje=Wje,Xje=qje,Kje=Vje,sa={isNothing:Hje,isObject:Uje,toArray:Yje,repeat:jje,isNegativeZero:Xje,extend:Kje};o(Nae,"formatError");o(w2,"YAMLException$1");w2.prototype=Object.create(Error.prototype);w2.prototype.constructor=w2;w2.prototype.toString=o(function(t){return this.name+": "+Nae(this,t)},"toString");to=w2;o(yP,"getLine");o(vP,"padStart");o(Zje,"makeSnippet");Qje=Zje,Jje=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],eXe=["scalar","sequence","mapping"];o(tXe,"compileStyleAliases");o(rXe,"Type$1");ns=rXe;o(vae,"compileList");o(nXe,"compileMap");o(bP,"Schema$1");bP.prototype.extend=o(function(t){var r=[],n=[];if(t instanceof ns)n.push(t);else if(Array.isArray(t))n=n.concat(t);else if(t&&(Array.isArray(t.implicit)||Array.isArray(t.explicit)))t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit));else throw new to("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof ns))throw new to("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new to("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new to("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof ns))throw new to("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(bP.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=vae(i,"implicit"),i.compiledExplicit=vae(i,"explicit"),i.compiledTypeMap=nXe(i.compiledImplicit,i.compiledExplicit),i},"extend");iXe=bP,aXe=new ns("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(e){return e!==null?e:""},"construct")}),sXe=new ns("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(e){return e!==null?e:[]},"construct")}),oXe=new ns("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(e){return e!==null?e:{}},"construct")}),lXe=new iXe({explicit:[aXe,sXe,oXe]});o(cXe,"resolveYamlNull");o(uXe,"constructYamlNull");o(hXe,"isNull");dXe=new ns("tag:yaml.org,2002:null",{kind:"scalar",resolve:cXe,construct:uXe,predicate:hXe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(fXe,"resolveYamlBoolean");o(pXe,"constructYamlBoolean");o(mXe,"isBoolean");gXe=new ns("tag:yaml.org,2002:bool",{kind:"scalar",resolve:fXe,construct:pXe,predicate:mXe,represent:{lowercase:o(function(e){return e?"true":"false"},"lowercase"),uppercase:o(function(e){return e?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(e){return e?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(yXe,"isHexCode");o(vXe,"isOctCode");o(xXe,"isDecCode");o(bXe,"resolveYamlInteger");o(TXe,"constructYamlInteger");o(CXe,"isInteger");wXe=new ns("tag:yaml.org,2002:int",{kind:"scalar",resolve:bXe,construct:TXe,predicate:CXe,represent:{binary:o(function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},"binary"),octal:o(function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},"octal"),decimal:o(function(e){return e.toString(10)},"decimal"),hexadecimal:o(function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),kXe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(SXe,"resolveYamlFloat");o(EXe,"constructYamlFloat");AXe=/^[-+]?[0-9]+e/;o(RXe,"representYamlFloat");o(_Xe,"isFloat");LXe=new ns("tag:yaml.org,2002:float",{kind:"scalar",resolve:SXe,construct:EXe,predicate:_Xe,represent:RXe,defaultStyle:"lowercase"}),Pae=lXe.extend({implicit:[dXe,gXe,wXe,LXe]}),DXe=Pae,Oae=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Bae=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(IXe,"resolveYamlTimestamp");o(MXe,"constructYamlTimestamp");o(NXe,"representYamlTimestamp");PXe=new ns("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:IXe,construct:MXe,instanceOf:Date,represent:NXe});o(OXe,"resolveYamlMerge");BXe=new ns("tag:yaml.org,2002:merge",{kind:"scalar",resolve:OXe}),SP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;o($Xe,"resolveYamlBinary");o(FXe,"constructYamlBinary");o(zXe,"representYamlBinary");o(GXe,"isBinary");VXe=new ns("tag:yaml.org,2002:binary",{kind:"scalar",resolve:$Xe,construct:FXe,predicate:GXe,represent:zXe}),WXe=Object.prototype.hasOwnProperty,qXe=Object.prototype.toString;o(HXe,"resolveYamlOmap");o(UXe,"constructYamlOmap");YXe=new ns("tag:yaml.org,2002:omap",{kind:"sequence",resolve:HXe,construct:UXe}),jXe=Object.prototype.toString;o(XXe,"resolveYamlPairs");o(KXe,"constructYamlPairs");ZXe=new ns("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:XXe,construct:KXe}),QXe=Object.prototype.hasOwnProperty;o(JXe,"resolveYamlSet");o(eKe,"constructYamlSet");tKe=new ns("tag:yaml.org,2002:set",{kind:"mapping",resolve:JXe,construct:eKe}),$ae=DXe.extend({implicit:[PXe,BXe],explicit:[VXe,YXe,ZXe,tKe]}),Kd=Object.prototype.hasOwnProperty,f4=1,Fae=2,zae=3,p4=4,xP=1,rKe=2,xae=3,nKe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,iKe=/[\x85\u2028\u2029]/,aKe=/[,\[\]\{\}]/,Gae=/^(?:!|!!|![a-z\-]+!)$/i,Vae=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(bae,"_class");o(tu,"is_EOL");o(xm,"is_WHITE_SPACE");o(ro,"is_WS_OR_EOL");o(Oy,"is_FLOW_INDICATOR");o(sKe,"fromHexCode");o(oKe,"escapedHexLen");o(lKe,"fromDecimalCode");o(Tae,"simpleEscapeSequence");o(cKe,"charFromCodepoint");o(Wae,"setProperty");qae=new Array(256),Hae=new Array(256);for(vm=0;vm<256;vm++)qae[vm]=Tae(vm)?1:0,Hae[vm]=Tae(vm);o(uKe,"State$1");o(Uae,"generateError");o(dr,"throwError");o(m4,"throwWarning");Cae={YAML:o(function(t,r,n){var i,a,s;t.version!==null&&dr(t,"duplication of %YAML directive"),n.length!==1&&dr(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&dr(t,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&dr(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&m4(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(t,r,n){var i,a;n.length!==2&&dr(t,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],Gae.test(i)||dr(t,"ill-formed tag handle (first argument) of the TAG directive"),Kd.call(t.tagMap,i)&&dr(t,'there is a previously declared suffix for "'+i+'" tag handle'),Vae.test(a)||dr(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{dr(t,"tag prefix is malformed: "+a)}t.tagMap[i]=a},"handleTagDirective")};o(Xd,"captureSegment");o(wae,"mergeMappings");o(By,"storeMappingPair");o(EP,"readLineBreak");o(Ui,"skipSeparationSpace");o(v4,"testDocumentSeparator");o(AP,"writeFoldedLines");o(hKe,"readPlainScalar");o(dKe,"readSingleQuotedScalar");o(fKe,"readDoubleQuotedScalar");o(pKe,"readFlowCollection");o(mKe,"readBlockScalar");o(kae,"readBlockSequence");o(gKe,"readBlockMapping");o(yKe,"readTagProperty");o(vKe,"readAnchorProperty");o(xKe,"readAlias");o($y,"composeNode");o(bKe,"readDocument");o(Yae,"loadDocuments");o(TKe,"loadAll$1");o(CKe,"load$1");wKe=TKe,kKe=CKe,jae={loadAll:wKe,load:kKe},Xae=Object.prototype.toString,Kae=Object.prototype.hasOwnProperty,RP=65279,SKe=9,k2=10,EKe=13,AKe=32,RKe=33,_Ke=34,TP=35,LKe=37,DKe=38,IKe=39,MKe=42,Zae=44,NKe=45,g4=58,PKe=61,OKe=62,BKe=63,$Ke=64,Qae=91,Jae=93,FKe=96,ese=123,zKe=124,tse=125,is={};is[0]="\\0";is[7]="\\a";is[8]="\\b";is[9]="\\t";is[10]="\\n";is[11]="\\v";is[12]="\\f";is[13]="\\r";is[27]="\\e";is[34]='\\"';is[92]="\\\\";is[133]="\\N";is[160]="\\_";is[8232]="\\L";is[8233]="\\P";GKe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],VKe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(WKe,"compileStyleMap");o(qKe,"encodeHex");HKe=1,S2=2;o(UKe,"State");o(Sae,"indentString");o(CP,"generateNextLine");o(YKe,"testImplicitResolving");o(y4,"isWhitespace");o(E2,"isPrintable");o(Eae,"isNsCharOrWhitespace");o(Aae,"isPlainSafe");o(jKe,"isPlainSafeFirst");o(XKe,"isPlainSafeLast");o(C2,"codePointAt");o(rse,"needIndentIndicator");nse=1,wP=2,ise=3,ase=4,Py=5;o(KKe,"chooseScalarStyle");o(ZKe,"writeScalar");o(Rae,"blockHeader");o(_ae,"dropEndingNewline");o(QKe,"foldString");o(Lae,"foldLine");o(JKe,"escapeString");o(eZe,"writeFlowSequence");o(Dae,"writeBlockSequence");o(tZe,"writeFlowMapping");o(rZe,"writeBlockMapping");o(Iae,"detectType");o(xh,"writeNode");o(nZe,"getDuplicateReferences");o(kP,"inspectNode");o(iZe,"dump$1");aZe=iZe,sZe={dump:aZe};o(_P,"renamed");Zd=Pae,Qd=jae.load,hir=jae.loadAll,dir=sZe.dump,fir=_P("safeLoad","load"),pir=_P("safeLoadAll","loadAll"),mir=_P("safeDump","dump")});function MP(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function hse(e){Tm=e}function _n(e,t=""){let r=typeof e=="string"?e:e.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(_s.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,t),"getRegex")};return n}function ru(e,t){if(t){if(_s.escapeTest.test(e))return e.replace(_s.escapeReplace,ose)}else if(_s.escapeTestNoEncode.test(e))return e.replace(_s.escapeReplaceNoEncode,ose);return e}function lse(e){try{e=encodeURI(e).replace(_s.percentDecode,"%")}catch{return null}return e}function cse(e,t){let r=e.replace(_s.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(_s.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0?-2:-1}function use(e,t,r,n,i){let a=t.href,s=t.title||null,l=e[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;let u={type:e[0].charAt(0)==="!"?"image":"link",raw:r,href:a,title:s,text:l,tokens:n.inlineTokens(l)};return n.state.inLink=!1,u}function GZe(e,t,r){let n=e.match(r.other.indentCodeCompensation);if(n===null)return t;let i=n[1];return t.split(` +`).map(a=>{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(` +`)}function Sn(e,t){return bm.parse(e,t)}var Tm,D2,_s,oZe,lZe,cZe,I2,uZe,NP,dse,fse,hZe,PP,dZe,OP,fZe,pZe,k4,BP,mZe,pse,gZe,$P,sse,yZe,vZe,xZe,bZe,mse,TZe,S4,FP,gse,CZe,yse,wZe,kZe,SZe,vse,EZe,AZe,xse,RZe,_Ze,LZe,DZe,IZe,MZe,NZe,T4,PZe,bse,Tse,OZe,zP,BZe,LP,$Ze,b4,R2,FZe,ose,C4,bh,w4,GP,Th,L2,VZe,bm,yir,vir,xir,bir,Tir,Cir,wir,Cse=F(()=>{"use strict";o(MP,"L");Tm=MP();o(hse,"G");D2={exec:o(()=>null,"exec")};o(_n,"h");_s={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},oZe=/^(?:[ \t]*(?:\n|$))+/,lZe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,cZe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,I2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,uZe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,NP=/(?:[*+-]|\d{1,9}[.)])/,dse=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,fse=_n(dse).replace(/bull/g,NP).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),hZe=_n(dse).replace(/bull/g,NP).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),PP=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,dZe=/^[^\n]+/,OP=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,fZe=_n(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",OP).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),pZe=_n(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,NP).getRegex(),k4="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",BP=/|$))/,mZe=_n("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",BP).replace("tag",k4).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),pse=_n(PP).replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex(),gZe=_n(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",pse).getRegex(),$P={blockquote:gZe,code:lZe,def:fZe,fences:cZe,heading:uZe,hr:I2,html:mZe,lheading:fse,list:pZe,newline:oZe,paragraph:pse,table:D2,text:dZe},sse=_n("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex(),yZe={...$P,lheading:hZe,table:sse,paragraph:_n(PP).replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",sse).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex()},vZe={...$P,html:_n(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",BP).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:D2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:_n(PP).replace("hr",I2).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",fse).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},xZe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,bZe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mse=/^( {2,}|\\)\n(?!\s*$)/,TZe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,vse=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,EZe=_n(vse,"u").replace(/punct/g,S4).getRegex(),AZe=_n(vse,"u").replace(/punct/g,yse).getRegex(),xse="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",RZe=_n(xse,"gu").replace(/notPunctSpace/g,gse).replace(/punctSpace/g,FP).replace(/punct/g,S4).getRegex(),_Ze=_n(xse,"gu").replace(/notPunctSpace/g,kZe).replace(/punctSpace/g,wZe).replace(/punct/g,yse).getRegex(),LZe=_n("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,gse).replace(/punctSpace/g,FP).replace(/punct/g,S4).getRegex(),DZe=_n(/\\(punct)/,"gu").replace(/punct/g,S4).getRegex(),IZe=_n(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),MZe=_n(BP).replace("(?:-->|$)","-->").getRegex(),NZe=_n("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",MZe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),T4=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,PZe=_n(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",T4).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),bse=_n(/^!?\[(label)\]\[(ref)\]/).replace("label",T4).replace("ref",OP).getRegex(),Tse=_n(/^!?\[(ref)\](?:\[\])?/).replace("ref",OP).getRegex(),OZe=_n("reflink|nolink(?!\\()","g").replace("reflink",bse).replace("nolink",Tse).getRegex(),zP={_backpedal:D2,anyPunctuation:DZe,autolink:IZe,blockSkip:SZe,br:mse,code:bZe,del:D2,emStrongLDelim:EZe,emStrongRDelimAst:RZe,emStrongRDelimUnd:LZe,escape:xZe,link:PZe,nolink:Tse,punctuation:CZe,reflink:bse,reflinkSearch:OZe,tag:NZe,text:TZe,url:D2},BZe={...zP,link:_n(/^!?\[(label)\]\((.*?)\)/).replace("label",T4).getRegex(),reflink:_n(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",T4).getRegex()},LP={...zP,emStrongRDelimAst:_Ze,emStrongLDelim:AZe,url:_n(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ose=o(e=>FZe[e],"ke");o(ru,"w");o(lse,"J");o(cse,"V");o(_2,"z");o(zZe,"ge");o(use,"fe");o(GZe,"Je");C4=class{static{o(this,"y")}options;rules;lexer;constructor(e){this.options=e||Tm}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let r=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:_2(r,` +`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let r=t[0],n=GZe(r,t[3]||"",this.rules);return{type:"code",raw:r,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let r=t[2].trim();if(this.rules.other.endingHash.test(r)){let n=_2(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:_2(t[0],` +`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let r=_2(t[0],` +`).split(` +`),n="",i="",a=[];for(;r.length>0;){let s=!1,l=[],u;for(u=0;u1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let a=this.rules.other.listItemRegex(r),s=!1;for(;e;){let u=!1,h="",d="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;h=t[0],e=e.substring(h.length);let f=t[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),p=e.split(` +`,1)[0],m=!f.trim(),g=0;if(this.options.pedantic?(g=2,d=f.trimStart()):m?g=t[1].length+1:(g=t[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,d=f.slice(g),g+=t[1].length),m&&this.rules.other.blankLine.test(p)&&(h+=p+` +`,e=e.substring(p.length+1),u=!0),!u){let x=this.rules.other.nextBulletRegex(g),b=this.rules.other.hrRegex(g),T=this.rules.other.fencesBeginRegex(g),k=this.rules.other.headingBeginRegex(g),C=this.rules.other.htmlBeginRegex(g);for(;e;){let w=e.split(` +`,1)[0],S;if(p=w,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),S=p):S=p.replace(this.rules.other.tabCharGlobal," "),T.test(p)||k.test(p)||C.test(p)||x.test(p)||b.test(p))break;if(S.search(this.rules.other.nonSpaceChar)>=g||!p.trim())d+=` +`+S.slice(g);else{if(m||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(f)||k.test(f)||b.test(f))break;d+=` +`+p}!m&&!p.trim()&&(m=!0),h+=w+` +`,e=e.substring(w.length+1),f=S.slice(g)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(s=!0));let y=null,v;this.options.gfm&&(y=this.rules.other.listIsTask.exec(d),y&&(v=y[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:d,tokens:[]}),i.raw+=h}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;uf.type==="space"),d=h.length>0&&h.some(f=>this.rules.other.anyLine.test(f.raw));i.loose=d}if(i.loose)for(let u=0;u({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[u]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let r=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:r,tokens:this.lexer.inline(r)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let a=_2(r.slice(0,-1),"\\");if((r.length-a.length)%2===0)return}else{let a=zZe(t[2],"()");if(a===-2)return;if(a>-1){let s=(t[0].indexOf("!")===0?5:4)+t[1].length+a;t[2]=t[2].substring(0,a),t[0]=t[0].substring(0,s).trim(),t[3]=""}}let n=t[2],i="";if(this.options.pedantic){let a=this.rules.other.pedanticHrefTitle.exec(n);a&&(n=a[1],i=a[3])}else i=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),use(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let r;if((r=this.rules.inline.reflink.exec(e))||(r=this.rules.inline.nolink.exec(e))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[n.toLowerCase()];if(!i){let a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return use(r,i,r[0],this.lexer,this.rules)}}emStrong(e,t,r=""){let n=this.rules.inline.emStrongLDelim.exec(e);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,a,s,l=i,u=0,h=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,t=t.slice(-1*e.length+i);(n=h.exec(t))!=null;){if(a=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!a)continue;if(s=[...a].length,n[3]||n[4]){l+=s;continue}else if((n[5]||n[6])&&i%3&&!((i+s)%3)){u+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+u);let d=[...n[0]][0].length,f=e.slice(0,i+n.index+d+s);if(Math.min(i,s)%2){let m=f.slice(1,-1);return{type:"em",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}let p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let r=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:t[0],text:r}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let r,n;return t[2]==="@"?(r=t[1],n="mailto:"+r):(r=t[1],n=r),{type:"link",raw:t[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let r,n;if(t[2]==="@")r=t[0],n="mailto:"+r;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);r=t[0],t[1]==="www."?n="http://"+t[0]:n=t[0]}return{type:"link",raw:t[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let r=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:r}}}},bh=class DP{static{o(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Tm,this.options.tokenizer=this.options.tokenizer||new C4,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:_s,block:b4.normal,inline:R2.normal};this.options.pedantic?(r.block=b4.pedantic,r.inline=R2.pedantic):this.options.gfm&&(r.block=b4.gfm,this.options.breaks?r.inline=R2.breaks:r.inline=R2.gfm),this.tokenizer.rules=r}static get rules(){return{block:b4,inline:R2}}static lex(t,r){return new DP(r).lex(t)}static lexInline(t,r){return new DP(r).inlineTokens(t)}lex(t){t=t.replace(_s.carriageReturn,` +`),this.blockTokens(t,this.tokens);for(let r=0;r(i=s.call({lexer:this},t,r))?(t=t.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` +`:r.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},r.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),r.push(i);continue}let a=t;if(this.options.extensions?.startBlock){let s=1/0,l=t.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=t.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(t){let s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(t,r=[]){return this.inlineQueue.push({src:t,tokens:r}),r}inlineTokens(t,r=[]){let n=t,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,s="";for(;t;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},t,r))?(t=t.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(t,n,s)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),r.push(l);continue}let u=t;if(this.options.extensions?.startInline){let h=1/0,d=t.slice(1),f;this.options.extensions.startInline.forEach(p=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(h=Math.min(h,f))}),h<1/0&&h>=0&&(u=t.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(t){let h="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},w4=class{static{o(this,"P")}options;parser;constructor(e){this.options=e||Tm}space(e){return""}code({text:e,lang:t,escaped:r}){let n=(t||"").match(_s.notSpaceStart)?.[0],i=e.replace(_s.endingNewline,"")+` +`;return n?'
'+(r?i:ru(i,!0))+`
+`:"
"+(r?i:ru(i,!0))+`
+`}blockquote({tokens:e}){return`
+${this.parser.parse(e)}
+`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} +`}hr(e){return`
+`}list(e){let t=e.ordered,r=e.start,n="";for(let s=0;s +`+n+" +`}listitem(e){let t="";if(e.task){let r=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=r+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=r+" "+ru(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):t+=r+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • +`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    +`}table(e){let t="",r="";for(let i=0;i${n}`),` + +`+t+` +`+n+`
    +`}tablerow({text:e}){return` +${e} +`}tablecell(e){let t=this.parser.parseInline(e.tokens),r=e.header?"th":"td";return(e.align?`<${r} align="${e.align}">`:`<${r}>`)+t+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${ru(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:r}){let n=this.parser.parseInline(r),i=lse(e);if(i===null)return n;e=i;let a='
    ",a}image({href:e,title:t,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=lse(e);if(i===null)return ru(r);e=i;let a=`${r}{let s=i[a].flat(1/0);r=r.concat(this.walkTokens(s,t))}):i.tokens&&(r=r.concat(this.walkTokens(i.tokens,t)))}}return r}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let a=t.renderers[i.name];a?t.renderers[i.name]=function(...s){let l=i.renderer.apply(this,s);return l===!1&&(l=a.apply(this,s)),l}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=t[i.level];a?a.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),n.extensions=t),r.renderer){let i=this.defaults.renderer||new w4(this.defaults);for(let a in r.renderer){if(!(a in i))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let s=a,l=r.renderer[s],u=i[s];i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new C4(this.defaults);for(let a in r.tokenizer){if(!(a in i))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let s=a,l=r.tokenizer[s],u=i[s];i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new L2;for(let a in r.hooks){if(!(a in i))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let s=a,l=r.hooks[s],u=i[s];L2.passThroughHooks.has(a)?i[s]=h=>{if(this.defaults.async&&L2.passThroughHooksRespectAsync.has(a))return Promise.resolve(l.call(i,h)).then(f=>u.call(i,f));let d=l.call(i,h);return u.call(i,d)}:i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,a=r.walkTokens;n.walkTokens=function(s){let l=[];return l.push(a.call(this,s)),i&&(l=l.concat(i.call(this,s))),l}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return bh.lex(e,t??this.defaults)}parser(e,t){return Th.parse(e,t??this.defaults)}parseMarkdown(e){return(t,r)=>{let n={...r},i={...this.defaults,...n},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=e);let s=i.hooks?i.hooks.provideLexer():e?bh.lex:bh.lexInline,l=i.hooks?i.hooks.provideParser():e?Th.parse:Th.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(u=>s(u,i)).then(u=>i.hooks?i.hooks.processAllTokens(u):u).then(u=>i.walkTokens?Promise.all(this.walkTokens(u,i.walkTokens)).then(()=>u):u).then(u=>l(u,i)).then(u=>i.hooks?i.hooks.postprocess(u):u).catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let u=s(t,i);i.hooks&&(u=i.hooks.processAllTokens(u)),i.walkTokens&&this.walkTokens(u,i.walkTokens);let h=l(u,i);return i.hooks&&(h=i.hooks.postprocess(h)),h}catch(u){return a(u)}}}onError(e,t){return r=>{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let n="

    An error occurred:

    "+ru(r.message+"",!0)+"
    ";return t?Promise.resolve(n):n}if(t)return Promise.reject(r);throw r}}},bm=new VZe;o(Sn,"d");Sn.options=Sn.setOptions=function(e){return bm.setOptions(e),Sn.defaults=bm.defaults,hse(Sn.defaults),Sn};Sn.getDefaults=MP;Sn.defaults=Tm;Sn.use=function(...e){return bm.use(...e),Sn.defaults=bm.defaults,hse(Sn.defaults),Sn};Sn.walkTokens=function(e,t){return bm.walkTokens(e,t)};Sn.parseInline=bm.parseInline;Sn.Parser=Th;Sn.parser=Th.parse;Sn.Renderer=w4;Sn.TextRenderer=GP;Sn.Lexer=bh;Sn.lexer=bh.lex;Sn.Tokenizer=C4;Sn.Hooks=L2;Sn.parse=Sn;yir=Sn.options,vir=Sn.setOptions,xir=Sn.use,bir=Sn.walkTokens,Tir=Sn.parseInline,Cir=Th.parse,wir=bh.lex});function WZe(e,{markdownAutoWrap:t}){let n=e.replace(//g,` +`).replace(/\n{2,}/g,` +`);return mS(n)}function wse(e){return e.split(/\\n|\n|/gi).map(t=>t.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(r=>({content:r,type:"normal"}))??[])}function kse(e,t={}){let r=WZe(e,t),n=Sn.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` +`).forEach((d,f)=>{f!==0&&(a++,i.push([])),d.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?i[a].push({content:l.text,type:"normal"}):i[a].push({content:l.raw,type:"normal"})}),i}function Sse(e){return e?`

    ${e.replace(/\\n|\n/g,"
    ")}

    `:""}function Ese(e,{markdownAutoWrap:t}={}){let r=Sn.lexer(e);function n(i){return i.type==="text"?t===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:(Z.warn(`Unsupported markdown: ${i.type}`),i.raw)}return o(n,"output"),r.map(n).join("")}var Ase=F(()=>{"use strict";Cse();h8();vt();o(WZe,"preprocessMarkdown");o(wse,"nonMarkdownToLines");o(kse,"markdownToLines");o(Sse,"nonMarkdownToHTML");o(Ese,"markdownToHTML")});function qZe(e){return Intl.Segmenter?[...new Intl.Segmenter().segment(e)].map(t=>t.segment):[...e]}function HZe(e,t){let r=qZe(t.content);return Rse(e,[],r,t.type)}function Rse(e,t,r,n){if(r.length===0)return[{content:t.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...t,i];return e([{content:s.join(""),type:n}])?Rse(e,s,a,n):(t.length===0&&i&&(t.push(i),r.shift()),[{content:t.join(""),type:n},{content:r.join(""),type:n}])}function _se(e,t){if(e.some(({content:r})=>r.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return VP(e,t)}function VP(e,t,r=[],n=[]){if(e.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";e[0].content===" "&&(i=" ",e.shift());let a=e.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),t(s))return VP(e,t,r,s);if(n.length>0)r.push(n),e.unshift(a);else if(a.content){let[l,u]=HZe(t,a);r.push([l]),u.content&&e.unshift(u)}return VP(e,t,r)}var Lse=F(()=>{"use strict";o(qZe,"splitTextToChars");o(HZe,"splitWordToFitWidth");o(Rse,"splitWordToFitWidthRecursion");o(_se,"splitLineToFitWidth");o(VP,"splitLineToFitWidthRecursion")});function Dse(e,t){t&&e.attr("style",t)}async function UZe(e,t,r,n,i=!1,a=_t()){let s=e.append("foreignObject");s.attr("width",`${Math.min(10*r,Ise)}px`),s.attr("height",`${Math.min(10*r,Ise)}px`);let l=s.append("xhtml:div"),u=ni(t.label)?await ey(t.label.replace(xt.lineBreakRegex,` +`),a):mr(t.label,a),h=t.isNode?"nodeLabel":"edgeLabel",d=l.append("span");d.html(u),Dse(d,t.labelStyle),d.attr("class",`${h} ${n}`),Dse(l,t.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),r!==Number.POSITIVE_INFINITY&&(l.style("max-width",r+"px"),l.style("text-align","center")),l.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&l.attr("class","labelBkg");let f=l.node().getBoundingClientRect();return f.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),f=l.node().getBoundingClientRect()),s.node()}function WP(e,t,r,n=!1){let i=e.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",t*r-.1+"em").attr("dy",r+"em");return n&&i.attr("text-anchor","middle"),i}function YZe(e,t,r){let n=e.append("text"),i=WP(n,1,t);qP(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function Nse(e,t,r){let n=e.append("text"),i=WP(n,1,t);qP(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function jZe(e,t,r,n=!1,i=!1){let s=t.append("g"),l=s.insert("rect").attr("class","background").attr("style","stroke: none"),u=s.append("text").attr("y","-10.1");i&&u.attr("text-anchor","middle");let h=0;for(let d of r){let f=o(m=>YZe(s,1.1,m)<=e,"checkWidth"),p=f(d)?[d]:_se(d,f);for(let m of p){let g=WP(u,h,1.1,i);qP(g,m),h++}}if(n){let d=u.node().getBBox(),f=2;return l.attr("x",d.x-f).attr("y",d.y-f).attr("width",d.width+2*f).attr("height",d.height+2*f),s.node()}else return u.node()}function Mse(e){let t=/&(amp|lt|gt);/g;return e.replace(t,(r,n)=>{switch(n){case"amp":return"&";case"lt":return"<";case"gt":return">";default:return r}})}function qP(e,t){e.text(""),t.forEach((r,n)=>{let i=e.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(Mse(r.content)):i.text(" "+Mse(r.content))})}async function XZe(e,t={}){let r=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(i,a,s)=>(r.push((async()=>{let l=`${a}:${s}`;return await iJ(l)?await ts(l,void 0,{class:"label-icon"}):``})()),i));let n=await Promise.all(r);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>n.shift()??"")}var Ise,Pn,Ls=F(()=>{"use strict";$r();Vr();vt();Ase();Qt();Vl();Lse();ur();o(Dse,"applyStyle");Ise=16384;o(UZe,"addHtmlSpan");o(WP,"createTspan");o(YZe,"computeWidthOfText");o(Nse,"computeDimensionOfText");o(jZe,"createFormattedText");o(Mse,"decodeHTMLEntities");o(qP,"updateTextContentAndStyles");o(XZe,"replaceIconSubstring");Pn=o(async(e,t="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,markdown:s=!0,isNode:l=!0,width:u=200,addSvgBackground:h=!1}={},d)=>{if(Z.debug("XYZ createText",t,r,n,i,a,l,"addSvgBackground: ",h),a){let f=s?Ese(t,d):Sse(t),p=await XZe(Rs(f),d),m=t.replace(/\\\\/g,"\\"),g={isNode:l,label:ni(t)?m:p,labelStyle:r.replace("fill:","color:")};return await UZe(e,g,u,i,h,d)}else{let f=Rs(t.replace(//g,"
    ")),p=s?kse(f.replace("
    ","
    "),d):wse(f),m=jZe(u,e,p,t?h:!1,!l);if(l){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");et(m).attr("style",g)}else{let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");et(m).select("rect").attr("style",g.replace(/background:/g,"fill:"));let y=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");et(m).select("text").attr("style",y)}return n?et(m).selectAll("tspan.text-outer-tspan").classed("title-row",!0):et(m).selectAll("tspan.text-outer-tspan").classed("row",!0),m}},"createText")});async function E4(e,t){let r=e.getElementsByTagName("img");if(!r||r.length===0)return;let n=t.replace(/]*>/g,"").trim()==="";await Promise.all([...r].map(i=>new Promise(a=>{function s(){if(i.style.display="flex",i.style.flexDirection="column",n){let l=Ae().fontSize?Ae().fontSize:window.getComputedStyle(document.body).fontSize,u=5,[h=cr.fontSize]=As(l),d=h*u+"px";i.style.minWidth=d,i.style.maxWidth=d}else i.style.width="100%";a(i)}o(s,"setupImage"),setTimeout(()=>{i.complete&&s()}),i.addEventListener("error",s),i.addEventListener("load",s)})))}var HP=F(()=>{"use strict";Xt();Wi();Qt();o(E4,"configureLabelImages")});function or(e){let t=e.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return t.push("Z"),t.join(" ")}function fl(e,t,r,n,i,a){let s=[],u=r-e,h=n-t,d=u/a,f=2*Math.PI/d,p=t+h/2;for(let m=0;m<=50;m++){let g=m/50,y=e+g*u,v=p+i*Math.sin(f*(y-e));s.push({x:y,y:v})}return s}function Cm(e,t,r,n,i,a){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fu.tagName==="path"),r=document.createElementNS("http://www.w3.org/2000/svg","path"),n=t.map(u=>u.getAttribute("d")).filter(u=>u!==null).join(" ");r.setAttribute("d",n);let i=t.find(u=>u.getAttribute("fill")!=="none"),a=t.find(u=>u.getAttribute("stroke")!=="none"),s=o((u,h)=>u?.getAttribute(h)??void 0,"getAttr");if(i){let u={fill:s(i,"fill"),"fill-opacity":s(i,"fill-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}if(a){let u={stroke:s(a,"stroke"),"stroke-width":s(a,"stroke-width")??"1","stroke-opacity":s(a,"stroke-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}let l=document.createElementNS("http://www.w3.org/2000/svg","g");return l.appendChild(r),l}var It,A4,pt,Dt,Kt=F(()=>{"use strict";Ls();Xt();ur();$r();Vr();Qt();HP();It=o(async(e,t,r)=>{let n,i=t.useHtmlLabels||ya(Ae()?.htmlLabels);r?n=r:n="node default";let a=e.insert("g").attr("class",n).attr("id",t.domId||t.id),s=a.insert("g").attr("class","label").attr("style",kn(t.labelStyle)),l;t.label===void 0?l="":l=typeof t.label=="string"?t.label:t.label[0];let u=!!t.icon||!!t.img,h=t.labelType==="markdown",d=await Pn(s,mr(Rs(l),Ae()),{useHtmlLabels:i,width:t.width||Ae().flowchart?.wrappingWidth,classes:h?"markdown-node-label":"",style:t.labelStyle,addSvgBackground:u,markdown:h},Ae()),f=d.getBBox(),p=(t?.padding??0)/2;if(i){let m=d.children[0],g=et(d);await E4(m,l),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return i?s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):s.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:f,halfPadding:p,label:s}},"labelHelper"),A4=o(async(e,t,r)=>{let n=r.useHtmlLabels??Gr(Ae()),i=e.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Pn(i,mr(Rs(t),Ae()),{useHtmlLabels:n,width:r.width||Ae()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(Gr(Ae())){let u=a.children[0],h=et(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:e,bbox:s,halfPadding:l,label:i}},"insertLabel"),pt=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds"),Dt=o((e,t)=>(e.look==="handDrawn"?"rough-node":"node")+" "+e.cssClasses+" "+(t||""),"getNodeClasses");o(or,"createPathFromPoints");o(fl,"generateFullSineWavePoints");o(Cm,"generateCirclePoints");o(UP,"mergePaths")});function KZe(e,t){return e.intersect(t)}var Pse,Ose=F(()=>{"use strict";o(KZe,"intersectNode");Pse=KZe});function ZZe(e,t,r,n){var i=e.x,a=e.y,s=i-n.x,l=a-n.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);n.x{"use strict";o(ZZe,"intersectEllipse");R4=ZZe});function QZe(e,t,r){return R4(e,t,t,r)}var Bse,$se=F(()=>{"use strict";YP();o(QZe,"intersectCircle");Bse=QZe});function JZe(e,t,r,n){{let i=t.y-e.y,a=e.x-t.x,s=t.x*e.y-e.x*t.y,l=i*r.x+a*r.y+s,u=i*n.x+a*n.y+s,h=1e-6;if(l!==0&&u!==0&&Fse(l,u))return;let d=n.y-r.y,f=r.x-n.x,p=n.x*r.y-r.x*n.y,m=d*e.x+f*e.y+p,g=d*t.x+f*t.y+p;if(Math.abs(m)0}var zse,Gse=F(()=>{"use strict";o(JZe,"intersectLine");o(Fse,"sameSign");zse=JZe});function eQe(e,t,r){let n=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(d){s=Math.min(s,d.x),l=Math.min(l,d.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));let u=n-e.width/2-s,h=i-e.height/2-l;for(let d=0;d1&&a.sort(function(d,f){let p=d.x-r.x,m=d.y-r.y,g=Math.sqrt(p*p+m*m),y=f.x-r.x,v=f.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";Gse();o(eQe,"intersectPolygon");Vse=eQe});var tQe,nu,_4=F(()=>{"use strict";tQe=o((e,t)=>{var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),nu=tQe});var ht,nr=F(()=>{"use strict";Ose();$se();YP();Wse();_4();ht={node:Pse,circle:Bse,ellipse:R4,polygon:Vse,rect:nu}});var qse,iu,rQe,M2,ct,dt,nQe,Jt=F(()=>{"use strict";Xt();qse=o(e=>{let{handDrawnSeed:t}=Ae();return{fill:e,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:e,seed:t}},"solidStateFill"),iu=o(e=>{let t=rQe([...e.cssCompiledStyles||[],...e.cssStyles||[],...e.labelStyle||[]]);return{stylesMap:t,stylesArray:[...t]}},"compileStyles"),rQe=o(e=>{let t=new Map;return e.forEach(r=>{let[n,i]=r.split(":");t.set(n.trim(),i?.trim())}),t},"styles2Map"),M2=o(e=>e==="color"||e==="font-size"||e==="font-family"||e==="font-weight"||e==="font-style"||e==="text-decoration"||e==="text-align"||e==="text-transform"||e==="line-height"||e==="letter-spacing"||e==="word-spacing"||e==="text-shadow"||e==="text-overflow"||e==="white-space"||e==="word-wrap"||e==="word-break"||e==="overflow-wrap"||e==="hyphens","isLabelStyle"),ct=o(e=>{let{stylesArray:t}=iu(e),r=[],n=[],i=[],a=[];return t.forEach(s=>{let l=s[0];M2(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:t,borderStyles:i,backgroundStyles:a}},"styles2String"),dt=o((e,t)=>{let{themeVariables:r,handDrawnSeed:n}=Ae(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=iu(e);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:nQe(s.get("stroke-dasharray"))},t)},"userNodeOverrides"),nQe=o(e=>{if(!e)return[0,0];let t=e.trim().split(/\s+/).map(Number);if(t.length===1){let i=isNaN(t[0])?0:t[0];return[i,i]}let r=isNaN(t[0])?0:t[0],n=isNaN(t[1])?0:t[1];return[r,n]},"getStrokeDashArray")});function jP(e,t,r){if(e&&e.length){let[n,i]=t,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of e){let[h,d]=u;u[0]=(h-n)*s-(d-i)*l+n,u[1]=(h-n)*l+(d-i)*s+i}}}function iQe(e,t){return e[0]===t[0]&&e[1]===t[1]}function aQe(e,t,r,n=1){let i=r,a=Math.max(t,.1),s=e[0]&&e[0][0]&&typeof e[0][0]=="number"?[e]:e,l=[0,0];if(i)for(let h of s)jP(h,l,i);let u=(function(h,d,f){let p=[];for(let b of h){let T=[...b];iQe(T[0],T[T.length-1])||T.push([T[0][0],T[0][1]]),T.length>2&&p.push(T)}let m=[];d=Math.max(d,.1);let g=[];for(let b of p)for(let T=0;Tb.yminT.ymin?1:b.xT.x?1:b.ymax===T.ymax?0:(b.ymax-T.ymax)/Math.abs(b.ymax-T.ymax))),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let T=0;Tv);T++)b=T;g.splice(0,b+1).forEach((T=>{y.push({s:v,edge:T})}))}if(y=y.filter((b=>!(b.edge.ymax<=v))),y.sort(((b,T)=>b.edge.x===T.edge.x?0:(b.edge.x-T.edge.x)/Math.abs(b.edge.x-T.edge.x))),(f!==1||x%d==0)&&y.length>1)for(let b=0;b=y.length)break;let k=y[b].edge,C=y[T].edge;m.push([[Math.round(k.x),v],[Math.round(C.x),v]])}v+=f,y.forEach((b=>{b.edge.x=b.edge.x+f*b.edge.islope})),x++}return m})(s,a,n);if(i){for(let h of s)jP(h,l,-i);(function(h,d,f){let p=[];h.forEach((m=>p.push(...m))),jP(p,d,f)})(u,l,-i)}return u}function B2(e,t){var r;let n=t.hachureAngle+90,i=t.hachureGap;i<0&&(i=4*t.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return t.roughness>=1&&(((r=t.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),aQe(e,i,n,a||1)}function $4(e){let t=e[0],r=e[1];return Math.sqrt(Math.pow(t[0]-r[0],2)+Math.pow(t[1]-r[1],2))}function KP(e,t){return e.type===t}function uO(e){let t=[],r=(function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:sQe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:XP,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:Hse,text:""},l})(e),n="BOD",i=0,a=r[i];for(;!KP(a,Hse);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return uO("M0,0"+e);i++,s=L4[a.text],n=a.text}else KP(a,XP)?s=L4[n]:(i++,s=L4[a.text],n=a.text);if(!(i+sd%2?h+r:h+t));a.push({key:"C",data:u}),t=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),t=l[2],r=l[3];break;case"q":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"Q",data:u}),t=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),t=l[5],r=l[6];break;case"a":t+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],t,r]});break;case"H":a.push({key:"H",data:[...l]}),t=l[0];break;case"h":t+=l[0],a.push({key:"H",data:[t]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),t=l[2],r=l[3];break;case"s":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"S",data:u}),t=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),t=l[0],r=l[1];break;case"t":t+=l[0],r+=l[1],a.push({key:"T",data:[t,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=n,r=i}return a}function eoe(e){let t=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:d}of e){switch(h){case"M":t.push({key:"M",data:[...d]}),[n,i]=d,[a,s]=d;break;case"C":t.push({key:"C",data:[...d]}),n=d[4],i=d[5],l=d[2],u=d[3];break;case"L":t.push({key:"L",data:[...d]}),[n,i]=d;break;case"H":n=d[0],t.push({key:"L",data:[n,i]});break;case"V":i=d[0],t.push({key:"L",data:[n,i]});break;case"S":{let f=0,p=0;r==="C"||r==="S"?(f=n+(n-l),p=i+(i-u)):(f=n,p=i),t.push({key:"C",data:[f,p,...d]}),l=d[0],u=d[1],n=d[2],i=d[3];break}case"T":{let[f,p]=d,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=f+2*(m-f)/3,b=p+2*(g-p)/3;t.push({key:"C",data:[y,v,x,b,f,p]}),l=m,u=g,n=f,i=p;break}case"Q":{let[f,p,m,g]=d,y=n+2*(f-n)/3,v=i+2*(p-i)/3,x=m+2*(f-m)/3,b=g+2*(p-g)/3;t.push({key:"C",data:[y,v,x,b,m,g]}),l=f,u=p,n=m,i=g;break}case"A":{let f=Math.abs(d[0]),p=Math.abs(d[1]),m=d[2],g=d[3],y=d[4],v=d[5],x=d[6];f===0||p===0?(t.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(toe(n,i,v,x,f,p,m,g,y).forEach((function(b){t.push({key:"C",data:b})})),n=v,i=x);break}case"Z":t.push({key:"Z",data:[]}),n=a,i=s}r=h}return t}function N2(e,t,r){return[e*Math.cos(r)-t*Math.sin(r),e*Math.sin(r)+t*Math.cos(r)]}function toe(e,t,r,n,i,a,s,l,u,h){let d=(f=s,Math.PI*f/180);var f;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[e,t]=N2(e,t,-d),[r,n]=N2(r,n,-d);let A=(e-r)/2,M=(t-n)/2,D=A*A/(i*i)+M*M/(a*a);D>1&&(D=Math.sqrt(D),i*=D,a*=D);let P=i*i,B=a*a,O=P*B-P*M*M-B*A*A,$=P*M*M+B*A*A,V=(l===u?-1:1)*Math.sqrt(Math.abs(O/$));y=V*i*M/a+(e+r)/2,v=V*-a*A/i+(t+n)/2,m=Math.asin(parseFloat(((t-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),eg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let A=g,M=r,D=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=toe(r=y+i*Math.cos(g),n=v+a*Math.sin(g),M,D,i,a,s,0,u,[g,A,y,v])}x=g-m;let b=Math.cos(m),T=Math.sin(m),k=Math.cos(g),C=Math.sin(g),w=Math.tan(x/4),S=4/3*i*w,R=4/3*a*w,L=[e,t],N=[e+S*T,t-R*b],I=[r+S*C,n-R*k],_=[r,n];if(N[0]=2*L[0]-N[0],N[1]=2*L[1]-N[1],h)return[N,I,_].concat(p);{p=[N,I,_].concat(p);let A=[];for(let M=0;M2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=Zse(v,h,d,f,p,m,g,1,u);if(!u.disableMultiStroke){let b=Zse(v,h,d,f,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Jd(h,d,h+f*Math.cos(m),d+p*Math.sin(m),u),...Jd(h,d,h+f*Math.cos(g),d+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,d]},{op:"lineTo",data:[h+f*Math.cos(m),d+p*Math.sin(m)]})),{type:"path",ops:x}}function jse(e,t){let r=eoe(Jse(uO(e))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Jd(a[0],a[1],l[0],l[1],t)),a=[l[0],l[1]];break;case"C":{let[u,h,d,f,p,m]=l;n.push(...cQe(u,h,d,f,p,m,a,t)),a=[p,m];break}case"Z":n.push(...Jd(a[0],a[1],i[0],i[1],t)),a=[i[0],i[1]]}return{type:"path",ops:n}}function ZP(e,t){let r=[];for(let n of e)if(n.length){let i=t.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+Cr(i,t),n[0][1]+Cr(i,t)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let d=i.maxRandomnessOffset||0;d*d*100>l&&(d=u/10);let f=d/2,p=.2+.2*ioe(i),m=i.bowing*i.maxRandomnessOffset*(n-t)/200,g=i.bowing*i.maxRandomnessOffset*(e-r)/200;m=Cr(m,i,h),g=Cr(g,i,h);let y=[],v=o(()=>Cr(f,i,h),"M"),x=o(()=>Cr(d,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[e+(b?0:v()),t+(b?0:v())]}):y.push({op:"move",data:[e+(b?0:Cr(d,i,h)),t+(b?0:Cr(d,i,h))]})),s?y.push({op:"bcurveTo",data:[m+e+(r-e)*p+v(),g+t+(n-t)*p+v(),m+e+2*(r-e)*p+v(),g+t+2*(n-t)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+e+(r-e)*p+x(),g+t+(n-t)*p+x(),m+e+2*(r-e)*p+x(),g+t+2*(n-t)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function D4(e,t,r){if(!e.length)return[];let n=[];n.push([e[0][0]+Cr(t,r),e[0][1]+Cr(t,r)]),n.push([e[0][0]+Cr(t,r),e[0][1]+Cr(t,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[e[1][0],e[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(e[t+3])}else{let u=e[t+0],h=e[t+1],d=e[t+2],f=e[t+3],p=wm(u,h,.5),m=wm(h,d,.5),g=wm(d,f,.5),y=wm(p,m,.5),v=wm(m,g,.5),x=wm(y,v,.5);oO([u,p,y,x],0,r,i),oO([x,v,g,f],0,r,i)}var a,s;return i}function hQe(e,t){return B4(e,0,e.length,t)}function B4(e,t,r,n,i){let a=i||[],s=e[t],l=e[r-1],u=0,h=1;for(let d=t+1;du&&(u=f,h=d)}return Math.sqrt(u)>n?(B4(e,t,h+1,n,a),B4(e,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function QP(e,t=.15,r){let n=[],i=(e.length-1)/3;for(let a=0;a0?B4(n,0,n.length,r):n}var O2,JP,eO,tO,rO,nO,no,iO,sQe,XP,Hse,L4,oQe,zo,zy,lO,I4,cO,ut,tr=F(()=>{"use strict";o(jP,"t");o(iQe,"e");o(aQe,"s");o(B2,"n");O2=class{static{o(this,"o")}constructor(t){this.helper=t}fillPolygons(t,r){return this._fillPolygons(t,r)}_fillPolygons(t,r){let n=B2(t,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(t,r){let n=[];for(let i of t)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o($4,"a");JP=class extends O2{static{o(this,"h")}fillPolygons(t,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=B2(t,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,d]of i)$4([h,d])&&s.push([[h[0]-l,h[1]+u],[...d]],[[h[0]+l,h[1]-u],[...d]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},eO=class extends O2{static{o(this,"r")}fillPolygons(t,r){let n=this._fillPolygons(t,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(t,i);return n.ops=n.ops.concat(a.ops),n}},tO=class{static{o(this,"i")}constructor(t){this.helper=t}fillPolygons(t,r){let n=B2(t,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(t,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of t){let u=$4(l),h=u/i,d=Math.ceil(h)-1,f=u-d*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=$4(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,d=s[0],f=s[1];d[0]>f[0]&&(d=s[1],f=s[0]);let p=Math.atan((f[1]-d[1])/(f[0]-d[0]));for(let m=0;m{let s=$4(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let d=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let f=0;f2*Math.PI&&(S=0,R=2*Math.PI);let L=(R-S)/b.curveStepCount,N=[];for(let I=S;I<=R;I+=L)N.push([T+C*Math.cos(I),k+w*Math.sin(I)]);return N.push([T+C*Math.cos(R),k+w*Math.sin(R)]),N.push([T,k]),Fy([N],b)})(t,r,n,i,a,s,h));return h.stroke!==zo&&d.push(f),this._d("arc",d,h)}curve(t,r){let n=this._o(r),i=[],a=Use(t,n);if(n.fill&&n.fill!==zo)if(n.fillStyle==="solid"){let s=Use(t,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=t;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...QP(Qse([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...QP(Qse(h),10,(1+n.roughness)/2))}s.length&&i.push(Fy([s],n))}return n.stroke!==zo&&i.push(a),this._d("curve",i,n)}polygon(t,r){let n=this._o(r),i=[],a=M4(t,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(ZP([t],n)):i.push(Fy([t],n))),n.stroke!==zo&&i.push(a),this._d("polygon",i,n)}path(t,r){let n=this._o(r),i=[];if(!t)return this._d("path",i,n);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==zo,s=n.stroke!==zo,l=!!(n.simplification&&n.simplification<1),u=(function(d,f,p){let m=eoe(Jse(uO(d))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...QP(x,f)),x=[]},"i"),T=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:C,data:w}of m)switch(C){case"M":T(),v=[w[0],w[1]],y.push(v);break;case"L":b(),y.push([w[0],w[1]]);break;case"C":if(!x.length){let S=y.length?y[y.length-1]:v;x.push([S[0],S[1]])}x.push([w[0],w[1]]),x.push([w[2],w[3]]),x.push([w[4],w[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(T(),!p)return g;let k=[];for(let C of g){let w=hQe(C,p);w.length&&k.push(w)}return k})(t,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=jse(t,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let d=jse(t,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(d.ops)})}else i.push(ZP(u,n));else i.push(Fy(u,n));return s&&(l?u.forEach((d=>{i.push(M4(d,!1,n))})):i.push(h)),this._d("path",i,n)}opsToPath(t,r){let n="";for(let i of t.ops){let a=typeof r=="number"&&r>=0?i.data.map((s=>+s.toFixed(r))):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(t){let r=t.sets||[],n=t.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:zo};break;case"fillPath":s={d:this.opsToPath(a),stroke:zo,strokeWidth:0,fill:n.fill||zo};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(t,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(t),stroke:r.fill||zo,strokeWidth:n,fill:zo}}_mergedShape(t){return t.filter(((r,n)=>n===0||r.op!=="move"))}},lO=class{static{o(this,"st")}constructor(t,r){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new zy(r)}draw(t){let r=t.sets||[],n=t.options||this.getDefaultOptions(),i=this.ctx,a=t.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(t,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),t.save(),n.fillLineDash&&t.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(t.lineDashOffset=n.fillLineDashOffset),t.strokeStyle=n.fill||"",t.lineWidth=i,this._drawToContext(t,r,n.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,r,n,i="nonzero"){t.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map((l=>+l.toFixed(n))):a.data;switch(a.op){case"move":t.moveTo(s[0],s[1]);break;case"bcurveTo":t.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":t.lineTo(s[0],s[1])}}r.type==="fillPath"?t.fill(i):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,r,n,i,a){let s=this.gen.line(t,r,n,i,a);return this.draw(s),s}rectangle(t,r,n,i,a){let s=this.gen.rectangle(t,r,n,i,a);return this.draw(s),s}ellipse(t,r,n,i,a){let s=this.gen.ellipse(t,r,n,i,a);return this.draw(s),s}circle(t,r,n,i){let a=this.gen.circle(t,r,n,i);return this.draw(a),a}linearPath(t,r){let n=this.gen.linearPath(t,r);return this.draw(n),n}polygon(t,r){let n=this.gen.polygon(t,r);return this.draw(n),n}arc(t,r,n,i,a,s,l=!1,u){let h=this.gen.arc(t,r,n,i,a,s,l,u);return this.draw(h),h}curve(t,r){let n=this.gen.curve(t,r);return this.draw(n),n}path(t,r){let n=this.gen.path(t,r);return this.draw(n),n}},I4="http://www.w3.org/2000/svg",cO=class{static{o(this,"ot")}constructor(t,r){this.svg=t,this.gen=new zy(r)}draw(t){let r=t.sets||[],n=t.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(I4,"g"),s=t.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(I4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(I4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(t,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=t.createElementNS(I4,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,r){return this.gen.opsToPath(t,r)}line(t,r,n,i,a){let s=this.gen.line(t,r,n,i,a);return this.draw(s)}rectangle(t,r,n,i,a){let s=this.gen.rectangle(t,r,n,i,a);return this.draw(s)}ellipse(t,r,n,i,a){let s=this.gen.ellipse(t,r,n,i,a);return this.draw(s)}circle(t,r,n,i){let a=this.gen.circle(t,r,n,i);return this.draw(a)}linearPath(t,r){let n=this.gen.linearPath(t,r);return this.draw(n)}polygon(t,r){let n=this.gen.polygon(t,r);return this.draw(n)}arc(t,r,n,i,a,s,l=!1,u){let h=this.gen.arc(t,r,n,i,a,s,l,u);return this.draw(h)}curve(t,r){let n=this.gen.curve(t,r);return this.draw(n)}path(t,r){let n=this.gen.path(t,r);return this.draw(n)}},ut={canvas:o((e,t)=>new lO(e,t),"canvas"),svg:o((e,t)=>new cO(e,t),"svg"),generator:o(e=>new zy(e),"generator"),newSeed:o(()=>zy.newSeed(),"newSeed")}});function aoe(e,t){let{labelStyles:r}=ct(t);t.labelStyle=r;let n=Dt(t),i=n;n||(i="anchor");let a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),s=1,{cssStyles:l}=t,u=ut.svg(a),h=dt(t,{fill:"black",stroke:"none",fillStyle:"solid"});t.look!=="handDrawn"&&(h.roughness=0);let d=u.circle(0,0,s*2,h),f=a.insert(()=>d,":first-child");return f.attr("class","anchor").attr("style",kn(l)),pt(t,f),t.intersect=function(p){return Z.info("Circle intersect",t,s,p),ht.circle(t,s,p)},a}var soe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(aoe,"anchor")});function ooe(e,t,r,n,i,a,s){let u=(e+r)/2,h=(t+n)/2,d=Math.atan2(n-t,r-e),f=(r-e)/2,p=(n-t)/2,m=f/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(d)*(s?-1:1),b=h-v*i*Math.cos(d)*(s?-1:1),T=Math.atan2((t-b)/a,(e-x)/i),C=Math.atan2((n-b)/a,(r-x)/i)-T;s&&C<0&&(C+=2*Math.PI),!s&&C>0&&(C-=2*Math.PI);let w=[];for(let S=0;S<20;S++){let R=S/19,L=T+R*C,N=x+i*Math.cos(L),I=b+a*Math.sin(L);w.push({x:N,y:I})}return w}function dQe(e,t,r){let[n,i]=[t,r].sort((a,s)=>s-a);return i*(1-Math.sqrt(1-(e/n/2)**2))}async function loe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=o(L=>L+s,"calcTotalHeight"),u=o(L=>{let N=L/2;return[N/(2.5+L/50),N]},"calcEllipseRadius"),{shapeSvg:h,bbox:d}=await It(e,t,Dt(t)),f=l(t?.height?t?.height:d.height),[p,m]=u(f),g=dQe(f,p,m),v=(t?.width?t?.width:d.width)+a*2+g-g,x=f,{cssStyles:b}=t,T=[{x:v/2,y:-x/2},{x:-v/2,y:-x/2},...ooe(-v/2,-x/2,-v/2,x/2,p,m,!1),{x:v/2,y:x/2},...ooe(v/2,x/2,v/2,-x/2,p,m,!0)],k=ut.svg(h),C=dt(t,{});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let w=or(T),S=k.path(w,C),R=h.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",b),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(${p/2}, 0)`),pt(t,R),t.intersect=function(L){return ht.polygon(t,T,L)},h}var coe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ooe,"generateArcPoints");o(dQe,"calculateArcSagitta");o(loe,"bowTieRect")});function as(e,t,r,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Ch=F(()=>{"use strict";o(as,"insertPolygonShape")});async function uoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?28:i,s=t.look==="neo"?24:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width??u.width)+(t.look==="neo"?a*2:a+F4),d=(t?.height??u.height)+(t.look==="neo"?s*2:s),f=0,p=h,m=-d,g=0,y=[{x:f+F4,y:m},{x:p,y:m},{x:p,y:g},{x:f,y:g},{x:f,y:m+F4},{x:f+F4,y:m}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(l),T=dt(t,{}),k=or(y),C=b.path(k,T);v=l.insert(()=>C,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),x&&v.attr("style",x)}else v=as(l,h,d,y);return n&&v.attr("style",n),pt(t,v),t.intersect=function(b){return ht.polygon(t,y,b)},l}var F4,hoe=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();Kt();F4=12;o(uoe,"card")});function doe(e,t){let{nodeStyles:r}=ct(t);t.label="";let n=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:i}=t,a=Math.max(28,t.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=ut.svg(n),u=dt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=or(s),d=l.path(h,u),f=n.insert(()=>d,":first-child");return i&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",i),r&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",r),t.width=28,t.height=28,t.intersect=function(p){return ht.polygon(t,s,p)},n}var foe=F(()=>{"use strict";nr();tr();Jt();Kt();o(doe,"choice")});async function z4(e,t,r){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{shapeSvg:a,bbox:s,halfPadding:l}=await It(e,t,Dt(t)),u=16,h=r?.padding??l,d=t.look==="neo"?s.width/2+u*2:s.width/2+h,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(a),g=dt(t,{}),y=m.circle(0,0,d*2,g);f=a.insert(()=>y,":first-child"),f.attr("class","basic label-container").attr("style",kn(p))}else f=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",d).attr("cx",0).attr("cy",0);return pt(t,f),t.calcIntersect=function(m,g){let y=m.width/2;return ht.circle(m,y,g)},t.intersect=function(m){return Z.info("Circle intersect",t,d,m),ht.circle(t,d,m)},a}var hO=F(()=>{"use strict";tr();vt();Qt();nr();Jt();Kt();o(z4,"circle")});function fQe(e){let t=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=e*2,i={x:n/2*t,y:n/2*r},a={x:-(n/2)*t,y:n/2*r},s={x:-(n/2)*t,y:-(n/2)*r},l={x:n/2*t,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} + M ${i.x},${i.y} L ${s.x},${s.y}`}function poe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r,t.label="";let i=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),a=Math.max(30,t?.width??0),{cssStyles:s}=t,l=ut.svg(i),u=dt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),d=fQe(a),f=l.path(d,u),p=i.insert(()=>h,":first-child");return p.insert(()=>f),p.attr("class","outer-path"),s&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",n),pt(t,p),t.intersect=function(m){return Z.info("crossedCircle intersect",t,{radius:a,point:m}),ht.circle(t,a,m)},i}var moe=F(()=>{"use strict";vt();Kt();Jt();tr();nr();o(fQe,"createLine");o(poe,"crossedCircle")});function ef(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fC,":first-child").attr("stroke-opacity",0),w.insert(()=>T,":first-child"),w.attr("class","text"),p&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",n),w.attr("transform",`translate(${f}, 0)`),s.attr("transform",`translate(${-h/2+f-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,g,S)},i}var yoe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ef,"generateCirclePoints");o(goe,"curlyBraceLeft")});function tf(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fC,":first-child").attr("stroke-opacity",0),w.insert(()=>T,":first-child"),w.attr("class","text"),p&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",n),w.attr("transform",`translate(${-f}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,g,S)},i}var xoe=F(()=>{"use strict";Kt();nr();Jt();tr();o(tf,"generateCirclePoints");o(voe,"curlyBraceRight")});function ss(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fL,":first-child").attr("stroke-opacity",0),N.insert(()=>k,":first-child"),N.insert(()=>S,":first-child"),N.attr("class","text"),p&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),N.attr("transform",`translate(${f-f/4}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,N),t.intersect=function(I){return ht.polygon(t,y,I)},i}var Toe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ss,"generateCirclePoints");o(boe,"curlyBraces")});async function Coe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=20,u=5,{shapeSvg:h,bbox:d}=await It(e,t,Dt(t)),f=Math.max(l,(d.width+a*2)*1.25,t?.width??0),p=Math.max(u,d.height+s*2,t?.height??0),m=p/2,{cssStyles:g}=t,y=ut.svg(h),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=f,b=p,T=x-m,k=b/4,C=[{x:T,y:0},{x:k,y:0},{x:0,y:b/2},{x:k,y:b},{x:T,y:b},...Cm(-T,-b/2,m,50,270,90)],w=or(C),S=y.path(w,v),R=h.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",g),n&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",n),R.attr("transform",`translate(${-f/2}, ${-p/2})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,C,L)},h}var woe=F(()=>{"use strict";Kt();nr();Jt();tr();o(Coe,"curvedTrapezoid")});async function Eoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?24:i,s=t.look==="neo"?24:i;if(t.width||t.height){let v=t.width??0;t.width=(t.width??0)-s,t.widthC,":first-child"),g=l.insert(()=>k,":first-child"),g.attr("class","basic label-container"),y&&g.attr("style",y)}else{let v=pQe(0,0,d,m,f,p);g=l.insert("path",":first-child").attr("d",v).attr("class","basic label-container outer-path").attr("style",kn(y)).attr("style",n)}return g.attr("label-offset-y",p),g.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),pt(t,g),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+(t.padding??0)/1.5-(u.y-(u.top??0))})`),t.intersect=function(v){let x=ht.rect(t,v),b=x.x-(t.x??0);if(f!=0&&(Math.abs(b)<(t.width??0)/2||Math.abs(b)==(t.width??0)/2&&Math.abs(x.y-(t.y??0))>(t.height??0)/2-p)){let T=p*p*(1-b*b/(f*f));T>0&&(T=Math.sqrt(T)),T=p-T,v.y-(t.y??0)>0&&(T=-T),x.y+=T}return x},l}var pQe,mQe,gQe,koe,Soe,Aoe=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();pQe=o((e,t,r,n,i,a)=>[`M${e},${t+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),mQe=o((e,t,r,n,i,a)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),gQe=o((e,t,r,n,i,a)=>[`M${e-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),koe=8,Soe=8;o(Eoe,"cylinder")});var io,km=F(()=>{"use strict";io=o((e,t,r,n,i)=>["M",e+i,t,"H",e+r-i,"A",i,i,0,0,1,e+r,t+i,"V",t+n-i,"A",i,i,0,0,1,e+r-i,t+n,"H",e+i,"A",i,i,0,0,1,e,t+n-i,"V",t+i,"A",i,i,0,0,1,e+i,t,"Z"].join(" "),"createRoundedRectPathD")});async function ac(e,t,r){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{shapeSvg:a,bbox:s}=await It(e,t,Dt(t)),l=Math.max(s.width+r.labelPaddingX*2,t?.width||0),u=Math.max(s.height+r.labelPaddingY*2,t?.height||0),h=-l/2,d=-u/2,f,{rx:p,ry:m}=t,{cssStyles:g}=t;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),t.look==="handDrawn"){let y=ut.svg(a),v=dt(t,{}),x=p||m?y.path(io(h,d,l,u,p||0),v):y.rectangle(h,d,l,u,v);f=a.insert(()=>x,":first-child"),f.attr("class","basic label-container").attr("style",kn(g))}else f=a.insert("rect",":first-child"),f.attr("class","basic label-container").attr("style",i).attr("rx",kn(p)).attr("ry",kn(m)).attr("x",h).attr("y",d).attr("width",l).attr("height",u);return pt(t,f),t.calcIntersect=function(y,v){return ht.rect(y,v)},t.intersect=function(y){return ht.rect(t,y)},a}var Sm=F(()=>{"use strict";Kt();nr();km();Jt();tr();Qt();o(ac,"drawRect")});async function Roe(e,t){let{cssClasses:r,labelPaddingX:n,labelPaddingY:i,padding:a,width:s,height:l}=t,u={rx:0,ry:0,classes:r??"",labelPaddingX:n??(a??0)*2,labelPaddingY:i??a??0},h=await ac(e,t,u);if(t.look==="handDrawn"){let m=ut.svg(h),g=dt(t,{}),y=h.select(".basic.label-container > path:nth-child(2)"),v=y.node();if(!v)return h;let x=null;if(v instanceof SVGGraphicsElement)x=v.getBBox();else return h;return h.insert(()=>m.line(x.x,x.y,x.x+x.width,x.y,g),".basic.label-container g.label"),h.insert(()=>m.line(x.x,x.y+x.height,x.x+x.width,x.y+x.height,g),".basic.label-container g.label"),y.remove(),h}let d=h.select(".basic.label-container"),f=(Number(d.attr("width"))||s)??0,p=(Number(d.attr("height"))||l)??0;return f>0&&p>0&&d.attr("stroke-dasharray",`${f} ${p}`),h}var _oe=F(()=>{"use strict";Sm();Jt();tr();o(Roe,"datastore")});async function Loe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?16:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=l.width+i,d=l.height+a,f=d*.2,p=-h/2,m=-d/2-f/2,{cssStyles:g}=t,y=ut.svg(s),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:p,y:m+f},{x:-p,y:m+f},{x:-p,y:-m},{x:p,y:-m},{x:p,y:m},{x:-p,y:m},{x:-p,y:m+f}],b=y.polygon(x.map(k=>[k.x,k.y]),v),T=s.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),u.attr("transform",`translate(${p+(t.padding??0)/2-(l.x-(l.left??0))}, ${m+f+(t.padding??0)/2-(l.y-(l.top??0))})`),pt(t,T),t.intersect=function(k){return ht.rect(t,k)},s}var Doe=F(()=>{"use strict";Kt();nr();Jt();tr();o(Loe,"dividedRectangle")});async function Ioe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t),i=t.look==="neo"?12:5;t.labelStyle=r;let a=t.padding??0,s=t.look==="neo"?16:a,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width/2:u.width/2)+(s??0),d=h-i,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(l),g=dt(t,{roughness:.2,strokeWidth:2.5}),y=dt(t,{roughness:.2,strokeWidth:1.5}),v=m.circle(0,0,h*2,g),x=m.circle(0,0,d*2,y);f=l.insert("g",":first-child"),f.attr("class",kn(t.cssClasses)).attr("style",kn(p)),f.node()?.appendChild(v),f.node()?.appendChild(x)}else{f=l.insert("g",":first-child");let m=f.insert("circle",":first-child"),g=f.insert("circle");f.attr("class","basic label-container").attr("style",n),m.attr("class","outer-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0),g.attr("class","inner-circle").attr("style",n).attr("r",d).attr("cx",0).attr("cy",0)}return pt(t,f),t.intersect=function(m){return Z.info("DoubleCircle intersect",t,h,m),ht.circle(t,h,m)},l}var Moe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(Ioe,"doublecircle")});function Noe(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.label="",t.labelStyle=n;let a=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),s=7,{cssStyles:l}=t,u=ut.svg(a),{nodeBorder:h}=r,d=dt(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(d.roughness=0);let f=u.circle(0,0,s*2,d),p=a.insert(()=>f,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",i),pt(t,p),t.intersect=function(m){return Z.info("filledCircle intersect",t,{radius:s,point:m}),ht.circle(t,s,m)},a}var Poe=F(()=>{"use strict";tr();vt();nr();Jt();Kt();o(Noe,"filledCircle")});async function $oe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?i*2:i;(t.width||t.height)&&(t.height=t?.height??0,t.heightx,":first-child").attr("transform",`translate(${-d/2}, ${d/2})`).attr("class","outer-path");return m&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),t.width=h,t.height=d,pt(t,b),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-d/2+(t.padding??0)/2+(l.y-(l.top??0))})`),t.intersect=function(T){return Z.info("Triangle intersect",t,p,T),ht.polygon(t,p,T)},s}var Ooe,Boe,Foe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Kt();Ooe=10,Boe=10;o($oe,"flippedTriangle")});function zoe(e,t,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=ct(t);t.label="";let s=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:l}=t,u=Math.max(70,t?.width??0),h=Math.max(10,t?.height??0);r==="LR"&&(u=Math.max(10,t?.width??0),h=Math.max(70,t?.height??0));let d=-1*u/2,f=-1*h/2,p=ut.svg(s),m=dt(t,{stroke:i.lineColor,fill:i.lineColor});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(d,f,u,h,m),y=s.insert(()=>g,":first-child");l&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",a),pt(t,y);let v=n?.padding??0;return t.width&&t.height&&(t.width+=v/2||0,t.height+=v/2||0),t.intersect=function(x){return ht.rect(t,x)},s}var Goe=F(()=>{"use strict";tr();nr();Jt();Kt();o(zoe,"forkJoin")});async function Voe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=15,a=10,s=t.look==="neo"?16:t.padding??0,l=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.height=(t?.height??0)-l*2,t.heightb,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),pt(t,T),t.intersect=function(k){return Z.info("Pill intersect",t,{radius:p,point:k}),ht.polygon(t,v,k)},u}var Woe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();o(Voe,"halfRoundedRectangle")});async function qoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t),i=t.look==="neo"?3.5:4;t.labelStyle=r;let a=t.padding??0,s=70,l=32,u=t.look==="neo"?s:a,h=t.look==="neo"?l:a;if(t.width||t.height){let T=(t.height??0)/i;t.width=(t?.width??0)-2*T-h,t.height=(t.height??0)-u}let{shapeSvg:d,bbox:f}=await It(e,t,Dt(t)),p=(t?.height?t?.height:f.height)+u,m=p/i,g=(t?.width?t?.width:f.width)+2*m+h,y=[{x:m,y:0},{x:g-m,y:0},{x:g,y:-p/2},{x:g-m,y:-p},{x:m,y:-p},{x:0,y:-p/2}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(d),T=dt(t,{}),k=yQe(0,0,g,p,m),C=b.path(k,T);v=d.insert(()=>C,":first-child").attr("transform",`translate(${-g/2}, ${p/2})`),x&&v.attr("style",x)}else v=as(d,g,p,y);return n&&v.attr("style",n),t.width=g,t.height=p,pt(t,v),t.intersect=function(b){return ht.polygon(t,y,b)},d}var yQe,Hoe=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();yQe=o((e,t,r,n,i)=>[`M${e+i},${t}`,`L${e+r-i},${t}`,`L${e+r},${t-n/2}`,`L${e+r-i},${t-n}`,`L${e+i},${t-n}`,`L${e},${t-n/2}`,"Z"].join(" "),"createHexagonPathD");o(qoe,"hexagon")});async function Uoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.label="",t.labelStyle=r;let{shapeSvg:i}=await It(e,t,Dt(t)),a=Math.max(30,t?.width??0),s=Math.max(30,t?.height??0),{cssStyles:l}=t,u=ut.svg(i),h=dt(t,{});t.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let d=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],f=or(d),p=u.path(f,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container outer-path"),l&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),pt(t,m),t.intersect=function(g){return Z.info("Pill intersect",t,{points:d}),ht.polygon(t,d,g)},i}var Yoe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();o(Uoe,"hourglass")});async function joe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await It(e,t,"icon-shape default"),p=t.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=iu(t),x=-g/2,b=-m/2,T=t.label?8:0,k=ut.svg(h),C=dt(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let w=k.rectangle(x,b,g,m,C),S=Math.max(g,d.width),R=m+d.height+T,L=k.rectangle(-S/2,-R/2,S,R,{...C,fill:"transparent",stroke:"none"}),N=h.insert(()=>w,":first-child"),I=h.insert(()=>L);if(t.icon){let _=h.append("g");_.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let A=_.node().getBBox(),M=A.width,D=A.height,P=A.x,B=A.y;_.attr("transform",`translate(${-M/2-P},${p?d.height/2+T/2-D/2-B:-d.height/2-T/2-D/2-B})`),_.attr("style",`color: ${v.get("stroke")??y};`)}return f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${p?-R/2:R/2-d.height})`),N.attr("transform",`translate(0,${p?d.height/2+T/2:-d.height/2-T/2})`),pt(t,I),t.intersect=function(_){if(Z.info("iconSquare intersect",t,_),!t.label)return ht.rect(t,_);let A=t.x??0,M=t.y??0,D=t.height??0,P=[];return p?P=[{x:A-d.width/2,y:M-D/2},{x:A+d.width/2,y:M-D/2},{x:A+d.width/2,y:M-D/2+d.height+T},{x:A+g/2,y:M-D/2+d.height+T},{x:A+g/2,y:M+D/2},{x:A-g/2,y:M+D/2},{x:A-g/2,y:M-D/2+d.height+T},{x:A-d.width/2,y:M-D/2+d.height+T}]:P=[{x:A-g/2,y:M-D/2},{x:A+g/2,y:M-D/2},{x:A+g/2,y:M-D/2+m},{x:A+d.width/2,y:M-D/2+m},{x:A+d.width/2/2,y:M+D/2},{x:A-d.width/2,y:M+D/2},{x:A-d.width/2,y:M-D/2+m},{x:A-g/2,y:M-D/2+m}],ht.polygon(t,P,_)},h}var Xoe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();Kt();o(joe,"icon")});async function Koe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await It(e,t,"icon-shape default"),p=20,m=t.label?8:0,g=t.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=iu(t),b=ut.svg(h),T=dt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=x.get("fill");T.stroke=k??v;let C=h.append("g");t.icon&&C.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let w=C.node().getBBox(),S=w.width,R=w.height,L=w.x,N=w.y,I=Math.max(S,R)*Math.SQRT2+p*2,_=b.circle(0,0,I,T),A=Math.max(I,d.width),M=I+d.height+m,D=b.rectangle(-A/2,-M/2,A,M,{...T,fill:"transparent",stroke:"none"}),P=h.insert(()=>_,":first-child"),B=h.insert(()=>D);return C.attr("transform",`translate(${-S/2-L},${g?d.height/2+m/2-R/2-N:-d.height/2-m/2-R/2-N})`),C.attr("style",`color: ${x.get("stroke")??y};`),f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${g?-M/2:M/2-d.height})`),P.attr("transform",`translate(0,${g?d.height/2+m/2:-d.height/2-m/2})`),pt(t,B),t.intersect=function(O){return Z.info("iconSquare intersect",t,O),ht.rect(t,O)},h}var Zoe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();Kt();o(Koe,"iconCircle")});async function Qoe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await It(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=iu(t),T=-y/2,k=-g/2,C=t.label?8:0,w=ut.svg(h),S=dt(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let R=b.get("fill");S.stroke=R??x;let L=w.path(io(T,k,y,g,5),S),N=Math.max(y,d.width),I=g+d.height+C,_=w.rectangle(-N/2,-I/2,N,I,{...S,fill:"transparent",stroke:"none"}),A=h.insert(()=>L,":first-child").attr("class","icon-shape2"),M=h.insert(()=>_);if(t.icon){let D=h.append("g");D.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let P=D.node().getBBox(),B=P.width,O=P.height,$=P.x,V=P.y;D.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-V:-d.height/2-C/2-O/2-V})`),D.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),A.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),pt(t,M),t.intersect=function(D){if(Z.info("iconSquare intersect",t,D),!t.label)return ht.rect(t,D);let P=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:P-d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2+d.height+C},{x:P+y/2,y:B-O/2+d.height+C},{x:P+y/2,y:B+O/2},{x:P-y/2,y:B+O/2},{x:P-y/2,y:B-O/2+d.height+C},{x:P-d.width/2,y:B-O/2+d.height+C}]:$=[{x:P-y/2,y:B-O/2},{x:P+y/2,y:B-O/2},{x:P+y/2,y:B-O/2+g},{x:P+d.width/2,y:B-O/2+g},{x:P+d.width/2/2,y:B+O/2},{x:P-d.width/2,y:B+O/2},{x:P-d.width/2,y:B-O/2+g},{x:P-y/2,y:B-O/2+g}],ht.polygon(t,$,D)},h}var Joe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();km();Kt();o(Qoe,"iconRounded")});async function ele(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await It(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=iu(t),T=-y/2,k=-g/2,C=t.label?8:0,w=ut.svg(h),S=dt(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let R=b.get("fill");S.stroke=R??x;let L=w.path(io(T,k,y,g,.1),S),N=Math.max(y,d.width),I=g+d.height+C,_=w.rectangle(-N/2,-I/2,N,I,{...S,fill:"transparent",stroke:"none"}),A=h.insert(()=>L,":first-child"),M=h.insert(()=>_);if(t.icon){let D=h.append("g");D.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let P=D.node().getBBox(),B=P.width,O=P.height,$=P.x,V=P.y;D.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-V:-d.height/2-C/2-O/2-V})`),D.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),A.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),pt(t,M),t.intersect=function(D){if(Z.info("iconSquare intersect",t,D),!t.label)return ht.rect(t,D);let P=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:P-d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2+d.height+C},{x:P+y/2,y:B-O/2+d.height+C},{x:P+y/2,y:B+O/2},{x:P-y/2,y:B+O/2},{x:P-y/2,y:B-O/2+d.height+C},{x:P-d.width/2,y:B-O/2+d.height+C}]:$=[{x:P-y/2,y:B-O/2},{x:P+y/2,y:B-O/2},{x:P+y/2,y:B-O/2+g},{x:P+d.width/2,y:B-O/2+g},{x:P+d.width/2/2,y:B+O/2},{x:P-d.width/2,y:B+O/2},{x:P-d.width/2,y:B-O/2+g},{x:P-y/2,y:B-O/2+g}],ht.polygon(t,$,D)},h}var tle=F(()=>{"use strict";tr();vt();Vl();nr();km();Jt();Kt();o(ele,"iconSquare")});async function rle(e,t,{config:{flowchart:r}}){let n=new Image;n.src=t?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));t.imageAspectRatio=i/a;let{labelStyles:s}=ct(t);t.labelStyle=s;let l=r?.wrappingWidth;t.defaultWidth=r?.wrappingWidth;let u=Math.max(t.label?l??0:0,t?.assetWidth??i),h=t.constraint==="on"&&t?.assetHeight?t.assetHeight*t.imageAspectRatio:u,d=t.constraint==="on"?h/t.imageAspectRatio:t?.assetHeight??a;t.width=Math.max(h,l??0);let{shapeSvg:f,bbox:p,label:m}=await It(e,t,"image-shape default"),g=t.pos==="t",y=-h/2,v=-d/2,x=t.label?8:0,b=ut.svg(f),T=dt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=b.rectangle(y,v,h,d,T),C=Math.max(h,p.width),w=d+p.height+x,S=b.rectangle(-C/2,-w/2,C,w,{...T,fill:"none",stroke:"none"}),R=f.insert(()=>k,":first-child"),L=f.insert(()=>S);if(t.img){let N=f.append("image");N.attr("href",t.img),N.attr("width",h),N.attr("height",d),N.attr("preserveAspectRatio","none"),N.attr("transform",`translate(${-h/2},${g?w/2-d:-w/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-d/2-p.height/2-x/2:d/2-p.height/2+x/2})`),R.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),pt(t,L),t.intersect=function(N){if(Z.info("iconSquare intersect",t,N),!t.label)return ht.rect(t,N);let I=t.x??0,_=t.y??0,A=t.height??0,M=[];return g?M=[{x:I-p.width/2,y:_-A/2},{x:I+p.width/2,y:_-A/2},{x:I+p.width/2,y:_-A/2+p.height+x},{x:I+h/2,y:_-A/2+p.height+x},{x:I+h/2,y:_+A/2},{x:I-h/2,y:_+A/2},{x:I-h/2,y:_-A/2+p.height+x},{x:I-p.width/2,y:_-A/2+p.height+x}]:M=[{x:I-h/2,y:_-A/2},{x:I+h/2,y:_-A/2},{x:I+h/2,y:_-A/2+d},{x:I+p.width/2,y:_-A/2+d},{x:I+p.width/2/2,y:_+A/2},{x:I-p.width/2,y:_+A/2},{x:I-p.width/2,y:_-A/2+d},{x:I-h/2,y:_-A/2+d}],ht.polygon(t,M,N)},f}var nle=F(()=>{"use strict";tr();vt();nr();Jt();Kt();o(rle,"imageSquare")});async function ile(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=Math.max(u.width+(s??0)*2,t?.width??0),d=Math.max(u.height+(a??0)*2,t?.height??0),f=[{x:0,y:0},{x:h,y:0},{x:h+3*d/6,y:-d},{x:-3*d/6,y:-d}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),m&&p.attr("style",m)}else p=as(l,h,d,f);return n&&p.attr("style",n),t.width=h,t.height=d,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var ale=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(ile,"inv_trapezoid")});async function sle(e,t){let{shapeSvg:r,bbox:n,label:i}=await It(e,t,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),pt(t,a),t.intersect=function(u){return ht.rect(t,u)},r}var ole=F(()=>{"use strict";Sm();Kt();nr();o(sle,"labelRect")});async function lle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:0,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:-(3*h)/6,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var cle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(lle,"lean_left")});async function ule(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d,y:0},{x:d+3*h/6,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var hle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(ule,"lean_right")});function dle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.label="",t.labelStyle=r;let i=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:a}=t,s=Math.max(35,t?.width??0),l=Math.max(35,t?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],d=ut.svg(i),f=dt(t,{});t.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let p=or(h),m=d.path(p,f),g=i.insert(()=>m,":first-child");return g.attr("class","outer-path"),a&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),pt(t,g),t.intersect=function(y){return Z.info("lightningBolt intersect",t,y),ht.polygon(t,h,y)},i}var fle=F(()=>{"use strict";vt();Kt();Jt();tr();nr();Kt();o(dle,"lightningBolt")});async function gle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?24:i;if(t.width||t.height){let x=t.width??0;t.width=(t.width??0)-a,t.widthw,":first-child").attr("class","line"),y=l.insert(()=>C,":first-child"),y.attr("class","basic label-container"),v&&y.attr("style",v)}else{let x=vQe(0,0,d,m,f,p,g);y=l.insert("path",":first-child").attr("d",x).attr("class","basic label-container outer-path").attr("style",kn(v)).attr("style",n)}return y.attr("label-offset-y",p),y.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),pt(t,y),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+p-(u.y-(u.top??0))})`),t.intersect=function(x){let b=ht.rect(t,x),T=b.x-(t.x??0);if(f!=0&&(Math.abs(T)<(t.width??0)/2||Math.abs(T)==(t.width??0)/2&&Math.abs(b.y-(t.y??0))>(t.height??0)/2-p)){let k=p*p*(1-T*T/(f*f));k>0&&(k=Math.sqrt(k)),k=p-k,x.y-(t.y??0)>0&&(k=-k),b.y+=k}return b},l}var vQe,xQe,bQe,ple,mle,yle=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();vQe=o((e,t,r,n,i,a,s)=>[`M${e},${t+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${e},${t+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),xQe=o((e,t,r,n,i,a,s)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${e},${t+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),bQe=o((e,t,r,n,i,a)=>[`M${e-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),ple=10,mle=10;o(gle,"linedCylinder")});async function vle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;if(t.width||t.height){let k=t.width;t.width=(k??0)*10/11-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10)}let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:u.width)+(a??0)*2,f=(t?.height?t?.height:u.height)+(s??0)*2,p=t.look==="neo"?f/4:f/8,m=f+p,{cssStyles:g}=t,y=ut.svg(l),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-d/2-d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:m/2},...fl(-d/2-d/2*.1,m/2,d/2+d/2*.1,m/2,p,.8),{x:d/2+d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:-m/2},{x:-d/2,y:-m/2},{x:-d/2,y:m/2*1.1},{x:-d/2,y:-m/2}],b=y.polygon(x.map(k=>[k.x,k.y]),v),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),T.attr("transform",`translate(0,${-p/2})`),h.attr("transform",`translate(${-d/2+(t.padding??0)+d/2*.1/2-(u.x-(u.left??0))},${-f/2+(t.padding??0)-p/2-(u.y-(u.top??0))})`),pt(t,T),t.intersect=function(k){return ht.polygon(t,x,k)},l}var xle=F(()=>{"use strict";Kt();nr();tr();Jt();o(vle,"linedWaveEdgedRect")});async function ble(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=t.look==="neo"?10:5;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2-2*l,10),t.height=Math.max((t?.height??0)-s*2-2*l,10));let{shapeSvg:u,bbox:h,label:d}=await It(e,t,Dt(t)),f=(t?.width?t?.width:h.width)+a*2+2*l,p=(t?.height?t?.height:h.height)+s*2+2*l,m=f-2*l,g=p-2*l,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(u),T=dt(t,{}),k=[{x:y-l,y:v+l},{x:y-l,y:v+g+l},{x:y+m-l,y:v+g+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v+g-l},{x:y+m+l,y:v+g-l},{x:y+m+l,y:v-l},{x:y+l,y:v-l},{x:y+l,y:v},{x:y,y:v},{x:y,y:v+l}],C=[{x:y,y:v+l},{x:y+m-l,y:v+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v},{x:y,y:v}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=or(k),S=b.path(w,T),R=or(C),L=b.path(R,T);t.look!=="handDrawn"&&(S=UP(S),L=UP(L));let N=u.insert("g",":first-child");return N.insert(()=>S),N.insert(()=>L),N.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",x),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),d.attr("transform",`translate(${-(h.width/2)-l-(h.x-(h.left??0))}, ${-(h.height/2)+l-(h.y-(h.top??0))})`),pt(t,N),t.intersect=function(I){return ht.polygon(t,k,I)},u}var Tle=F(()=>{"use strict";Kt();Jt();tr();nr();o(ble,"multiRect")});async function Cle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=t.padding??0,u=t.look==="neo"?16:l,h=t.look==="neo"?12:l,d=!0;(t.width||t.height)&&(d=!1,t.width=(t?.width??0)-u*2,t.height=(t?.height??0)-h*3);let f=Math.max(a.width,t?.width??0)+u*2,p=Math.max(a.height,t?.height??0)+h*3,m=t.look==="neo"?p/4:p/8,g=p+(d?m/2:-m/2),y=-f/2,v=-g/2,x=10,{cssStyles:b}=t,T=fl(y-x,v+g+x,y+f-x,v+g+x,m,.8),k=T?.[T.length-1],C=[{x:y-x,y:v+x},{x:y-x,y:v+g+x},...T,{x:y+f-x,y:k.y-x},{x:y+f,y:k.y-x},{x:y+f,y:k.y-2*x},{x:y+f+x,y:k.y-2*x},{x:y+f+x,y:v-x},{x:y+x,y:v-x},{x:y+x,y:v},{x:y,y:v},{x:y,y:v+x}],w=[{x:y,y:v+x},{x:y+f-x,y:v+x},{x:y+f-x,y:k.y-x},{x:y+f,y:k.y-x},{x:y+f,y:v},{x:y,y:v}],S=ut.svg(i),R=dt(t,{});t.look!=="handDrawn"&&(R.roughness=0,R.fillStyle="solid");let L=or(C),N=S.path(L,R),I=or(w),_=S.path(I,R),A=i.insert(()=>N,":first-child");return A.insert(()=>_),A.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",b),n&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",n),A.attr("transform",`translate(0,${-m/2})`),s.attr("transform",`translate(${-(a.width/2)-x-(a.x-(a.left??0))}, ${-(a.height/2)+x-m/2-(a.y-(a.top??0))})`),pt(t,A),t.intersect=function(M){return ht.polygon(t,C,M)},i}var wle=F(()=>{"use strict";Kt();nr();tr();Jt();o(Cle,"multiWaveEdgedRectangle")});async function kle(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n,t.useHtmlLabels||Gr(_t())||(t.centerLabel=!0);let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=Math.max(l.width+(t.padding??0)*2,t?.width??0),d=Math.max(l.height+(t.padding??0)*2,t?.height??0),f=-h/2,p=-d/2,{cssStyles:m}=t,g=ut.svg(s),y=dt(t,{fill:r.noteBkgColor,stroke:r.noteBorderColor});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=g.rectangle(f,p,h,d,y),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container outer-path"),u.attr("class","label noteLabel"),m&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",m),i&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",i),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,x),t.intersect=function(b){return ht.rect(t,b)},s}var Sle=F(()=>{"use strict";tr();nr();Jt();Kt();ur();ur();o(kle,"note")});async function Ele(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a}=await It(e,t,Dt(t)),s=a.width+(t.padding??0),l=a.height+(t.padding??0),u=s+l,h=.5,d=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(i),g=dt(t,{}),y=TQe(0,0,u),v=m.path(y,g);f=i.insert(()=>v,":first-child").attr("transform",`translate(${-u/2+h}, ${u/2})`),p&&f.attr("style",p)}else f=as(i,u,u,d),f.attr("transform",`translate(${-u/2+h}, ${u/2})`);return n&&f.attr("style",n),pt(t,f),t.calcIntersect=function(m,g){let y=m.width,v=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],x=ht.polygon(m,v,g);return{x:x.x-.5,y:x.y-.5}},t.intersect=function(m){return this.calcIntersect(t,m)},i}var TQe,Ale=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();TQe=o((e,t,r)=>[`M${e+r/2},${t}`,`L${e+r},${t-r/2}`,`L${e+r/2},${t-r}`,`L${e},${t-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(Ele,"question")});async function Rle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?21:i??0,s=t.look==="neo"?12:i??0,{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width??u.width)+(t.look==="neo"?a*2:a),f=(t?.height??u.height)+(t.look==="neo"?s*2:s),p=-d/2,m=-f/2,g=m/2,y=[{x:p+g,y:m},{x:p,y:0},{x:p+g,y:-m},{x:-p,y:-m},{x:-p,y:m}],{cssStyles:v}=t,x=ut.svg(l),b=dt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=or(y),k=x.path(T,b),C=l.insert(()=>k,":first-child");return C.attr("class","basic label-container outer-path"),v&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",v),n&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${-g/2},0)`),h.attr("transform",`translate(${-g/2-u.width/2-(u.x-(u.left??0))}, ${-(u.height/2)-(u.y-(u.top??0))})`),pt(t,C),t.intersect=function(w){return ht.polygon(t,y,w)},l}var _le=F(()=>{"use strict";Kt();nr();Jt();tr();o(Rle,"rect_left_inv_arrow")});var CQe,sc,G4=F(()=>{"use strict";ur();Xt();Ls();CQe=o(async(e,t,r,n=!1,i=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=Ae(),l=Gr(s);return await Pn(e,a,{style:r,isTitle:n,useHtmlLabels:l,markdown:!1,isNode:i,width:Number.POSITIVE_INFINITY},s)},"createLabel"),sc=CQe});async function Lle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i;t.cssClasses?i="node "+t.cssClasses:i="node default";let a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=t.description,h=t.label,d=await sc(l,h,t.labelStyle,!0,!0),f={width:0,height:0};if(Gr(Ae())){let R=d.children[0],L=et(d);f=R.getBoundingClientRect(),L.attr("width",f.width),L.attr("height",f.height)}Z.info("Text 2",u);let p=u||[],m=d.getBBox(),g=await sc(l,Array.isArray(p)?p.join("
    "):p,t.labelStyle,!0,!0),y=g.children[0],v=et(g);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height);let x=(t.padding||0)/2;et(g).attr("transform","translate( "+(f.width>m.width?0:(m.width-f.width)/2)+", "+(m.height+x+5)+")"),et(d).attr("transform","translate( "+(f.width(Z.debug("Rough node insert CXC",N),I),":first-child"),w=a.insert(()=>(Z.debug("Rough node insert CXC",N),N),":first-child")}else w=s.insert("rect",":first-child"),S=s.insert("line"),w.attr("class","outer title-state").attr("style",n).attr("x",-f.width/2-x).attr("y",-f.height/2-x).attr("width",f.width+(t.padding||0)).attr("height",f.height+(t.padding||0)),S.attr("class","divider").attr("x1",-f.width/2-x).attr("x2",f.width/2+x).attr("y1",-f.height/2-x+m.height+x).attr("y2",-f.height/2-x+m.height+x);return pt(t,w),t.intersect=function(R){return ht.rect(t,R)},a}var Dle=F(()=>{"use strict";$r();Kt();G4();nr();Jt();tr();Xt();km();vt();ur();o(Lle,"rectWithTitle")});async function Ile(e,t,{config:{themeVariables:r}}){let n=r?.radius??5,i={rx:n,ry:n,classes:"",labelPaddingX:(t?.padding??0)*1,labelPaddingY:(t?.padding??0)*1};return ac(e,t,i)}var Mle=F(()=>{"use strict";Sm();o(Ile,"roundedRect")});async function Nle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t?.width??l.width)+i*2+(t.look==="neo"?Em:Em*2),d=(t?.height??l.height)+a*2,f=h-Em,p=d,m=Em-h/2,g=-d/2,{cssStyles:y}=t,v=ut.svg(s),x=dt(t,{});t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:m,y:g},{x:m+f,y:g},{x:m+f,y:g+p},{x:m-Em,y:g+p},{x:m-Em,y:g},{x:m,y:g},{x:m,y:g+p}],T=v.polygon(b.map(C=>[C.x,C.y]),x),k=s.insert(()=>T,":first-child");return k.attr("class","basic label-container outer-path").attr("style",kn(y)),n&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",n),y&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",n),u.attr("transform",`translate(${Em/2-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,k),t.intersect=function(C){return ht.rect(t,C)},s}var Em,Ple=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();Em=8;o(Nle,"shadedProcess")});async function Ole(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2,10),t.height=Math.max((t?.height??0)/1.5-s*2,10));let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:u.width)+a*2,f=((t?.height?t?.height:u.height)+s*2)*1.5,p=d,m=f/1.5,g=-p/2,y=-m/2,{cssStyles:v}=t,x=ut.svg(l),b=dt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=[{x:g,y},{x:g,y:y+m},{x:g+p,y:y+m},{x:g+p,y:y-m/2}],k=or(T),C=x.path(k,b),w=l.insert(()=>C,":first-child");return w.attr("class","basic label-container outer-path"),v&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",v),n&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",n),w.attr("transform",`translate(0, ${m/4})`),h.attr("transform",`translate(${-p/2+(t.padding??0)-(u.x-(u.left??0))}, ${-m/4+(t.padding??0)-(u.y-(u.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,T,S)},l}var Ble=F(()=>{"use strict";Kt();nr();Jt();tr();o(Ole,"slopedRect")});async function $le(e,t){let r=t.padding??0,n=t.look==="neo"?16:r*2,i=t.look==="neo"?12:r,a={rx:0,ry:0,classes:"",labelPaddingX:t.labelPaddingX??n,labelPaddingY:i};return ac(e,t,a)}var Fle=F(()=>{"use strict";Sm();o($le,"squareRect")});async function zle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?20:i,s=t.look==="neo"?12:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=u.height+(t.look==="neo"?s*2:s),d=u.width+h/4+(t.look==="neo"?a*2:a),f=h/2,{cssStyles:p}=t,m=ut.svg(l),g=dt(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:-d/2+f,y:-h/2},{x:d/2-f,y:-h/2},...Cm(-d/2+f,0,f,50,90,270),{x:d/2-f,y:h/2},...Cm(d/2-f,0,f,50,270,450)],v=or(y),x=m.path(v,g),b=l.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),p&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),n&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),pt(t,b),t.intersect=function(T){return ht.polygon(t,y,T)},l}var Gle=F(()=>{"use strict";Kt();nr();Jt();tr();o(zle,"stadium")});async function Vle(e,t){let r={rx:t.look==="neo"?3:5,ry:t.look==="neo"?3:5,classes:"flowchart-node"};return ac(e,t,r)}var Wle=F(()=>{"use strict";Sm();o(Vle,"state")});function qle(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{cssStyles:a}=t,{lineColor:s,stateBorder:l,nodeBorder:u,nodeShadow:h}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let d=e.insert("g").attr("class","node default").attr("id",t.domId??t.id),f=ut.svg(d),p=dt(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=f.circle(0,0,t.width,{...p,stroke:s,strokeWidth:2}),g=l??u,y=(t.width??0)*5/14,v=f.circle(0,0,y,{...p,fill:g,stroke:g,strokeWidth:2,fillStyle:"solid"}),x=d.insert(()=>m,":first-child");if(x.insert(()=>v),t.look!=="handDrawn"&&x.attr("class","outer-path"),a&&x.selectAll("path").attr("style",a),i&&x.selectAll("path").attr("style",i),t.width<25&&h&&t.look!=="handDrawn"){let b=e.node()?.ownerSVGElement?.id??"",T=b?`${b}-drop-shadow-small`:"drop-shadow-small";x.attr("style",`filter:url(#${T})`)}return pt(t,x),t.intersect=function(b){return ht.circle(t,(t.width??0)/2,b)},d}var Hle=F(()=>{"use strict";tr();nr();Jt();Kt();o(qle,"stateEnd")});function Ule(e,t,{config:{themeVariables:r}}){let{lineColor:n,nodeShadow:i}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),s;if(t.look==="handDrawn"){let u=ut.svg(a).circle(0,0,t.width,qse(n));s=a.insert(()=>u),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14)}else s=a.insert("circle",":first-child"),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14);if(t.width<25&&i&&t.look!=="handDrawn"){let l=e.node()?.ownerSVGElement?.id??"",u=l?`${l}-drop-shadow-small`:"drop-shadow-small";s.attr("style",`filter:url(#${u})`)}return pt(t,s),t.intersect=function(l){return ht.circle(t,(t.width??7)/2,l)},a}var Yle=F(()=>{"use strict";tr();nr();Jt();Kt();o(Ule,"stateStart")});async function jle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t?.padding??8,a=t.look==="neo"?28:i,s=t.look==="neo"?12:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width??u.width)+2*Gy+a,d=(t?.height??u.height)+s,f=h-2*Gy,p=d,m=-h/2,g=-d/2,y=[{x:0,y:0},{x:f,y:0},{x:f,y:-p},{x:0,y:-p},{x:0,y:0},{x:-8,y:0},{x:f+8,y:0},{x:f+8,y:-p},{x:-8,y:-p},{x:-8,y:0}];if(t.look==="handDrawn"){let v=ut.svg(l),x=dt(t,{}),b=v.rectangle(m,g,f+16,p,x),T=v.line(m+Gy,g,m+Gy,g+p,x),k=v.line(m+Gy+f,g,m+Gy+f,g+p,x);l.insert(()=>T,":first-child"),l.insert(()=>k,":first-child");let C=l.insert(()=>b,":first-child"),{cssStyles:w}=t;C.attr("class","basic label-container").attr("style",kn(w)),pt(t,C)}else{let v=as(l,f,p,y);n&&v.attr("style",n),pt(t,v)}return t.intersect=function(v){return ht.polygon(t,y,v)},l}var Gy,Xle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();Qt();Gy=8;o(jle,"subroutine")});async function Kle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;(t.width||t.height)&&(t.height=Math.max((t?.height??0)-s*2,10),t.width=Math.max((t?.width??0)-a*2-dO*(t.height+s*2),10));let{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height?t?.height:u.height)+s*2,d=dO*h,f=dO*h,m=(t?.width?t?.width:u.width)+a*2+d-d,g=h,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(l),T=dt(t,{}),k=[{x:y-d/2,y:v},{x:y+m+d/2,y:v},{x:y+m+d/2,y:v+g},{x:y-d/2,y:v+g}],C=[{x:y+m-d/2,y:v+g},{x:y+m+d/2,y:v+g},{x:y+m+d/2,y:v+g-f}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=or(k),S=b.path(w,T),R=or(C),L=b.path(R,{...T,fillStyle:"solid"}),N=l.insert(()=>L,":first-child");return N.insert(()=>S,":first-child"),N.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",x),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),pt(t,N),t.intersect=function(I){return ht.polygon(t,k,I)},l}var dO,Zle=F(()=>{"use strict";Kt();Jt();tr();nr();dO=.2;o(Kle,"taggedRect")});async function Qle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=Math.max(a.width+(t.padding??0)*2,t?.width??0),u=Math.max(a.height+(t.padding??0)*2,t?.height??0),h=u/8,d=.2*l,f=.2*u,p=u+h,{cssStyles:m}=t,g=ut.svg(i),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...fl(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-f*.4,T=[{x:x+l-d,y:(b+u)*1.3},{x:x+l,y:b+u-f},{x:x+l,y:(b+u)*.9},...fl(x+l,(b+u)*1.25,x+l-d,(b+u)*1.3,-u*.02,.5)],k=or(v),C=g.path(k,y),w=or(T),S=g.path(w,{...y,fillStyle:"solid"}),R=i.insert(()=>S,":first-child");return R.insert(()=>C,":first-child"),R.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",m),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(t.padding??0)-(a.x-(a.left??0))},${-u/2+(t.padding??0)-h/2-(a.y-(a.top??0))})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,v,L)},i}var Jle=F(()=>{"use strict";Kt();nr();tr();Jt();o(Qle,"taggedWaveEdgedRectangle")});async function ece(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a}=await It(e,t,Dt(t)),s=Math.max(a.width+(t.padding??0),t?.width||0),l=Math.max(a.height+(t.padding??0),t?.height||0),u=-s/2,h=-l/2,d=i.insert("rect",":first-child");return d.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),pt(t,d),t.intersect=function(f){return ht.rect(t,f)},i}var tce=F(()=>{"use strict";Kt();nr();Jt();o(ece,"text")});async function ice(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?12:i/2;if(t.width||t.height){let y=t.height??0;t.height=(t.height??0)-a,t.heightT,":first-child"),g=s.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=wQe(0,0,p,h,f,d);g=s.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",kn(m)).attr("style",n),g.attr("class","basic label-container outer-path"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",f),g.attr("transform",`translate(${-p/2}, ${h/2} )`),u.attr("transform",`translate(${-(l.width/2)-f-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,g),t.intersect=function(y){let v=ht.rect(t,y),x=v.y-(t.y??0);if(d!=0&&(Math.abs(x)<(t.height??0)/2||Math.abs(x)==(t.height??0)/2&&Math.abs(v.x-(t.x??0))>(t.width??0)/2-f)){let b=f*f*(1-x*x/(d*d));b!=0&&(b=Math.sqrt(Math.abs(b))),b=f-b,y.x-(t.x??0)>0&&(b=-b),v.x+=b}return v},s}var wQe,kQe,SQe,rce,nce,ace=F(()=>{"use strict";Kt();Jt();tr();nr();Qt();wQe=o((e,t,r,n,i,a)=>`M${e},${t} + a${i},${a} 0,0,1 0,${-n} + l${r},0 + a${i},${a} 0,0,1 0,${n} + M${r},${-n} + a${i},${a} 0,0,0 0,${n} + l${-r},0`,"createCylinderPathD"),kQe=o((e,t,r,n,i,a)=>[`M${e},${t}`,`M${e+r},${t}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),SQe=o((e,t,r,n,i,a)=>[`M${e+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD"),rce=5,nce=10;o(ice,"tiltedCylinder")});async function sce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=(t.look==="neo",i),s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var oce=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(sce,"trapezoid")});async function lce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=15,u=5;(t.width||t.height)&&(t.height=(t.height??0)-s*2,t.heightb,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),pt(t,T),t.intersect=function(k){return ht.polygon(t,v,k)},h}var cce=F(()=>{"use strict";Kt();nr();Jt();tr();o(lce,"trapezoidalPentagon")});async function dce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?i*2:i;(t.width||t.height)&&(t.width=((t?.width??0)-a)/2,t.widthb,":first-child").attr("transform",`translate(${-f/2}, ${f/2})`).attr("class","outer-path");return g&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),t.width=d,t.height=f,pt(t,T),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${f/2-(l.height+(t.padding??0)/(h?2:1)-(l.y-(l.top??0)))})`),t.intersect=function(k){return Z.info("Triangle intersect",t,m,k),ht.polygon(t,m,k)},s}var uce,hce,fce=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Kt();Vr();Xt();uce=10,hce=10;o(dce,"triangle")});async function pce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=!0;(t.width||t.height)&&(l=!1,t.width=(t?.width??0)-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10));let{shapeSvg:u,bbox:h,label:d}=await It(e,t,Dt(t)),f=(t?.width?t?.width:h.width)+(a??0)*2,p=(t?.height?t?.height:h.height)+(s??0)*2,m=t.look==="neo"?p/4:p/8,g=p+(l?m:-m),{cssStyles:y}=t,x=14-f,b=x>0?x/2:0,T=ut.svg(u),k=dt(t,{});t.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");let C=[{x:-f/2-b,y:g/2},...fl(-f/2-b,g/2,f/2+b,g/2,m,.8),{x:f/2+b,y:-g/2},{x:-f/2-b,y:-g/2}],w=or(C),S=T.path(w,k),R=u.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",y),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-m/2})`),d.attr("transform",`translate(${-f/2+(t.padding??0)-(h.x-(h.left??0))},${-p/2+(t.padding??0)-m-(h.y-(h.top??0))})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,C,L)},u}var mce=F(()=>{"use strict";Kt();nr();tr();Jt();o(pce,"waveEdgedRectangle")});async function gce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?20:i;if(t.width||t.height){t.width=t?.width??0,t.width<20&&(t.width=20),t.height=t?.height??0,t.height<10&&(t.height=10);let k=Math.min(t.height*.2,t.height/4);t.height=Math.ceil(t.height-s-k*(20/9)),t.width=t.width-a*2}let{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width:u.width)+a*2,d=(t?.height?t?.height:u.height)+s,f=d/8,p=d+f*2,{cssStyles:m}=t,g=ut.svg(l),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-h/2,y:p/2},...fl(-h/2,p/2,h/2,p/2,f,1),{x:h/2,y:-p/2},...fl(h/2,-p/2,-h/2,-p/2,f,-1)],x=or(v),b=g.path(x,y),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),pt(t,T),t.intersect=function(k){return ht.polygon(t,v,k)},l}var yce=F(()=>{"use strict";Kt();nr();Jt();tr();o(gce,"waveRectangle")});async function vce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-i*2-Ri,10),t.height=Math.max((t?.height??0)-a*2-Ri,10));let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width:l.width)+i*2+Ri,d=(t?.height?t?.height:l.height)+a*2+Ri,f=h-Ri,p=d-Ri,m=-f/2,g=-p/2,{cssStyles:y}=t,v=ut.svg(s),x=dt(t,{}),b=[{x:m-Ri,y:g-Ri},{x:m-Ri,y:g+p},{x:m+f,y:g+p},{x:m+f,y:g-Ri}],T=`M${m-Ri},${g-Ri} L${m+f},${g-Ri} L${m+f},${g+p} L${m-Ri},${g+p} L${m-Ri},${g-Ri} + M${m-Ri},${g} L${m+f},${g} + M${m},${g-Ri} L${m},${g+p}`;t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let k=v.path(T,x),C=s.insert(()=>k,":first-child");return C.attr("transform",`translate(${Ri/2}, ${Ri/2})`),C.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",y),n&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",n),u.attr("transform",`translate(${-(l.width/2)+Ri/2-(l.x-(l.left??0))}, ${-(l.height/2)+Ri/2-(l.y-(l.top??0))})`),pt(t,C),t.intersect=function(w){return ht.polygon(t,b,w)},s}var Ri,xce=F(()=>{"use strict";Kt();Jt();tr();nr();Ri=10;o(vce,"windowPane")});async function fO(e,t){let r=t;r.alias&&(t.label=r.alias);let{theme:n,themeVariables:i}=_t(),{rowEven:a,rowOdd:s,nodeBorder:l,borderColorArray:u}=i;if(t.look==="handDrawn"){let{themeVariables:Q}=_t(),{background:U}=Q,oe={...t,id:t.id+"-background",domId:(t.domId||t.id)+"-background",look:"default",cssStyles:["stroke: none",`fill: ${U}`]};await fO(e,oe)}let h=_t();t.useHtmlLabels=h.htmlLabels;let d=h.er?.diagramPadding??10,f=h.er?.entityPadding??6,{cssStyles:p}=t,{labelStyles:m,nodeStyles:g}=ct(t);if(r.attributes.length===0&&t.label){let Q={rx:0,ry:0,labelPaddingX:d,labelPaddingY:d*1.5,classes:""};Ca(t.label,h)+Q.labelPaddingX*20){let Q=x.width+d*2-(C+w+S+R);C+=Q/I,w+=Q/I,S>0&&(S+=Q/I),R>0&&(R+=Q/I)}let A=C+w+S+R,M=ut.svg(v),D=dt(t,{});t.look!=="handDrawn"&&(D.roughness=0,D.fillStyle="solid");let P=0;k.length>0&&(P=k.reduce((Q,U)=>Q+(U?.rowHeight??0),0));let B=Math.max(_.width+d*2,t?.width||0,A),O=Math.max((P??0)+x.height,t?.height||0),$=-B/2,V=-O/2;if(v.selectAll("g:not(:first-child)").each((Q,U,oe)=>{let te=et(oe[U]),le=te.attr("transform"),ie=0,ae=0;if(le){let be=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(le);be&&(ie=parseFloat(be[1]),ae=parseFloat(be[2]),te.attr("class").includes("attribute-name")?ie+=C:te.attr("class").includes("attribute-keys")?ie+=C+w:te.attr("class").includes("attribute-comment")&&(ie+=C+w+S))}te.attr("transform",`translate(${$+d/2+ie}, ${ae+V+x.height+f/2})`)}),v.select(".name").attr("transform","translate("+-x.width/2+", "+(V+f/2)+")"),n!=null&&bce.has(n)){let Q=r.colorIndex??0;v.attr("data-color-id",`color-${Q%u.length}`)}let G=M.rectangle($,V,B,O,D),z=v.insert(()=>G,":first-child").attr("class","outer-path").attr("style",p.join(""));T.push(0);for(let[Q,U]of k.entries()){let te=(Q+1)%2===0&&U.yOffset!==0,le=M.rectangle($,x.height+V+U?.yOffset,B,U?.rowHeight,{...D,fill:te?a:s,stroke:l});v.insert(()=>le,"g.label").attr("style",p.join("")).attr("class",`row-rect-${te?"even":"odd"}`)}let W=1e-4,H=F2($,x.height+V,B+$,x.height+V,W),j=M.polygon(H.map(Q=>[Q.x,Q.y]),D);if(v.insert(()=>j).attr("class","divider"),H=F2(C+$,x.height+V,C+$,O+V,W),j=M.polygon(H.map(Q=>[Q.x,Q.y]),D),v.insert(()=>j).attr("class","divider"),L){let Q=C+w+$;H=F2(Q,x.height+V,Q,O+V,W),j=M.polygon(H.map(U=>[U.x,U.y]),D),v.insert(()=>j).attr("class","divider")}if(N){let Q=C+w+S+$;H=F2(Q,x.height+V,Q,O+V,W),j=M.polygon(H.map(U=>[U.x,U.y]),D),v.insert(()=>j).attr("class","divider")}for(let Q of T){let U=x.height+V+Q;H=F2($,U,B+$,U,W),j=M.polygon(H.map(oe=>[oe.x,oe.y]),D),v.insert(()=>j).attr("class","divider")}if(pt(t,z),g&&t.look!=="handDrawn")if(n!=null&&EQe.has(n))v.selectAll("path").attr("style",g);else{let U=g.split(";")?.filter(oe=>oe.includes("stroke"))?.map(oe=>`${oe}`).join("; ");v.selectAll("path").attr("style",U??""),v.selectAll(".row-rect-even path").attr("style",g)}return t.intersect=function(Q){return ht.rect(t,Q)},v}async function $2(e,t,r,n=0,i=0,a=[],s=""){let l=e.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);t!==qc(t)&&(t=qc(t),t=t.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await Pn(l,t,{width:Ca(t,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(t.includes("<")||t.includes(">")){let d=u.children[0];for(d.textContent=d.textContent.replaceAll("<","<").replaceAll(">",">");d.childNodes[0];)d=d.childNodes[0],d.textContent=d.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(ya(r.htmlLabels)){let d=u.children[0];d.style.textAlign="start";let f=et(u);h=d.getBoundingClientRect(),f.attr("width",h.width),f.attr("height",h.height)}return h}function F2(e,t,r,n,i){return e===r?[{x:e-i/2,y:t},{x:e+i/2,y:t},{x:r+i/2,y:n},{x:r-i/2,y:n}]:[{x:e,y:t-i/2},{x:e,y:t+i/2},{x:r,y:n+i/2},{x:r,y:n-i/2}]}var bce,EQe,Tce=F(()=>{"use strict";Kt();nr();Jt();tr();Sm();ur();Ls();Vr();$r();Qt();bce=new Set(["redux-color","redux-dark-color"]),EQe=new Set(["redux","redux-dark","redux-color","redux-dark-color"]);o(fO,"erBox");o($2,"addText");o(F2,"lineToPolygon")});async function Cce(e,t,r,n,i=r.class.padding??12){let a=n?0:3,s=e.insert("g").attr("class",Dt(t)).attr("id",t.domId||t.id),l=null,u=null,h=null,d=null,f=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),t.annotations.length>0){let b=t.annotations[0];await V4(l,{text:`\xAB${b}\xBB`},0),f=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await V4(u,t,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of t.members){let T=await V4(h,b,y,[b.parseClassifier()]);y+=T+a}m=h.node().getBBox().height,m<=0&&(m=i/2),d=s.insert("g").attr("class","methods-group text");let v=0;for(let b of t.methods){let T=await V4(d,b,v,[b.parseClassifier()]);v+=T+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${f})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${f+p+i*2})`),x=s.node().getBBox(),d.attr("transform",`translate(0, ${f+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function V4(e,t,r,n=[]){let i=e.insert("g").attr("class","label").attr("style",n.join("; ")),a=_t(),s="useHtmlLabels"in t?t.useHtmlLabels:ya(a.htmlLabels)??!0,l="";"text"in t?l=t.text:l=t.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),ni(l)&&(s=!0);let u=await Pn(i,ub(Rs(l)),{width:Ca(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,d=1;if(s){let f=u.children[0],p=et(u);d=f.innerHTML.split("
    ").length,f.innerHTML.includes("")&&(d+=f.innerHTML.split("").length-1);let m=f.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,k=parseInt(b,10)*5+"px";y.style.minWidth=k,y.style.maxWidth=k}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=f.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&et(u).selectAll("tspan").attr("font-weight",""),d=u.children.length;let f=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(f.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(f.textContent=f.textContent[0]+" "+f.textContent.substring(1))),f.textContent==="undefined"&&(f.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*d)+r)+")"),h.height}var wce=F(()=>{"use strict";$r();ur();Kt();Qt();Xt();Ls();Vr();o(Cce,"textHelper");o(V4,"addText")});async function kce(e,t){let r=Ae(),{themeVariables:n}=r,{useGradient:i}=n,a=r.class.padding??12,s=a,l=t.useHtmlLabels??ya(r.htmlLabels)??!0,u=t;u.annotations=u.annotations??[],u.members=u.members??[],u.methods=u.methods??[];let{shapeSvg:h,bbox:d}=await Cce(e,t,r,l,s),{labelStyles:f,nodeStyles:p}=ct(t);t.labelStyle=f,t.cssStyles=u.styles||"";let m=u.styles?.join(";")||p||"";t.cssStyles||(t.cssStyles=m.replaceAll("!important","").split(";"));let g=u.members.length===0&&u.methods.length===0&&!r.class?.hideEmptyMembersBox,y=ut.svg(h),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=Math.max(t.width??0,d.width),b=Math.max(t.height??0,d.height),T=(t.height??0)>d.height;u.members.length===0&&u.methods.length===0?b+=s:u.members.length>0&&u.methods.length===0&&(b+=s*2);let k=-x/2,C=-b/2,w=g?a*2:u.members.length===0&&u.methods.length===0?-a:0;T&&(w=a*2);let S=y.rectangle(k-a,C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0),x+2*a,b+2*a+w,v),R=h.insert(()=>S,":first-child");R.attr("class","basic label-container outer-path");let L=R.node().getBBox(),N=h.select(".annotation-group").node().getBBox().height-(g?a/2:0)||0,I=h.select(".label-group").node().getBBox().height-(g?a/2:0)||0,_=h.select(".members-group").node().getBBox().height-(g?a/2:0)||0,A=(N+I+C+a-(C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0)))/2;if(h.selectAll(".text").each((M,D,P)=>{let B=et(P[D]),O=B.attr("transform"),$=0;if(O){let W=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(O);W&&($=parseFloat(W[2]))}let V=$+C+a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0);if(B.attr("class").includes("methods-group")){let z=Math.max(_,s/2);T?V=Math.max(A,N+I+z+C+s*2+a)+s*2:V=N+I+z+C+s*4+a}u.members.length===0&&u.methods.length===0&&r.class?.hideEmptyMembersBox&&(u.annotations.length>0?V=$-s:V=$),l||(V-=4);let G=k;(B.attr("class").includes("label-group")||B.attr("class").includes("annotation-group"))&&(G=-B.node()?.getBBox().width/2||0,h.selectAll("text").each(function(z,W,H){window.getComputedStyle(H[W]).textAnchor==="middle"&&(G=0)})),B.attr("transform",`translate(${G}, ${V})`)}),u.members.length>0||u.methods.length>0||g){let M=N+I+C+a,D=y.line(L.x,M,L.x+L.width,M+.001,v);h.insert(()=>D).attr("class",`divider${t.look==="neo"&&!i?" neo-line":""}`).attr("style",m)}if(g||u.members.length>0||u.methods.length>0){let M=N+I+_+C+s*2+a,D=y.line(L.x,T?Math.max(A,M):M,L.x+L.width,(T?Math.max(A,M):M)+.001,v);h.insert(()=>D).attr("class",`divider${t.look==="neo"&&!i?" neo-line":""}`).attr("style",m)}if(u.look!=="handDrawn"&&h.selectAll("path").attr("style",m),R.select(":nth-child(2)").attr("style",m),h.selectAll(".divider").select("path").attr("style",m),t.labelStyle?h.selectAll("span").attr("style",t.labelStyle):h.selectAll("span").attr("style",m),!l){let M=RegExp(/color\s*:\s*([^;]*)/),D=M.exec(m);if(D){let P=D[0].replace("color","fill");h.selectAll("tspan").attr("style",P)}else if(f){let P=M.exec(f);if(P){let B=P[0].replace("color","fill");h.selectAll("tspan").attr("style",B)}}}return pt(t,R),t.intersect=function(M){return ht.rect(t,M)},h}var Sce=F(()=>{"use strict";Kt();Xt();$r();tr();Jt();nr();wce();Vr();o(kce,"classBox")});async function Ece(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t,a=t,s=20,l=20,u="verifyMethod"in t,h=Dt(t),{themeVariables:d}=Ae(),{borderColorArray:f,requirementEdgeLabelBackground:p}=d,m=e.insert("g").attr("class",h).attr("id",t.domId??t.id),g;u?g=await wh(m,`<<${i.type}>>`,0,t.labelStyle):g=await wh(m,"<<Element>>",0,t.labelStyle);let y=g,v=await wh(m,i.name,y,t.labelStyle+"; font-weight: bold;");if(y+=v+l,u){let L=await wh(m,`${i.requirementId?`ID: ${i.requirementId}`:""}`,y,t.labelStyle);y+=L;let N=await wh(m,`${i.text?`Text: ${i.text}`:""}`,y,t.labelStyle);y+=N;let I=await wh(m,`${i.risk?`Risk: ${i.risk}`:""}`,y,t.labelStyle);y+=I,await wh(m,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,y,t.labelStyle)}else{let L=await wh(m,`${a.type?`Type: ${a.type}`:""}`,y,t.labelStyle);y+=L,await wh(m,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,y,t.labelStyle)}let x=(m.node()?.getBBox().width??200)+s,b=(m.node()?.getBBox().height??200)+s,T=-x/2,k=-b/2,C=ut.svg(m),w=dt(t,{});t.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let S=C.rectangle(T,k,x,b,w),R=m.insert(()=>S,":first-child");if(R.attr("class","basic label-container outer-path").attr("style",n),f?.length){let L=t.colorIndex??0;m.attr("data-color-id",`color-${L%f.length}`)}if(m.selectAll(".label").each((L,N,I)=>{let _=et(I[N]),A=_.attr("transform"),M=0,D=0;if(A){let $=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(A);$&&(M=parseFloat($[1]),D=parseFloat($[2]))}let P=D-b/2,B=T+s/2;(N===0||N===1)&&(B=M),_.attr("transform",`translate(${B}, ${P+s})`)}),y>g+v+l){let L=k+g+v+l,N;if(t.look==="neo"){let A=[[T,L],[T+x,L],[T+x,L+.001],[T,L+.001]];N=C.polygon(A,w)}else N=C.line(T,L,T+x,L,w);m.insert(()=>N).attr("class","divider")}return pt(t,R),t.intersect=function(L){return ht.rect(t,L)},n&&t.look!=="handDrawn"&&(p||f?.length)&&m.selectAll("path").attr("style",n),m}async function wh(e,t,r,n=""){if(t==="")return 0;let i=e.insert("g").attr("class","label").attr("style",n),a=Ae(),s=a.htmlLabels??!0,l=await Pn(i,ub(Rs(t)),{width:Ca(t,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],d=et(l);u=h.getBoundingClientRect(),d.attr("width",u.width),d.attr("height",u.height)}else{let h=l.children[0];for(let d of h.children)n&&d.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var Ace=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();Xt();Ls();$r();o(Ece,"requirementBox");o(wh,"addText")});async function Rce(e,t,{config:r}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n||"";let a=10,s=t.width;t.width=(t.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=t.padding||10,f="",p;"ticket"in t&&t.ticket&&r?.kanban?.ticketBaseUrl&&(f=r?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",f).attr("target","_blank"));let m={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await A4(p,"ticket"in t&&t.ticket||"",m):{label:g,bbox:y}=await A4(l,"ticket"in t&&t.ticket||"",m);let{label:v,bbox:x}=await A4(l,"assigned"in t&&t.assigned||"",m);t.width=s;let b=10,T=t?.width||0,k=Math.max(y.height,x.height)/2,C=Math.max(u.height+b*2,t?.height||0)+k,w=-T/2,S=-C/2;h.attr("transform","translate("+(d-T/2)+", "+(-k-u.height/2)+")"),g.attr("transform","translate("+(d-T/2)+", "+(-k+u.height/2)+")"),v.attr("transform","translate("+(d+T/2-x.width-2*a)+", "+(-k+u.height/2)+")");let R,{rx:L,ry:N}=t,{cssStyles:I}=t;if(t.look==="handDrawn"){let _=ut.svg(l),A=dt(t,{}),M=L||N?_.path(io(w,S,T,C,L||0),A):_.rectangle(w,S,T,C,A);R=l.insert(()=>M,":first-child"),R.attr("class","basic label-container").attr("style",I||null)}else{R=l.insert("rect",":first-child"),R.attr("class","basic label-container __APA__").attr("style",i).attr("rx",L??5).attr("ry",N??5).attr("x",w).attr("y",S).attr("width",T).attr("height",C);let _="priority"in t&&t.priority;if(_){let A=l.append("line"),M=w+2,D=S+Math.floor((L??0)/2),P=S+C-Math.floor((L??0)/2);A.attr("x1",M).attr("y1",D).attr("x2",M).attr("y2",P).attr("stroke-width","4").attr("stroke",AQe(_))}}return pt(t,R),t.height=C,t.intersect=function(_){return ht.rect(t,_)},l}var AQe,_ce=F(()=>{"use strict";Kt();nr();km();Jt();tr();AQe=o(e=>{switch(e){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(Rce,"kanbanItem")});async function Lce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+10*s,h=a.height+8*s,d=.15*u,{cssStyles:f}=t,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0 + a${d},${d} 1 0,0 ${g*.25},${-1*y*.1} + a${d},${d} 1 0,0 ${g*.25},0 + a${d},${d} 1 0,0 ${g*.25},0 + a${d},${d} 1 0,0 ${g*.25},${y*.1} + + a${d},${d} 1 0,0 ${g*.15},${y*.33} + a${d*.8},${d*.8} 1 0,0 0,${y*.34} + a${d},${d} 1 0,0 ${-1*g*.15},${y*.33} + + a${d},${d} 1 0,0 ${-1*g*.25},${y*.15} + a${d},${d} 1 0,0 ${-1*g*.25},0 + a${d},${d} 1 0,0 ${-1*g*.25},0 + a${d},${d} 1 0,0 ${-1*g*.25},${-1*y*.15} + + a${d},${d} 1 0,0 ${-1*g*.1},${-1*y*.33} + a${d*.8},${d*.8} 1 0,0 0,${-1*y*.34} + a${d},${d} 1 0,0 ${g*.1},${-1*y*.33} + H0 V0 Z`;if(t.look==="handDrawn"){let b=ut.svg(i),T=dt(t,{}),k=b.path(x,T);v=i.insert(()=>k,":first-child"),v.attr("class","basic label-container").attr("style",kn(f))}else v=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),pt(t,v),t.calcIntersect=function(b,T){return ht.rect(b,T)},t.intersect=function(b){return Z.info("Bang intersect",t,b),ht.rect(t,b)},i}var Dce=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(Lce,"bang")});async function Ice(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+2*s,h=a.height+2*s,d=.15*u,f=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=t,y,v=`M0 0 + a${d},${d} 0 0,1 ${u*.25},${-1*u*.1} + a${p},${p} 1 0,1 ${u*.4},${-1*u*.1} + a${f},${f} 1 0,1 ${u*.35},${u*.2} + + a${d},${d} 1 0,1 ${u*.15},${h*.35} + a${m},${m} 1 0,1 ${-1*u*.15},${h*.65} + + a${f},${d} 1 0,1 ${-1*u*.25},${u*.15} + a${p},${p} 1 0,1 ${-1*u*.5},0 + a${d},${d} 1 0,1 ${-1*u*.25},${-1*u*.15} + + a${d},${d} 1 0,1 ${-1*u*.1},${-1*h*.35} + a${m},${m} 1 0,1 ${u*.1},${-1*h*.65} + H0 V0 Z`;if(t.look==="handDrawn"){let x=ut.svg(i),b=dt(t,{}),T=x.path(v,b);y=i.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",kn(g))}else y=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),pt(t,y),t.calcIntersect=function(x,b){return ht.rect(x,b)},t.intersect=function(x){return Z.info("Cloud intersect",t,x),ht.rect(t,x)},i}var Mce=F(()=>{"use strict";tr();vt();Qt();nr();Jt();Kt();o(Ice,"cloud")});async function Nce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+8*s,h=a.height+2*s,d=5,f=t.look==="neo"?` + M${-u/2} ${h/2-d} + v${-h+2*d} + q0,-${d} ${d},-${d} + h${u-2*d} + q${d},0 ${d},${d} + v${h-d} + H${-u/2} + Z + `:` + M${-u/2} ${h/2-d} + v${-h+2*d} + q0,-${d} ${d},-${d} + h${u-2*d} + q${d},0 ${d},${d} + v${h-2*d} + q0,${d} ${-d},${d} + h${-(u-2*d)} + q${-d},0 ${-d},${-d} + Z + `;if(!t.domId)throw new Error(`defaultMindmapNode: node "${t.id}" is missing a domId \u2014 was render.ts domId prefixing skipped?`);let p=i.append("path").attr("id",t.domId).attr("class","node-bkg node-"+t.type).attr("style",n).attr("d",f);return i.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),i.append(()=>l.node()),pt(t,p),t.calcIntersect=function(m,g){return ht.rect(m,g)},t.intersect=function(m){return ht.rect(t,m)},i}var Pce=F(()=>{"use strict";nr();Jt();Kt();o(Nce,"defaultMindmapNode")});async function Oce(e,t){let r={padding:t.padding??0};return z4(e,t,r)}var Bce=F(()=>{"use strict";hO();o(Oce,"mindmapCircle")});function $ce(e){return e in pO}var RQe,_Qe,pO,mO=F(()=>{"use strict";soe();coe();hoe();foe();hO();moe();yoe();xoe();Toe();woe();Aoe();_oe();Doe();Moe();Poe();Foe();Goe();Woe();Hoe();Yoe();Xoe();Zoe();Joe();tle();nle();ale();ole();cle();hle();fle();yle();xle();Tle();wle();Sle();Ale();_le();Dle();Mle();Ple();Ble();Fle();Gle();Wle();Hle();Yle();Xle();Zle();Jle();tce();ace();oce();cce();fce();mce();yce();xce();Tce();Sce();Ace();_ce();Dce();Mce();Pce();Bce();RQe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:$le},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Ile},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:zle},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:jle},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:Eoe},{semanticName:"Data Store",name:"Data Store",shortName:"datastore",description:"Data flow diagram data store",aliases:["data-store"],handler:Roe},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:z4},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:Lce},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Ice},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Ele},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:qoe},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:ule},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:lle},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:sce},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:ile},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:Ioe},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:ece},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:uoe},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Nle},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Ule},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:qle},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:zoe},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:Uoe},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:goe},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:voe},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:boe},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:dle},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:pce},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:Voe},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ice},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:gle},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:Coe},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:Loe},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:dce},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:vce},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:Noe},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:lce},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:$oe},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Ole},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Cle},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:ble},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:loe},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:poe},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Qle},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Kle},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:gce},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Rle},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:vle}],_Qe=o(()=>{let t=[...Object.entries({state:Vle,choice:doe,note:kle,rectWithTitle:Lle,labelRect:sle,iconSquare:ele,iconCircle:Koe,icon:joe,iconRounded:Qoe,imageSquare:rle,anchor:aoe,kanbanItem:Rce,mindmapCircle:Oce,defaultMindmapNode:Nce,classBox:kce,erBox:fO,requirementBox:Ece}),...RQe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(t)},"generateShapeMap"),pO=_Qe();o($ce,"isValidShape")});var LQe,W4,Fce=F(()=>{"use strict";$r();A2();Xt();vt();mO();Qt();Vr();Nn();Hd();H0();LQe="flowchart-",W4=class{constructor(){this.vertexCounter=0;this.config=Ae();this.diagramId="";this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=kr;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getAccTitle=Ar;this.getAccDescription=_r;this.getDiagramTitle=Lr;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(t){return xt.sanitizeText(t,this.config)}sanitizeNodeLabelType(t){switch(t){case"markdown":case"string":case"text":return t;default:return"markdown"}}setDiagramId(t){this.diagramId=t}lookUpDomId(t){for(let r of this.vertices.values())if(r.id===t)return this.diagramId?`${this.diagramId}-${r.domId}`:r.domId;return this.diagramId?`${this.diagramId}-${t}`:t}addVertex(t,r,n,i,a,s,l={},u){if(!t||t.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` +`)?m=u+` +`:m=`{ +`+u+` +}`,h=Qd(m,{schema:Zd})}let d=this.edges.find(m=>m.id===t);if(d){let m=h;m?.animate!==void 0&&(d.animate=m.animate),m?.animation!==void 0&&(d.animation=m.animation),m?.curve!==void 0&&(d.interpolate=m.curve);return}let f,p=this.vertices.get(t);if(p===void 0&&(r===void 0&&n===void 0&&i!==void 0&&i!==null&&Z.warn(`Style applied to unknown node "${t}". This may indicate a typo. The node will be created automatically.`),p={id:t,labelType:"text",domId:LQe+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,p)),this.vertexCounter++,r!==void 0?(this.config=Ae(),f=this.sanitizeText(r.text.trim()),p.labelType=r.type,f.startsWith('"')&&f.endsWith('"')&&(f=f.substring(1,f.length-1)),p.text=f):p.text===void 0&&(p.text=t),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!$ce(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label,p.labelType=this.sanitizeNodeLabelType(h?.labelType)),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===t&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===t&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(t,r,n,i){let l={start:t,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Z.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=this.sanitizeNodeLabelType(u.type)),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(d=>d.start===l.start&&d.end===l.end);h.length===0?l.id=eu(l.start,l.end,{counter:0,prefix:"L"}):l.id=eu(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Z.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`)}isLinkData(t){return t!==null&&typeof t=="object"&&"id"in t&&typeof t.id=="string"}addLink(t,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;Z.info("addLink",t,r,i);for(let a of t)for(let s of r){let l=a===t[t.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(t,r){t.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(t,r){t.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(t,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");t.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(t){this.direction=t.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(t,r){for(let n of t.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(t,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of t.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(t,r,n){if(Ae().securityLevel!=="loose"||r===void 0)return;let i=[];if(typeof n=="string"){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s{let s=this.lookUpDomId(t),l=document.querySelector(`[id="${s}"]`);l!==null&&l.addEventListener("click",()=>{Zt.runFunc(r,...i)},!1)}))}setLink(t,r,n){t.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=Zt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,r,n){t.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(r=>{r(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let r=Dy();et(t).select("svg").selectAll("g.node").on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(l===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(Zs.sanitize(l)),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.diagramId="",this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=Ae(),yr()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,r,n){let i=t.text.trim(),a=n.text;t===n&&/\s/.exec(n.text)&&(i=void 0);let l=o(g=>{let y={boolean:{},number:{},string:{}},v=[],x;return{nodeList:g.filter(function(T){let k=typeof T;return T.stmt&&T.stmt==="dir"?(x=T.value,!1):T.trim()===""?!1:k in y?y[k].hasOwnProperty(T)?!1:y[k][T]=!0:v.includes(T)?!1:v.push(T)}),dir:x}},"uniq")(r.flat()),u=l.nodeList,h=l.dir,d=h!==void 0,f=Ae().flowchart??{},p=h??(f.inheritDir?this.getDirection()??Ae().direction??void 0:void 0);if(this.version==="gen-1")for(let g=0;g2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===t)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(t,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(t){let r=t.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(t,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(t,r){let n=this.destructEndLink(t),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(t,r){for(let n of t)if(n.nodes.includes(r))return!0;return!1}makeUniq(t,r){let n=[];return t.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(t.nodes[a])}),{nodes:n}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return t.form==="circle"?"iconCircle":t.form==="square"?"iconSquare":t.form==="rounded"?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,r){return t.find(n=>n.id===r)}destructEdgeType(t){let r="none",n="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":n=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=t.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(t,r,n,i,a,s){let l=n.get(t.id),u=i.get(t.id)??!1,h=this.findNode(r,t.id);if(h)h.cssStyles=t.styles,h.cssCompiledStyles=this.getCompiledStyles(t.classes),h.cssClasses=t.classes.join(" ");else{let d={id:t.id,label:t.text,labelType:t.labelType,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:s,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?r.push({...d,isGroup:!0,shape:"rect"}):r.push({...d,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let r=[];for(let n of t){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let t=Ae(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let d=i[h];d.nodes.length>0&&s.set(d.id,!0);for(let f of d.nodes)a.set(f,d.id)}for(let h=i.length-1;h>=0;h--){let d=i[h];r.push({id:d.id,label:d.title,labelStyle:"",labelType:d.labelType,parentId:a.get(d.id),padding:8,cssCompiledStyles:this.getCompiledStyles(d.classes),cssClasses:d.classes.join(" "),shape:"rect",dir:d.dir==="TD"?"TB":d.dir,explicitDir:d.hasExplicitDir,isGroup:!0,look:t.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,t,t.look||"classic")});let u=this.getEdges();return u.forEach((h,d)=>{let{arrowTypeStart:f,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:eu(h.start,h.end,{counter:d,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelType:h.labelType,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":f,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:t.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:t}}defaultConfig(){return bS.flowchart}}});var pl,Am=F(()=>{"use strict";$r();pl=o((e,t)=>{let r;return t==="sandbox"&&(r=et("#i"+e)),(t==="sandbox"?et(r.nodes()[0].contentDocument.body):et("body")).select(`[id="${e}"]`)},"getDiagramElement")});var oc,Vy=F(()=>{"use strict";oc=o(({flowchart:e})=>{let t=e?.subGraphTitleMargin?.top??0,r=e?.subGraphTitleMargin?.bottom??0,n=t+r;return{subGraphTitleTopMargin:t,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var zce,Gce=F(()=>{"use strict";Xt();ur();vt();$r();tr();Ls();_4();Jt();zce=o(async(e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,l=s,{labelStyles:u,nodeStyles:h,borderStyles:d,backgroundStyles:f}=ct(t),p=e.insert("g").attr("class","cluster swimlane "+(t.cssClasses||"")).attr("id",t.id).attr("data-id",t.id).attr("data-et","cluster").attr("data-look",t.look),m=ya(r.flowchart.htmlLabels),g=t.direction==="LR",y=p.insert("g").attr("class","cluster-label swimlane-label"),v=await Pn(y,t.label,{style:t.labelStyle,useHtmlLabels:m,isNode:!0,width:t.width}),x=v.getBBox();if(m){let A=v.children[0],M=et(v);x=A.getBoundingClientRect(),M.attr("width",x.width),M.attr("height",x.height)}let b=t.padding??0,T=t.width<=x.width+b?x.width+b:t.width;t.width<=x.width+b?t.diff=(T-t.width)/2-b:t.diff=-b;let k=t.height,C=t.y-k/2,w=t.y+k/2,S=t.x-T/2,R=t.swimlaneContentTop!==void 0?t.swimlaneContentTop:C+k/3,L=g?4:0,N=x.height+2*L,I,_;if(g){let A=Math.max(N,x.height+2*L),M=S+A,D=Math.max(0,T-A);if(t.look==="handDrawn"){let O=ut.svg(p),$=dt(t,{roughness:.7,fill:a,stroke:l,fillWeight:3,seed:i}),V=dt(t,{roughness:.7,fill:"none",stroke:l,seed:i}),G=O.rectangle(S,C,A,k,$);I=p.insert(()=>G,":first-child");let z=O.rectangle(M,C,D,k,V);_=p.insert(()=>z,":first-child"),I.select("path:nth-child(2)").attr("style",d.join(";")),I.select("path").attr("style",f.join(";").replace("fill","stroke"))}else I=p.insert("rect",":first-child"),_=p.insert("rect",":first-child"),I.attr("class","swimlane-title").attr("style",h).attr("x",S).attr("y",C).attr("width",A).attr("height",k).attr("fill",a).attr("stroke",l),_.attr("class","swimlane-body").attr("style",h).attr("x",M).attr("y",C).attr("width",D).attr("height",k).attr("fill","none").attr("stroke",l);let P=S+A/2,B=t.y;y.attr("transform",`translate(${P}, ${B}) rotate(-90) translate(${-x.width/2}, ${-x.height/2})`)}else{let A=Math.max(0,R-C),M=Math.min(N,A),D=C+M,P=Math.max(0,w-D),B=t.x-T/2;if(t.look==="handDrawn"){let V=ut.svg(p),G=dt(t,{roughness:.7,fill:a,stroke:l,fillWeight:3,seed:i}),z=dt(t,{roughness:.7,fill:"none",stroke:l,seed:i}),W=V.rectangle(B,C,T,M,G);I=p.insert(()=>W,":first-child");let H=V.rectangle(B,D,T,P,z);_=p.insert(()=>H,":first-child"),I.select("path:nth-child(2)").attr("style",d.join(";")),I.select("path").attr("style",f.join(";").replace("fill","stroke"))}else I=p.insert("rect",":first-child"),_=p.insert("rect",":first-child"),I.attr("class","swimlane-title").attr("style",h).attr("x",B).attr("y",C).attr("width",T).attr("height",M).attr("fill",a).attr("stroke",l),_.attr("class","swimlane-body").attr("style",h).attr("x",B).attr("y",D).attr("width",T).attr("height",P).attr("fill","none").attr("stroke",l);let O=t.x-x.width/2,$=C+(M-x.height)/2;y.attr("transform",`translate(${O}, ${$})`)}if(Z.trace("Swimlane data ",t,JSON.stringify(t)),u){let A=y.select("span");A&&A.attr("style",u)}return t.offsetX=0,t.width=T,t.height=k,t.offsetY=x.height-b/2,t.intersect=function(A){return nu(t,A)},{cluster:p,labelBBox:x}},"swimlane")});var Vce,DQe,IQe,MQe,NQe,PQe,OQe,Wce,rf,q4,Wy=F(()=>{"use strict";Xt();ur();vt();Vy();$r();tr();Ls();_4();G4();km();Jt();Gce();Vce=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Gr(r),m=f.insert("g").attr("class","cluster-label "),g;t.labelType==="markdown"?g=await Pn(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):g=await sc(m,t.label,t.labelStyle||"",!1,!0);let y=g.getBBox();if(Gr(r)){let S=g.children[0],R=et(g);y=S.getBoundingClientRect(),R.attr("width",y.width),R.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let S=ut.svg(f),R=dt(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),L=S.path(io(b,T,v,x,0),R);k=f.insert(()=>(Z.debug("Rough node insert CXC",L),L),":first-child"),k.select("path:nth-child(2)").attr("style",h.join(";")),k.select("path").attr("style",d.join(";").replace("fill","stroke"))}else k=f.insert("rect",":first-child"),k.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=oc(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let S=m.select("span");S&&S.attr("style",l)}let w=k.node().getBBox();return t.offsetX=0,t.width=w.width,t.height=w.height,t.offsetY=y.height-t.padding/2,t.intersect=function(S){return nu(t,S)},{cluster:f,labelBBox:y}},"rect"),DQe=o((e,t)=>{let r=e.insert("g").attr("class","note-cluster").attr("id",t.domId),n=r.insert("rect",":first-child"),i=0*t.padding,a=i/2;n.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-a).attr("y",t.y-t.height/2-a).attr("width",t.width+i).attr("height",t.height+i).attr("fill","none");let s=n.node().getBBox();return t.width=s.width,t.height=s.height,t.intersect=function(l){return nu(t,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),IQe=o(async(e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-id",t.id).attr("data-look",t.look),d=h.insert("g",":first-child"),f=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=await sc(f,t.label,t.labelStyle,void 0,!0),g=m.getBBox();if(Gr(r)){let L=m.children[0],N=et(m);g=L.getBoundingClientRect(),N.attr("width",g.width),N.attr("height",g.height)}let y=0*t.padding,v=y/2,x=(t.width<=g.width+t.padding?g.width+t.padding:t.width)+y;t.width<=g.width+t.padding?t.diff=(x-t.width)/2-t.padding:t.diff=-t.padding;let b=t.height+y,T=t.height+y-g.height-6,k=t.x-x/2,C=t.y-b/2;t.width=x;let w=t.y-t.height/2-v+g.height+2,S;if(t.look==="handDrawn"){let L=t.cssClasses.includes("statediagram-cluster-alt"),N=ut.svg(h),I=t.rx||t.ry?N.path(io(k,C,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):N.rectangle(k,C,x,b,{seed:i});S=h.insert(()=>I,":first-child");let _=N.rectangle(k,w,x,T,{fill:L?a:s,fillStyle:L?"hachure":"solid",stroke:u,seed:i});S=h.insert(()=>I,":first-child"),p=h.insert(()=>_)}else S=d.insert("rect",":first-child"),S.attr("class","outer").attr("x",k).attr("y",C).attr("width",x).attr("height",b).attr("data-look",t.look),p.attr("class","inner").attr("x",k).attr("y",w).attr("width",x).attr("height",T);f.attr("transform",`translate(${t.x-g.width/2}, ${C+1-(Gr(r)?0:3)})`);let R=S.node().getBBox();return t.height=R.height,t.offsetX=0,t.offsetY=g.height-t.padding/2,t.labelBBox=g,t.intersect=function(L){return nu(t,L)},{cluster:h,labelBBox:g}},"roundedWithTitle"),MQe=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Gr(r),m=f.insert("g").attr("class","cluster-label "),g=await Pn(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),y=g.getBBox();if(Gr(r)){let S=g.children[0],R=et(g);y=S.getBoundingClientRect(),R.attr("width",y.width),R.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let S=ut.svg(f),R=dt(t,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),L=S.path(io(b,T,v,x,t.rx),R);k=f.insert(()=>(Z.debug("Rough node insert CXC",L),L),":first-child"),k.select("path:nth-child(2)").attr("style",h.join(";")),k.select("path").attr("style",d.join(";").replace("fill","stroke"))}else k=f.insert("rect",":first-child"),k.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=oc(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let S=m.select("span");S&&S.attr("style",l)}let w=k.node().getBBox();return t.offsetX=0,t.width=w.width,t.height=w.height,t.offsetY=y.height-t.padding/2,t.intersect=function(S){return nu(t,S)},{cluster:f,labelBBox:y}},"kanbanSection"),NQe=o((e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-look",t.look),l=s.insert("g",":first-child"),u=0*t.padding,h=t.width+u;t.diff=-t.padding;let d=t.height+u,f=t.x-h/2,p=t.y-d/2;t.width=h;let m;if(t.look==="handDrawn"){let v=ut.svg(s).rectangle(f,p,h,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else{m=l.insert("rect",":first-child");let y="outer";t.look,y="divider",m.attr("class",y).attr("x",f).attr("y",p).attr("width",h).attr("height",d).attr("data-look",t.look)}let g=m.node().getBBox();return t.height=g.height,t.offsetX=0,t.offsetY=0,t.intersect=function(y){return nu(t,y)},{cluster:s,labelBBox:{}}},"divider"),PQe=Vce,OQe={rect:Vce,squareRect:PQe,roundedWithTitle:IQe,noteGroup:DQe,divider:NQe,kanbanSection:MQe,swimlane:zce},Wce=new Map,rf=o(async(e,t)=>{let r=t.shape||"rect",n=await OQe[r](e,t);return Wce.set(t.id,n),n},"insertCluster"),q4=o(()=>{Wce=new Map},"clear")});var ml,gO=F(()=>{"use strict";ml=o((e,t)=>{if(t)return"translate("+-e.width/2+", "+-e.height/2+")";let r=e.x??0,n=e.y??0;return"translate("+-(r+e.width/2)+", "+-(n+e.height/2)+")"},"computeLabelTransform")});function H4(e,t){if(e===void 0||t===void 0)return{angle:0,deltaX:0,deltaY:0};e=di(e),t=di(t);let[r,n]=[e.x,e.y],[i,a]=[t.x,t.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var Yi,yO,di,U4,Y4=F(()=>{"use strict";Yi={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4,arrow_barb:0,arrow_barb_neo:5.5},yO={arrow_point:4,arrow_cross:12.5,arrow_circle:12.5};o(H4,"calculateDeltaAndAngle");di=o(e=>Array.isArray(e)?{x:e[0],y:e[1]}:e,"pointTransformer"),U4=o(e=>({x:o(function(t,r,n){let i=0,a=di(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Yi,e.arrowTypeEnd)){let{angle:m,deltaX:g}=H4(n[n.length-1],n[n.length-2]);i=Yi[e.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(di(t).x-di(n[n.length-1]).x),l=Math.abs(di(t).y-di(n[n.length-1]).y),u=Math.abs(di(t).x-di(n[0]).x),h=Math.abs(di(t).y-di(n[0]).y),d=Yi[e.arrowTypeStart],f=Yi[e.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Yi,e.arrowTypeEnd)){let{angle:m,deltaY:g}=H4(n[n.length-1],n[n.length-2]);i=Yi[e.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(di(t).y-di(n[n.length-1]).y),l=Math.abs(di(t).x-di(n[n.length-1]).x),u=Math.abs(di(t).y-di(n[0]).y),h=Math.abs(di(t).x-di(n[0]).x),d=Yi[e.arrowTypeStart],f=Yi[e.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";vt();Hce=o((e,t,r,n,i,a=!1,s)=>{t.arrowTypeStart&&qce(e,"start",t.arrowTypeStart,r,n,i,a,s),t.arrowTypeEnd&&qce(e,"end",t.arrowTypeEnd,r,n,i,a,s)},"addEdgeMarkers"),BQe={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_barb_neo:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},$Qe=["cross","point","circle","lollipop","aggregation","extension","composition","dependency","barb"],qce=o((e,t,r,n,i,a,s=!1,l)=>{let u=BQe[r],h=u&&$Qe.includes(u.type);if(!u){Z.warn(`Unknown arrow type: ${r}`);return}let d=u.type,m=`${i}_${a}-${d}${t==="start"?"Start":"End"}${s&&h?"-margin":""}`;if(l&&l.trim()!==""){let g=l.replace(/[^\dA-Za-z]/g,"_"),y=`${m}_${g}`;if(!document.getElementById(y)){let v=document.getElementById(m);if(v){let x=v.cloneNode(!0);x.id=y,x.querySelectorAll("path, circle, line").forEach(T=>{T.setAttribute("stroke",l),u.fill&&T.setAttribute("fill",l)}),v.parentNode?.appendChild(x)}}e.attr(`marker-${t}`,`url(${n}#${y})`)}else e.attr(`marker-${t}`,`url(${n}#${m})`)},"addEdgeMarker")});function j4(e,t){Gr(Ae())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}function WQe(e){let t=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(t.push(a),r.push(n))}return{cornerPoints:t,cornerPointPositions:r}}function UQe(e,t){if(e.length<2)return"";let r="",n=e.length,i=1e-5;for(let a=0;a({...i}));if(e.length>=2&&Yi[t.arrowTypeStart]){let i=Yi[t.arrowTypeStart],a=e[0],s=e[1],{angle:l}=Xce(a,s),u=i*Math.cos(l),h=i*Math.sin(l);r[0].x=a.x+u,r[0].y=a.y+h}let n=e.length;if(n>=2&&Yi[t.arrowTypeEnd]){let i=Yi[t.arrowTypeEnd],a=e[n-1],s=e[n-2],{angle:l}=Xce(s,a),u=i*Math.cos(l),h=i*Math.sin(l);r[n-1].x=a.x-u,r[n-1].y=a.y-h}return r}var FQe,qy,_i,X4,z2,Rm,K4,zQe,GQe,VQe,Yce,jce,qQe,HQe,Hy,G2=F(()=>{"use strict";Xt();ur();vt();Ls();gO();Qt();Y4();Vy();$r();tr();G4();Uce();Jt();FQe=o(e=>typeof e=="string"?e:Ae()?.flowchart?.curve,"resolveEdgeCurveType"),qy=new Map,_i=new Map,X4=o(()=>{qy.clear(),_i.clear()},"clear"),z2=o(e=>e?typeof e=="string"?e:e.reduce((t,r)=>t+";"+r,""):"","getLabelStyles"),Rm=o(async(e,t)=>{let r=Ae(),n=Gr(r),{labelStyles:i}=ct(t);t.labelStyle=i;let a=e.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label").attr("data-id",t.id),l=t.labelType==="markdown",h=await Pn(e,t.label,{style:z2(t.labelStyle),useHtmlLabels:n,addSvgBackground:!0,isNode:!1,markdown:l,width:l?void 0:void 0},r);s.node().appendChild(h),Z.info("abc82",t,t.labelType);let d=h.getBBox(),f=d;if(n){let m=h.children[0],g=et(h);d=m.getBoundingClientRect(),f=d,g.attr("width",d.width),g.attr("height",d.height)}else{let m=et(h).select("text").node();m&&typeof m.getBBox=="function"&&(f=m.getBBox())}s.attr("transform",ml(f,n)),qy.set(t.id,a),t.width=d.width,t.height=d.height;let p;if(t.startLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(g,t.startLabelLeft,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).startLeft=m,j4(p,t.startLabelLeft)}if(t.startLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(g,t.startLabelRight,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).startRight=m,j4(p,t.startLabelRight)}if(t.endLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(m,t.endLabelLeft,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).endLeft=m,j4(p,t.endLabelLeft)}if(t.endLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(m,t.endLabelRight,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).endRight=m,j4(p,t.endLabelRight)}return h},"insertEdgeLabel");o(j4,"setTerminalWidth");K4=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,qy.get(e.id),t);let r=t.updatedPath?t.updatedPath:t.originalPath,n=Ae(),{subGraphTitleTotalMargin:i}=oc(n);if(e.label){let a=qy.get(e.id),s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e.startLabelLeft){let a=_i.get(e.id).startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=_i.get(e.id).startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=_i.get(e.id).endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=_i.get(e.id).endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),zQe=o((e,t)=>{if(!e?.isLabelEdge||!e?.id?.endsWith("-to-label")||!Array.isArray(t)||t.length!==2)return t;let[r,n]=t,i=Math.abs(n.x-r.x),a=Math.abs(n.y-r.y);return i<.001||a<.001?t:a>=i?[r,{x:r.x,y:n.y},n]:[r,{x:n.x,y:r.y},n]},"orthogonalizeToLabelClippedPoints"),GQe=o((e,t)=>{let r=e.x,n=e.y,i=Math.abs(t.x-r),a=Math.abs(t.y-n),s=e.width/2,l=e.height/2;return i>=s||a>=l},"outsideNode"),VQe=o((e,t,r)=>{Z.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,a=Math.abs(n-r.x),s=e.width/2,l=r.xMath.abs(n-t.x)*u){let f=r.y{Z.warn("abc88 cutPathAtIntersect",e,t);let r=[],n=e[0],i=!1;return e.forEach(a=>{if(Z.info("abc88 checking point",a,t),!GQe(t,a)&&!i){let s=VQe(t,n,a);Z.debug("abc88 inside",a,n,s),Z.debug("abc88 intersection",s,t);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Z.warn("abc88 no intersect",s,r):r.push(s),i=!0}else Z.warn("abc88 outside",a,n),n=a,i||r.push(a)}),Z.debug("returning points",r),r},"cutPathAtIntersect");o(WQe,"extractCornerPoints");jce=o(function(e,t,r){let n=t.x-e.x,i=t.y-e.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:t.x-s*n,y:t.y-s*i}},"findAdjacentPoint"),qQe=o(function(e){let{cornerPointPositions:t}=WQe(e),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){Z.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+f:l.x+m-f,y:d<0?l.y-f:l.y+f}:p={x:h<0?l.x-f:l.x+f,y:d<0?l.y-m+f:l.y+m-f}}else Z.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(e[n]);return r},"fixCorners"),HQe=o((e,t,r)=>{let n=e-t-r,i=2,a=2,s=i+a,l=Math.floor(n/s),u=Array(l).fill(`${i} ${a}`).join(" ");return`0 ${t} ${u} ${r}`},"generateDashArray"),Hy=o(function(e,t,r,n,i,a,s,l=!1){if(!s)throw new Error(`insertEdge: missing diagramId for edge "${t.id}" \u2014 edge IDs require a diagram prefix for uniqueness`);let{handDrawnSeed:u,layout:h}=Ae(),d=t.points,f=!1,p=i;var m=a;let g=[];for(let O in t.cssCompiledStyles)M2(O)||g.push(t.cssCompiledStyles[O]);if(h==="swimlane"){if(m.intersect&&p.intersect&&Array.isArray(d)&&d.length>=2)if(d.length===2)d=[p.intersect(d[0]),m.intersect(d[1])];else{let O=d.slice(1,-1),$=O[0],V=O[O.length-1],G=.5,z=Math.abs(d[d.length-1].x-V.x)!Number.isNaN(O.y)),x=FQe(t.curve);x!=="rounded"&&(v=qQe(v));let b=Jc;switch(x){case"linear":b=Jc;break;case"basis":b=rc;break;case"cardinal":b=e2;break;case"bumpX":b=Xb;break;case"bumpY":b=Kb;break;case"catmullRom":b=n2;break;case"monotoneX":b=i2;break;case"monotoneY":b=a2;break;case"natural":b=Ry;break;case"step":b=_y;break;case"stepAfter":b=o2;break;case"stepBefore":b=s2;break;case"rounded":b=Jc;break;default:b=rc}let{x:T,y:k}=U4(t),C=tc().x(T).y(k).curve(b),w;switch(t.thickness){case"normal":w="edge-thickness-normal";break;case"thick":w="edge-thickness-thick";break;case"invisible":w="edge-thickness-invisible";break;default:w="edge-thickness-normal"}switch(t.pattern){case"solid":w+=" edge-pattern-solid";break;case"dotted":w+=" edge-pattern-dotted";break;case"dashed":w+=" edge-pattern-dashed";break;default:w+=" edge-pattern-solid"}let S,R=x==="rounded"?UQe(YQe(v,t),5):C(v),L=Array.isArray(t.style)?t.style:[t.style],N=L.find(O=>O?.startsWith("stroke:")),I="";t.animate&&(I="edge-animation-fast"),t.animation&&(I="edge-animation-"+t.animation);let _=!1;if(t.look==="handDrawn"){let O=ut.svg(e);Object.assign([],v);let $=O.path(R,{roughness:.3,seed:u});w+=" transition",S=et($).select("path").attr("id",`${s}-${t.id}`).attr("class"," "+w+(t.classes?" "+t.classes:"")+(I?" "+I:"")).attr("style",L?L.reduce((G,z)=>G+";"+z,""):"");let V=S.attr("d");S.attr("d",V),e.node().appendChild(S.node())}else{let O=g.join(";"),$=L?L.reduce((j,Q)=>j+Q+";",""):"",V=(O?O+";"+$+";":$)+";"+(L?L.reduce((j,Q)=>j+";"+Q,""):"");S=e.append("path").attr("d",R).attr("id",`${s}-${t.id}`).attr("class"," "+w+(t.classes?" "+t.classes:"")+(I?" "+I:"")).attr("style",V),N=V.match(/stroke:([^;]+)/)?.[1],_=t.animate===!0||!!t.animation||O.includes("animation");let G=S.node(),z=typeof G.getTotalLength=="function"?G.getTotalLength():0,W=yO[t.arrowTypeStart]||0,H=yO[t.arrowTypeEnd]||0;if(t.look==="neo"&&!_){let Q=`stroke-dasharray: ${t.pattern==="dotted"||t.pattern==="dashed"?HQe(z,W,H):`0 ${W} ${z-W-H} ${H}`}; stroke-dashoffset: 0;`;S.attr("style",Q+S.attr("style"))}}S.attr("data-edge",!0),S.attr("data-et","edge"),S.attr("data-id",t.id),S.attr("data-points",y),S.attr("data-look",kn(t.look)),t.showPoints&&v.forEach(O=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",O.x).attr("cy",O.y)});let A="";(Ae().flowchart.arrowMarkerAbsolute||Ae().state.arrowMarkerAbsolute)&&(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,A=A.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Z.info("arrowTypeStart",t.arrowTypeStart),Z.info("arrowTypeEnd",t.arrowTypeEnd);let M=!_&&t?.look==="neo";Hce(S,t,A,s,n,M,N);let D=Math.floor(d.length/2),P=d[D];Zt.isLabelCoordinateInPath(P,S.attr("d"))||(f=!0);let B={};return f&&(B.updatedPath=d),B.originalPath=t.points,B},"insertEdge");o(UQe,"generateRoundedPath");o(Xce,"calculateDeltaAndAngle");o(YQe,"applyMarkerOffsetsToPoints")});var jQe,XQe,KQe,ZQe,QQe,JQe,eJe,tJe,rJe,nJe,iJe,aJe,sJe,oJe,lJe,cJe,uJe,hJe,dJe,fJe,pJe,mJe,gJe,yJe,Uy,Z4=F(()=>{"use strict";vt();ur();jQe=o((e,t,r,n)=>{t.forEach(i=>{yJe[i](e,r,n)})},"insertMarkers"),XQe=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),e.append("marker").attr("id",r+"_"+t+"-extensionStart-margin").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,7 18,13 18,1").style("stroke-width",2).style("stroke-dasharray","0"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd-margin").attr("class","marker extension "+t).attr("refX",9).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,1 10,13 18,7").style("stroke-width",2).style("stroke-dasharray","0")},"extension"),KQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart-margin").attr("class","marker composition "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("viewBox","0 0 15 15").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd-margin").attr("class","marker composition "+t).attr("refX",3.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),ZQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart-margin").attr("class","marker aggregation "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd-margin").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),QQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart-margin").attr("class","marker dependency "+t).attr("refX",4).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd-margin").attr("class","marker dependency "+t).attr("refX",16).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),JQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart-margin").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd-margin").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2)},"lollipop"),eJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",11.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",10.5).attr("markerHeight",14).attr("orient","auto").append("path").attr("d","M 0 0 L 11.5 7 L 0 14 z").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",1).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11.5).attr("markerHeight",14).attr("orient","auto").append("polygon").attr("points","0,7 11.5,14 11.5,0").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"point"),tJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refY",5).attr("refX",12.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-2).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"circle"),rJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossEnd-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",17.7).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5),e.append("marker").attr("id",r+"_"+t+"-crossStart-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",-3.5).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5).style("stroke-dasharray","1,0")},"cross"),nJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),iJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{transitionColor:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd-margin").attr("refX",17).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z").attr("fill",`${a}`)},"barbNeo"),aJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),sJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),oJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),lJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),cJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M9,0 L9,18 M15,0 L15,18").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M3,0 L3,18 M9,0 L9,18").attr("stroke-width",`${a}`)},"only_one_neo"),uJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a,mainBkg:s}=i,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse");l.append("circle").attr("fill",s??"white").attr("cx",21).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),l.append("path").attr("d","M9,0 L9,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("markerUnits","userSpaceOnUse").attr("orient","auto");u.append("circle").attr("fill",s??"white").attr("cx",9).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),u.append("path").attr("d","M21,0 L21,18").attr("stroke-width",`${a}`)},"zero_or_one_neo"),hJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18").attr("stroke-width",`${a}`)},"one_or_more_neo"),dJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a,mainBkg:s}=i,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto");l.append("circle").attr("fill",s??"white").attr("cx",45.5).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),l.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse");u.append("circle").attr("fill",s??"white").attr("cx",11).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),u.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18").attr("stroke-width",`${a}`)},"zero_or_more_neo"),fJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`)},"requirement_arrow"),pJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("stroke-width",`${a}`).attr("viewBox","0 0 25 20").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`).attr("stroke-linejoin","miter")},"requirement_arrow_neo"),mJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),gJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i,s=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("g");s.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),s.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),s.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10),s.selectAll("*").attr("stroke-width",`${a}`)},"requirement_contains_neo"),yJe={extension:XQe,composition:KQe,aggregation:ZQe,dependency:QQe,lollipop:JQe,point:eJe,circle:tJe,cross:rJe,barb:nJe,barbNeo:iJe,only_one:aJe,zero_or_one:sJe,one_or_more:oJe,zero_or_more:lJe,only_one_neo:cJe,zero_or_one_neo:uJe,one_or_more_neo:hJe,zero_or_more_neo:dJe,requirement_arrow:fJe,requirement_contains:mJe,requirement_arrow_neo:pJe,requirement_contains_neo:gJe},Uy=jQe});async function nf(e,t,r){let n,i;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let a=t.shape?pO[t.shape]:void 0;if(!a)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let s;r.config.securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",s??null),i=await a(n,t,r)}else i=await a(e,t,r),n=i;return n.attr("data-look",kn(t.look)),t.tooltip&&i.attr("title",t.tooltip),Q4.set(t.id,n),t.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var Q4,Kce,J4,_m,Lm=F(()=>{"use strict";vt();mO();Qt();Q4=new Map;o(nf,"insertNode");Kce=o((e,t)=>{Q4.set(t.id,e)},"setNodeElem"),J4=o(()=>{Q4.clear()},"clear"),_m=o(e=>{let t=Q4.get(e.id);Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode")});var Zce,Qce=F(()=>{"use strict";ur();Vr();vt();Wy();G2();Z4();Lm();Kt();Qt();Zce={common:xt,getConfig:_t,insertCluster:rf,insertEdge:Hy,insertEdgeLabel:Rm,insertMarkers:Uy,insertNode:nf,interpolateToCurve:lP,labelHelper:It,log:Z,positionEdgeLabel:K4}});var vJe,e3,vO=F(()=>{"use strict";vJe=typeof global=="object"&&global&&global.Object===Object&&global,e3=vJe});var xJe,bJe,Li,gl=F(()=>{"use strict";vO();xJe=typeof self=="object"&&self&&self.Object===Object&&self,bJe=e3||xJe||Function("return this")(),Li=bJe});var TJe,wa,Dm=F(()=>{"use strict";gl();TJe=Li.Symbol,wa=TJe});function kJe(e){var t=CJe.call(e,V2),r=e[V2];try{e[V2]=void 0;var n=!0}catch{}var i=wJe.call(e);return n&&(t?e[V2]=r:delete e[V2]),i}var Jce,CJe,wJe,V2,eue,tue=F(()=>{"use strict";Dm();Jce=Object.prototype,CJe=Jce.hasOwnProperty,wJe=Jce.toString,V2=wa?wa.toStringTag:void 0;o(kJe,"getRawTag");eue=kJe});function AJe(e){return EJe.call(e)}var SJe,EJe,rue,nue=F(()=>{"use strict";SJe=Object.prototype,EJe=SJe.toString;o(AJe,"objectToString");rue=AJe});function LJe(e){return e==null?e===void 0?_Je:RJe:iue&&iue in Object(e)?eue(e):rue(e)}var RJe,_Je,iue,Ds,af=F(()=>{"use strict";Dm();tue();nue();RJe="[object Null]",_Je="[object Undefined]",iue=wa?wa.toStringTag:void 0;o(LJe,"baseGetTag");Ds=LJe});function DJe(e){return e!=null&&typeof e=="object"}var Bi,lc=F(()=>{"use strict";o(DJe,"isObjectLike");Bi=DJe});function MJe(e){return typeof e=="symbol"||Bi(e)&&Ds(e)==IJe}var IJe,Go,Im=F(()=>{"use strict";af();lc();IJe="[object Symbol]";o(MJe,"isSymbol");Go=MJe});function NJe(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r{"use strict";o(NJe,"arrayMap");au=NJe});var PJe,Yr,ji=F(()=>{"use strict";PJe=Array.isArray,Yr=PJe});function oue(e){if(typeof e=="string")return e;if(Yr(e))return au(e,oue)+"";if(Go(e))return sue?sue.call(e):"";var t=e+"";return t=="0"&&1/e==-OJe?"-0":t}var OJe,aue,sue,lue,cue=F(()=>{"use strict";Dm();W2();ji();Im();OJe=1/0,aue=wa?wa.prototype:void 0,sue=aue?aue.toString:void 0;o(oue,"baseToString");lue=oue});function $Je(e){for(var t=e.length;t--&&BJe.test(e.charAt(t)););return t}var BJe,uue,hue=F(()=>{"use strict";BJe=/\s/;o($Je,"trimmedEndIndex");uue=$Je});function zJe(e){return e&&e.slice(0,uue(e)+1).replace(FJe,"")}var FJe,due,fue=F(()=>{"use strict";hue();FJe=/^\s+/;o(zJe,"baseTrim");due=zJe});function GJe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var fi,yl=F(()=>{"use strict";o(GJe,"isObject");fi=GJe});function UJe(e){if(typeof e=="number")return e;if(Go(e))return pue;if(fi(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=fi(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=due(e);var r=WJe.test(e);return r||qJe.test(e)?HJe(e.slice(2),r?2:8):VJe.test(e)?pue:+e}var pue,VJe,WJe,qJe,HJe,mue,gue=F(()=>{"use strict";fue();yl();Im();pue=NaN,VJe=/^[-+]0x[0-9a-f]+$/i,WJe=/^0b[01]+$/i,qJe=/^0o[0-7]+$/i,HJe=parseInt;o(UJe,"toNumber");mue=UJe});function jJe(e){if(!e)return e===0?e:0;if(e=mue(e),e===yue||e===-yue){var t=e<0?-1:1;return t*YJe}return e===e?e:0}var yue,YJe,Yy,xO=F(()=>{"use strict";gue();yue=1/0,YJe=17976931348623157e292;o(jJe,"toFinite");Yy=jJe});function XJe(e){var t=Yy(e),r=t%1;return t===t?r?t-r:t:0}var vue,xue=F(()=>{"use strict";xO();o(XJe,"toInteger");vue=XJe});function KJe(e){return e}var ao,sf=F(()=>{"use strict";o(KJe,"identity");ao=KJe});function tet(e){if(!fi(e))return!1;var t=Ds(e);return t==QJe||t==JJe||t==ZJe||t==eet}var ZJe,QJe,JJe,eet,su,q2=F(()=>{"use strict";af();yl();ZJe="[object AsyncFunction]",QJe="[object Function]",JJe="[object GeneratorFunction]",eet="[object Proxy]";o(tet,"isFunction");su=tet});var ret,t3,bue=F(()=>{"use strict";gl();ret=Li["__core-js_shared__"],t3=ret});function net(e){return!!Tue&&Tue in e}var Tue,Cue,wue=F(()=>{"use strict";bue();Tue=(function(){var e=/[^.]+$/.exec(t3&&t3.keys&&t3.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(net,"isMasked");Cue=net});function set(e){if(e!=null){try{return aet.call(e)}catch{}try{return e+""}catch{}}return""}var iet,aet,kh,bO=F(()=>{"use strict";iet=Function.prototype,aet=iet.toString;o(set,"toSource");kh=set});function met(e){if(!fi(e)||Cue(e))return!1;var t=su(e)?pet:cet;return t.test(kh(e))}var oet,cet,uet,het,det,fet,pet,kue,Sue=F(()=>{"use strict";q2();wue();yl();bO();oet=/[\\^$.*+?()[\]{}|]/g,cet=/^\[object .+?Constructor\]$/,uet=Function.prototype,het=Object.prototype,det=uet.toString,fet=het.hasOwnProperty,pet=RegExp("^"+det.call(fet).replace(oet,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(met,"baseIsNative");kue=met});function get(e,t){return e?.[t]}var Eue,Aue=F(()=>{"use strict";o(get,"getValue");Eue=get});function yet(e,t){var r=Eue(e,t);return kue(r)?r:void 0}var so,of=F(()=>{"use strict";Sue();Aue();o(yet,"getNative");so=yet});var vet,r3,Rue=F(()=>{"use strict";of();gl();vet=so(Li,"WeakMap"),r3=vet});var _ue,xet,Lue,Due=F(()=>{"use strict";yl();_ue=Object.create,xet=(function(){function e(){}return o(e,"object"),function(t){if(!fi(t))return{};if(_ue)return _ue(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),Lue=xet});function bet(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Iue,Mue=F(()=>{"use strict";o(bet,"apply");Iue=bet});function Tet(){}var Nue,Pue=F(()=>{"use strict";o(Tet,"noop");Nue=Tet});function Cet(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r{"use strict";o(Cet,"copyArray");n3=Cet});function Aet(e){var t=0,r=0;return function(){var n=Eet(),i=ket-(n-r);if(r=n,i>0){if(++t>=wet)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var wet,ket,Eet,Oue,Bue=F(()=>{"use strict";wet=800,ket=16,Eet=Date.now;o(Aet,"shortOut");Oue=Aet});function Ret(e){return function(){return e}}var oo,CO=F(()=>{"use strict";o(Ret,"constant");oo=Ret});var _et,jy,wO=F(()=>{"use strict";of();_et=(function(){try{var e=so(Object,"defineProperty");return e({},"",{}),e}catch{}})(),jy=_et});var Let,$ue,Fue=F(()=>{"use strict";CO();wO();sf();Let=jy?function(e,t){return jy(e,"toString",{configurable:!0,enumerable:!1,value:oo(t),writable:!0})}:ao,$ue=Let});var Det,i3,kO=F(()=>{"use strict";Fue();Bue();Det=Oue($ue),i3=Det});function Iet(e,t){for(var r=-1,n=e==null?0:e.length;++r{"use strict";o(Iet,"arrayEach");a3=Iet});function Met(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(Met,"baseFindIndex");s3=Met});function Net(e){return e!==e}var zue,Gue=F(()=>{"use strict";o(Net,"baseIsNaN");zue=Net});function Pet(e,t,r){for(var n=r-1,i=e.length;++n{"use strict";o(Pet,"strictIndexOf");Vue=Pet});function Oet(e,t,r){return t===t?Vue(e,t,r):s3(e,zue,r)}var que,Hue=F(()=>{"use strict";EO();Gue();Wue();o(Oet,"baseIndexOf");que=Oet});function Bet(e,t){var r=e==null?0:e.length;return!!r&&que(e,t,0)>-1}var Uue,Yue=F(()=>{"use strict";Hue();o(Bet,"arrayIncludes");Uue=Bet});function zet(e,t){var r=typeof e;return t=t??$et,!!t&&(r=="number"||r!="symbol"&&Fet.test(e))&&e>-1&&e%1==0&&e{"use strict";$et=9007199254740991,Fet=/^(?:0|[1-9]\d*)$/;o(zet,"isIndex");lf=zet});function Get(e,t,r){t=="__proto__"&&jy?jy(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var cf,U2=F(()=>{"use strict";wO();o(Get,"baseAssignValue");cf=Get});function Vet(e,t){return e===t||e!==e&&t!==t}var vl,Mm=F(()=>{"use strict";o(Vet,"eq");vl=Vet});function Het(e,t,r){var n=e[t];(!(qet.call(e,t)&&vl(n,r))||r===void 0&&!(t in e))&&cf(e,t,r)}var Wet,qet,uf,Y2=F(()=>{"use strict";U2();Mm();Wet=Object.prototype,qet=Wet.hasOwnProperty;o(Het,"assignValue");uf=Het});function Uet(e,t,r,n){var i=!r;r||(r={});for(var a=-1,s=t.length;++a{"use strict";Y2();U2();o(Uet,"copyObject");ou=Uet});function Yet(e,t,r){return t=jue(t===void 0?e.length-1:t,0),function(){for(var n=arguments,i=-1,a=jue(n.length-t,0),s=Array(a);++i{"use strict";Mue();jue=Math.max;o(Yet,"overRest");o3=Yet});function jet(e,t){return i3(o3(e,t,ao),e+"")}var hf,j2=F(()=>{"use strict";sf();AO();kO();o(jet,"baseRest");hf=jet});function Ket(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Xet}var Xet,Ky,l3=F(()=>{"use strict";Xet=9007199254740991;o(Ket,"isLength");Ky=Ket});function Zet(e){return e!=null&&Ky(e.length)&&!su(e)}var ka,lu=F(()=>{"use strict";q2();l3();o(Zet,"isArrayLike");ka=Zet});function Qet(e,t,r){if(!fi(r))return!1;var n=typeof t;return(n=="number"?ka(r)&&lf(t,r.length):n=="string"&&t in r)?vl(r[t],e):!1}var Sh,X2=F(()=>{"use strict";Mm();lu();H2();yl();o(Qet,"isIterateeCall");Sh=Qet});function Jet(e){return hf(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,s&&Sh(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++n{"use strict";j2();X2();o(Jet,"createAssigner");Xue=Jet});function ttt(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||ett;return e===r}var ett,df,K2=F(()=>{"use strict";ett=Object.prototype;o(ttt,"isPrototype");df=ttt});function rtt(e,t){for(var r=-1,n=Array(e);++r{"use strict";o(rtt,"baseTimes");Zue=rtt});function itt(e){return Bi(e)&&Ds(e)==ntt}var ntt,RO,Jue=F(()=>{"use strict";af();lc();ntt="[object Arguments]";o(itt,"baseIsArguments");RO=itt});var ehe,att,stt,ott,cc,Zy=F(()=>{"use strict";Jue();lc();ehe=Object.prototype,att=ehe.hasOwnProperty,stt=ehe.propertyIsEnumerable,ott=RO((function(){return arguments})())?RO:function(e){return Bi(e)&&att.call(e,"callee")&&!stt.call(e,"callee")},cc=ott});function ltt(){return!1}var the,rhe=F(()=>{"use strict";o(ltt,"stubFalse");the=ltt});var ahe,nhe,ctt,ihe,utt,htt,uc,Qy=F(()=>{"use strict";gl();rhe();ahe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,nhe=ahe&&typeof module=="object"&&module&&!module.nodeType&&module,ctt=nhe&&nhe.exports===ahe,ihe=ctt?Li.Buffer:void 0,utt=ihe?ihe.isBuffer:void 0,htt=utt||the,uc=htt});function Ott(e){return Bi(e)&&Ky(e.length)&&!!ai[Ds(e)]}var dtt,ftt,ptt,mtt,gtt,ytt,vtt,xtt,btt,Ttt,Ctt,wtt,ktt,Stt,Ett,Att,Rtt,_tt,Ltt,Dtt,Itt,Mtt,Ntt,Ptt,ai,she,ohe=F(()=>{"use strict";af();l3();lc();dtt="[object Arguments]",ftt="[object Array]",ptt="[object Boolean]",mtt="[object Date]",gtt="[object Error]",ytt="[object Function]",vtt="[object Map]",xtt="[object Number]",btt="[object Object]",Ttt="[object RegExp]",Ctt="[object Set]",wtt="[object String]",ktt="[object WeakMap]",Stt="[object ArrayBuffer]",Ett="[object DataView]",Att="[object Float32Array]",Rtt="[object Float64Array]",_tt="[object Int8Array]",Ltt="[object Int16Array]",Dtt="[object Int32Array]",Itt="[object Uint8Array]",Mtt="[object Uint8ClampedArray]",Ntt="[object Uint16Array]",Ptt="[object Uint32Array]",ai={};ai[Att]=ai[Rtt]=ai[_tt]=ai[Ltt]=ai[Dtt]=ai[Itt]=ai[Mtt]=ai[Ntt]=ai[Ptt]=!0;ai[dtt]=ai[ftt]=ai[Stt]=ai[ptt]=ai[Ett]=ai[mtt]=ai[gtt]=ai[ytt]=ai[vtt]=ai[xtt]=ai[btt]=ai[Ttt]=ai[Ctt]=ai[wtt]=ai[ktt]=!1;o(Ott,"baseIsTypedArray");she=Ott});function Btt(e){return function(t){return e(t)}}var ff,Z2=F(()=>{"use strict";o(Btt,"baseUnary");ff=Btt});var lhe,Q2,$tt,_O,Ftt,Eh,c3=F(()=>{"use strict";vO();lhe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Q2=lhe&&typeof module=="object"&&module&&!module.nodeType&&module,$tt=Q2&&Q2.exports===lhe,_O=$tt&&e3.process,Ftt=(function(){try{var e=Q2&&Q2.require&&Q2.require("util").types;return e||_O&&_O.binding&&_O.binding("util")}catch{}})(),Eh=Ftt});var che,ztt,pf,J2=F(()=>{"use strict";ohe();Z2();c3();che=Eh&&Eh.isTypedArray,ztt=che?ff(che):she,pf=ztt});function Wtt(e,t){var r=Yr(e),n=!r&&cc(e),i=!r&&!n&&uc(e),a=!r&&!n&&!i&&pf(e),s=r||n||i||a,l=s?Zue(e.length,String):[],u=l.length;for(var h in e)(t||Vtt.call(e,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||lf(h,u)))&&l.push(h);return l}var Gtt,Vtt,u3,LO=F(()=>{"use strict";Que();Zy();ji();Qy();H2();J2();Gtt=Object.prototype,Vtt=Gtt.hasOwnProperty;o(Wtt,"arrayLikeKeys");u3=Wtt});function qtt(e,t){return function(r){return e(t(r))}}var h3,DO=F(()=>{"use strict";o(qtt,"overArg");h3=qtt});var Htt,uhe,hhe=F(()=>{"use strict";DO();Htt=h3(Object.keys,Object),uhe=Htt});function jtt(e){if(!df(e))return uhe(e);var t=[];for(var r in Object(e))Ytt.call(e,r)&&r!="constructor"&&t.push(r);return t}var Utt,Ytt,Jy,d3=F(()=>{"use strict";K2();hhe();Utt=Object.prototype,Ytt=Utt.hasOwnProperty;o(jtt,"baseKeys");Jy=jtt});function Xtt(e){return ka(e)?u3(e):Jy(e)}var Di,Ah=F(()=>{"use strict";LO();d3();lu();o(Xtt,"keys");Di=Xtt});function Ktt(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}var dhe,fhe=F(()=>{"use strict";o(Ktt,"nativeKeysIn");dhe=Ktt});function Jtt(e){if(!fi(e))return dhe(e);var t=df(e),r=[];for(var n in e)n=="constructor"&&(t||!Qtt.call(e,n))||r.push(n);return r}var Ztt,Qtt,phe,mhe=F(()=>{"use strict";yl();K2();fhe();Ztt=Object.prototype,Qtt=Ztt.hasOwnProperty;o(Jtt,"baseKeysIn");phe=Jtt});function ert(e){return ka(e)?u3(e,!0):phe(e)}var lo,mf=F(()=>{"use strict";LO();mhe();lu();o(ert,"keysIn");lo=ert});function nrt(e,t){if(Yr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Go(e)?!0:rrt.test(e)||!trt.test(e)||t!=null&&e in Object(t)}var trt,rrt,e1,f3=F(()=>{"use strict";ji();Im();trt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rrt=/^\w*$/;o(nrt,"isKey");e1=nrt});var irt,Rh,eT=F(()=>{"use strict";of();irt=so(Object,"create"),Rh=irt});function art(){this.__data__=Rh?Rh(null):{},this.size=0}var ghe,yhe=F(()=>{"use strict";eT();o(art,"hashClear");ghe=art});function srt(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var vhe,xhe=F(()=>{"use strict";o(srt,"hashDelete");vhe=srt});function urt(e){var t=this.__data__;if(Rh){var r=t[e];return r===ort?void 0:r}return crt.call(t,e)?t[e]:void 0}var ort,lrt,crt,bhe,The=F(()=>{"use strict";eT();ort="__lodash_hash_undefined__",lrt=Object.prototype,crt=lrt.hasOwnProperty;o(urt,"hashGet");bhe=urt});function frt(e){var t=this.__data__;return Rh?t[e]!==void 0:drt.call(t,e)}var hrt,drt,Che,whe=F(()=>{"use strict";eT();hrt=Object.prototype,drt=hrt.hasOwnProperty;o(frt,"hashHas");Che=frt});function mrt(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Rh&&t===void 0?prt:t,this}var prt,khe,She=F(()=>{"use strict";eT();prt="__lodash_hash_undefined__";o(mrt,"hashSet");khe=mrt});function t1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t{"use strict";yhe();xhe();The();whe();She();o(t1,"Hash");t1.prototype.clear=ghe;t1.prototype.delete=vhe;t1.prototype.get=bhe;t1.prototype.has=Che;t1.prototype.set=khe;IO=t1});function grt(){this.__data__=[],this.size=0}var Ahe,Rhe=F(()=>{"use strict";o(grt,"listCacheClear");Ahe=grt});function yrt(e,t){for(var r=e.length;r--;)if(vl(e[r][0],t))return r;return-1}var gf,tT=F(()=>{"use strict";Mm();o(yrt,"assocIndexOf");gf=yrt});function brt(e){var t=this.__data__,r=gf(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():xrt.call(t,r,1),--this.size,!0}var vrt,xrt,_he,Lhe=F(()=>{"use strict";tT();vrt=Array.prototype,xrt=vrt.splice;o(brt,"listCacheDelete");_he=brt});function Trt(e){var t=this.__data__,r=gf(t,e);return r<0?void 0:t[r][1]}var Dhe,Ihe=F(()=>{"use strict";tT();o(Trt,"listCacheGet");Dhe=Trt});function Crt(e){return gf(this.__data__,e)>-1}var Mhe,Nhe=F(()=>{"use strict";tT();o(Crt,"listCacheHas");Mhe=Crt});function wrt(e,t){var r=this.__data__,n=gf(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Phe,Ohe=F(()=>{"use strict";tT();o(wrt,"listCacheSet");Phe=wrt});function r1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t{"use strict";Rhe();Lhe();Ihe();Nhe();Ohe();o(r1,"ListCache");r1.prototype.clear=Ahe;r1.prototype.delete=_he;r1.prototype.get=Dhe;r1.prototype.has=Mhe;r1.prototype.set=Phe;yf=r1});var krt,vf,p3=F(()=>{"use strict";of();gl();krt=so(Li,"Map"),vf=krt});function Srt(){this.size=0,this.__data__={hash:new IO,map:new(vf||yf),string:new IO}}var Bhe,$he=F(()=>{"use strict";Ehe();rT();p3();o(Srt,"mapCacheClear");Bhe=Srt});function Ert(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Fhe,zhe=F(()=>{"use strict";o(Ert,"isKeyable");Fhe=Ert});function Art(e,t){var r=e.__data__;return Fhe(t)?r[typeof t=="string"?"string":"hash"]:r.map}var xf,nT=F(()=>{"use strict";zhe();o(Art,"getMapData");xf=Art});function Rrt(e){var t=xf(this,e).delete(e);return this.size-=t?1:0,t}var Ghe,Vhe=F(()=>{"use strict";nT();o(Rrt,"mapCacheDelete");Ghe=Rrt});function _rt(e){return xf(this,e).get(e)}var Whe,qhe=F(()=>{"use strict";nT();o(_rt,"mapCacheGet");Whe=_rt});function Lrt(e){return xf(this,e).has(e)}var Hhe,Uhe=F(()=>{"use strict";nT();o(Lrt,"mapCacheHas");Hhe=Lrt});function Drt(e,t){var r=xf(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var Yhe,jhe=F(()=>{"use strict";nT();o(Drt,"mapCacheSet");Yhe=Drt});function n1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t{"use strict";$he();Vhe();qhe();Uhe();jhe();o(n1,"MapCache");n1.prototype.clear=Bhe;n1.prototype.delete=Ghe;n1.prototype.get=Whe;n1.prototype.has=Hhe;n1.prototype.set=Yhe;Nm=n1});function MO(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Irt);var r=o(function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(MO.Cache||Nm),r}var Irt,Xhe,Khe=F(()=>{"use strict";m3();Irt="Expected a function";o(MO,"memoize");MO.Cache=Nm;Xhe=MO});function Nrt(e){var t=Xhe(e,function(n){return r.size===Mrt&&r.clear(),n}),r=t.cache;return t}var Mrt,Zhe,Qhe=F(()=>{"use strict";Khe();Mrt=500;o(Nrt,"memoizeCapped");Zhe=Nrt});var Prt,Ort,Brt,Jhe,ede=F(()=>{"use strict";Qhe();Prt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ort=/\\(\\)?/g,Brt=Zhe(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Prt,function(r,n,i,a){t.push(i?a.replace(Ort,"$1"):n||r)}),t}),Jhe=Brt});function $rt(e){return e==null?"":lue(e)}var g3,NO=F(()=>{"use strict";cue();o($rt,"toString");g3=$rt});function Frt(e,t){return Yr(e)?e:e1(e,t)?[e]:Jhe(g3(e))}var bf,iT=F(()=>{"use strict";ji();f3();ede();NO();o(Frt,"castPath");bf=Frt});function Grt(e){if(typeof e=="string"||Go(e))return e;var t=e+"";return t=="0"&&1/e==-zrt?"-0":t}var zrt,cu,i1=F(()=>{"use strict";Im();zrt=1/0;o(Grt,"toKey");cu=Grt});function Vrt(e,t){t=bf(t,e);for(var r=0,n=t.length;e!=null&&r{"use strict";iT();i1();o(Vrt,"baseGet");Tf=Vrt});function Wrt(e,t,r){var n=e==null?void 0:Tf(e,t);return n===void 0?r:n}var tde,rde=F(()=>{"use strict";aT();o(Wrt,"get");tde=Wrt});function qrt(e,t){for(var r=-1,n=t.length,i=e.length;++r{"use strict";o(qrt,"arrayPush");a1=qrt});function Hrt(e){return Yr(e)||cc(e)||!!(nde&&e&&e[nde])}var nde,ide,ade=F(()=>{"use strict";Dm();Zy();ji();nde=wa?wa.isConcatSpreadable:void 0;o(Hrt,"isFlattenable");ide=Hrt});function sde(e,t,r,n,i){var a=-1,s=e.length;for(r||(r=ide),i||(i=[]);++a0&&r(l)?t>1?sde(l,t-1,r,n,i):a1(i,l):n||(i[i.length]=l)}return i}var s1,v3=F(()=>{"use strict";y3();ade();o(sde,"baseFlatten");s1=sde});function Urt(e){var t=e==null?0:e.length;return t?s1(e,1):[]}var xl,PO=F(()=>{"use strict";v3();o(Urt,"flatten");xl=Urt});function Yrt(e){return i3(o3(e,void 0,xl),e+"")}var ode,lde=F(()=>{"use strict";PO();AO();kO();o(Yrt,"flatRest");ode=Yrt});var jrt,o1,x3=F(()=>{"use strict";DO();jrt=h3(Object.getPrototypeOf,Object),o1=jrt});function ent(e){if(!Bi(e)||Ds(e)!=Xrt)return!1;var t=o1(e);if(t===null)return!0;var r=Qrt.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&cde.call(r)==Jrt}var Xrt,Krt,Zrt,cde,Qrt,Jrt,ude,hde=F(()=>{"use strict";af();x3();lc();Xrt="[object Object]",Krt=Function.prototype,Zrt=Object.prototype,cde=Krt.toString,Qrt=Zrt.hasOwnProperty,Jrt=cde.call(Object);o(ent,"isPlainObject");ude=ent});function cnt(e){return lnt.test(e)}var tnt,rnt,nnt,int,ant,snt,ont,lnt,dde,fde=F(()=>{"use strict";tnt="\\ud800-\\udfff",rnt="\\u0300-\\u036f",nnt="\\ufe20-\\ufe2f",int="\\u20d0-\\u20ff",ant=rnt+nnt+int,snt="\\ufe0e\\ufe0f",ont="\\u200d",lnt=RegExp("["+ont+tnt+ant+snt+"]");o(cnt,"hasUnicode");dde=cnt});function unt(e,t,r,n){var i=-1,a=e==null?0:e.length;for(n&&a&&(r=e[++i]);++i{"use strict";o(unt,"arrayReduce");pde=unt});function hnt(){this.__data__=new yf,this.size=0}var gde,yde=F(()=>{"use strict";rT();o(hnt,"stackClear");gde=hnt});function dnt(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var vde,xde=F(()=>{"use strict";o(dnt,"stackDelete");vde=dnt});function fnt(e){return this.__data__.get(e)}var bde,Tde=F(()=>{"use strict";o(fnt,"stackGet");bde=fnt});function pnt(e){return this.__data__.has(e)}var Cde,wde=F(()=>{"use strict";o(pnt,"stackHas");Cde=pnt});function gnt(e,t){var r=this.__data__;if(r instanceof yf){var n=r.__data__;if(!vf||n.length{"use strict";rT();p3();m3();mnt=200;o(gnt,"stackSet");kde=gnt});function l1(e){var t=this.__data__=new yf(e);this.size=t.size}var uu,sT=F(()=>{"use strict";rT();yde();xde();Tde();wde();Sde();o(l1,"Stack");l1.prototype.clear=gde;l1.prototype.delete=vde;l1.prototype.get=bde;l1.prototype.has=Cde;l1.prototype.set=kde;uu=l1});function ynt(e,t){return e&&ou(t,Di(t),e)}var Ede,Ade=F(()=>{"use strict";Xy();Ah();o(ynt,"baseAssign");Ede=ynt});function vnt(e,t){return e&&ou(t,lo(t),e)}var Rde,_de=F(()=>{"use strict";Xy();mf();o(vnt,"baseAssignIn");Rde=vnt});function bnt(e,t){if(t)return e.slice();var r=e.length,n=Ide?Ide(r):new e.constructor(r);return e.copy(n),n}var Mde,Lde,xnt,Dde,Ide,b3,OO=F(()=>{"use strict";gl();Mde=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Lde=Mde&&typeof module=="object"&&module&&!module.nodeType&&module,xnt=Lde&&Lde.exports===Mde,Dde=xnt?Li.Buffer:void 0,Ide=Dde?Dde.allocUnsafe:void 0;o(bnt,"cloneBuffer");b3=bnt});function Tnt(e,t){for(var r=-1,n=e==null?0:e.length,i=0,a=[];++r{"use strict";o(Tnt,"arrayFilter");T3=Tnt});function Cnt(){return[]}var C3,$O=F(()=>{"use strict";o(Cnt,"stubArray");C3=Cnt});var wnt,knt,Nde,Snt,c1,w3=F(()=>{"use strict";BO();$O();wnt=Object.prototype,knt=wnt.propertyIsEnumerable,Nde=Object.getOwnPropertySymbols,Snt=Nde?function(e){return e==null?[]:(e=Object(e),T3(Nde(e),function(t){return knt.call(e,t)}))}:C3,c1=Snt});function Ent(e,t){return ou(e,c1(e),t)}var Pde,Ode=F(()=>{"use strict";Xy();w3();o(Ent,"copySymbols");Pde=Ent});var Ant,Rnt,k3,FO=F(()=>{"use strict";y3();x3();w3();$O();Ant=Object.getOwnPropertySymbols,Rnt=Ant?function(e){for(var t=[];e;)a1(t,c1(e)),e=o1(e);return t}:C3,k3=Rnt});function _nt(e,t){return ou(e,k3(e),t)}var Bde,$de=F(()=>{"use strict";Xy();FO();o(_nt,"copySymbolsIn");Bde=_nt});function Lnt(e,t,r){var n=t(e);return Yr(e)?n:a1(n,r(e))}var S3,zO=F(()=>{"use strict";y3();ji();o(Lnt,"baseGetAllKeys");S3=Lnt});function Dnt(e){return S3(e,Di,c1)}var oT,GO=F(()=>{"use strict";zO();w3();Ah();o(Dnt,"getAllKeys");oT=Dnt});function Int(e){return S3(e,lo,k3)}var Fde,zde=F(()=>{"use strict";zO();FO();mf();o(Int,"getAllKeysIn");Fde=Int});var Mnt,E3,Gde=F(()=>{"use strict";of();gl();Mnt=so(Li,"DataView"),E3=Mnt});var Nnt,A3,Vde=F(()=>{"use strict";of();gl();Nnt=so(Li,"Promise"),A3=Nnt});var Pnt,Cf,VO=F(()=>{"use strict";of();gl();Pnt=so(Li,"Set"),Cf=Pnt});var Wde,Ont,qde,Hde,Ude,Yde,Bnt,$nt,Fnt,znt,Gnt,Pm,Vo,Om=F(()=>{"use strict";Gde();p3();Vde();VO();Rue();af();bO();Wde="[object Map]",Ont="[object Object]",qde="[object Promise]",Hde="[object Set]",Ude="[object WeakMap]",Yde="[object DataView]",Bnt=kh(E3),$nt=kh(vf),Fnt=kh(A3),znt=kh(Cf),Gnt=kh(r3),Pm=Ds;(E3&&Pm(new E3(new ArrayBuffer(1)))!=Yde||vf&&Pm(new vf)!=Wde||A3&&Pm(A3.resolve())!=qde||Cf&&Pm(new Cf)!=Hde||r3&&Pm(new r3)!=Ude)&&(Pm=o(function(e){var t=Ds(e),r=t==Ont?e.constructor:void 0,n=r?kh(r):"";if(n)switch(n){case Bnt:return Yde;case $nt:return Wde;case Fnt:return qde;case znt:return Hde;case Gnt:return Ude}return t},"getTag"));Vo=Pm});function qnt(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Wnt.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var Vnt,Wnt,jde,Xde=F(()=>{"use strict";Vnt=Object.prototype,Wnt=Vnt.hasOwnProperty;o(qnt,"initCloneArray");jde=qnt});var Hnt,u1,WO=F(()=>{"use strict";gl();Hnt=Li.Uint8Array,u1=Hnt});function Unt(e){var t=new e.constructor(e.byteLength);return new u1(t).set(new u1(e)),t}var h1,R3=F(()=>{"use strict";WO();o(Unt,"cloneArrayBuffer");h1=Unt});function Ynt(e,t){var r=t?h1(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}var Kde,Zde=F(()=>{"use strict";R3();o(Ynt,"cloneDataView");Kde=Ynt});function Xnt(e){var t=new e.constructor(e.source,jnt.exec(e));return t.lastIndex=e.lastIndex,t}var jnt,Qde,Jde=F(()=>{"use strict";jnt=/\w*$/;o(Xnt,"cloneRegExp");Qde=Xnt});function Knt(e){return tfe?Object(tfe.call(e)):{}}var efe,tfe,rfe,nfe=F(()=>{"use strict";Dm();efe=wa?wa.prototype:void 0,tfe=efe?efe.valueOf:void 0;o(Knt,"cloneSymbol");rfe=Knt});function Znt(e,t){var r=t?h1(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}var _3,qO=F(()=>{"use strict";R3();o(Znt,"cloneTypedArray");_3=Znt});function yit(e,t,r){var n=e.constructor;switch(t){case sit:return h1(e);case Qnt:case Jnt:return new n(+e);case oit:return Kde(e,r);case lit:case cit:case uit:case hit:case dit:case fit:case pit:case mit:case git:return _3(e,r);case eit:return new n;case tit:case iit:return new n(e);case rit:return Qde(e);case nit:return new n;case ait:return rfe(e)}}var Qnt,Jnt,eit,tit,rit,nit,iit,ait,sit,oit,lit,cit,uit,hit,dit,fit,pit,mit,git,ife,afe=F(()=>{"use strict";R3();Zde();Jde();nfe();qO();Qnt="[object Boolean]",Jnt="[object Date]",eit="[object Map]",tit="[object Number]",rit="[object RegExp]",nit="[object Set]",iit="[object String]",ait="[object Symbol]",sit="[object ArrayBuffer]",oit="[object DataView]",lit="[object Float32Array]",cit="[object Float64Array]",uit="[object Int8Array]",hit="[object Int16Array]",dit="[object Int32Array]",fit="[object Uint8Array]",pit="[object Uint8ClampedArray]",mit="[object Uint16Array]",git="[object Uint32Array]";o(yit,"initCloneByTag");ife=yit});function vit(e){return typeof e.constructor=="function"&&!df(e)?Lue(o1(e)):{}}var L3,HO=F(()=>{"use strict";Due();x3();K2();o(vit,"initCloneObject");L3=vit});function bit(e){return Bi(e)&&Vo(e)==xit}var xit,sfe,ofe=F(()=>{"use strict";Om();lc();xit="[object Map]";o(bit,"baseIsMap");sfe=bit});var lfe,Tit,cfe,ufe=F(()=>{"use strict";ofe();Z2();c3();lfe=Eh&&Eh.isMap,Tit=lfe?ff(lfe):sfe,cfe=Tit});function wit(e){return Bi(e)&&Vo(e)==Cit}var Cit,hfe,dfe=F(()=>{"use strict";Om();lc();Cit="[object Set]";o(wit,"baseIsSet");hfe=wit});var ffe,kit,pfe,mfe=F(()=>{"use strict";dfe();Z2();c3();ffe=Eh&&Eh.isSet,kit=ffe?ff(ffe):hfe,pfe=kit});function D3(e,t,r,n,i,a){var s,l=t&Sit,u=t&Eit,h=t&Ait;if(r&&(s=i?r(e,n,i,a):r(e)),s!==void 0)return s;if(!fi(e))return e;var d=Yr(e);if(d){if(s=jde(e),!l)return n3(e,s)}else{var f=Vo(e),p=f==yfe||f==Iit;if(uc(e))return b3(e,l);if(f==vfe||f==gfe||p&&!i){if(s=u||p?{}:L3(e),!l)return u?Bde(e,Rde(s,e)):Pde(e,Ede(s,e))}else{if(!jn[f])return i?e:{};s=ife(e,f,l)}}a||(a=new uu);var m=a.get(e);if(m)return m;a.set(e,s),pfe(e)?e.forEach(function(v){s.add(D3(v,t,r,v,e,a))}):cfe(e)&&e.forEach(function(v,x){s.set(x,D3(v,t,r,x,e,a))});var g=h?u?Fde:oT:u?lo:Di,y=d?void 0:g(e);return a3(y||e,function(v,x){y&&(x=v,v=e[x]),uf(s,x,D3(v,t,r,x,e,a))}),s}var Sit,Eit,Ait,gfe,Rit,_it,Lit,Dit,yfe,Iit,Mit,Nit,vfe,Pit,Oit,Bit,$it,Fit,zit,Git,Vit,Wit,qit,Hit,Uit,Yit,jit,Xit,Kit,jn,I3,UO=F(()=>{"use strict";sT();SO();Y2();Ade();_de();OO();TO();Ode();$de();GO();zde();Om();Xde();afe();HO();ji();Qy();ufe();yl();mfe();Ah();mf();Sit=1,Eit=2,Ait=4,gfe="[object Arguments]",Rit="[object Array]",_it="[object Boolean]",Lit="[object Date]",Dit="[object Error]",yfe="[object Function]",Iit="[object GeneratorFunction]",Mit="[object Map]",Nit="[object Number]",vfe="[object Object]",Pit="[object RegExp]",Oit="[object Set]",Bit="[object String]",$it="[object Symbol]",Fit="[object WeakMap]",zit="[object ArrayBuffer]",Git="[object DataView]",Vit="[object Float32Array]",Wit="[object Float64Array]",qit="[object Int8Array]",Hit="[object Int16Array]",Uit="[object Int32Array]",Yit="[object Uint8Array]",jit="[object Uint8ClampedArray]",Xit="[object Uint16Array]",Kit="[object Uint32Array]",jn={};jn[gfe]=jn[Rit]=jn[zit]=jn[Git]=jn[_it]=jn[Lit]=jn[Vit]=jn[Wit]=jn[qit]=jn[Hit]=jn[Uit]=jn[Mit]=jn[Nit]=jn[vfe]=jn[Pit]=jn[Oit]=jn[Bit]=jn[$it]=jn[Yit]=jn[jit]=jn[Xit]=jn[Kit]=!0;jn[Dit]=jn[yfe]=jn[Fit]=!1;o(D3,"baseClone");I3=D3});function Qit(e){return I3(e,Zit)}var Zit,YO,xfe=F(()=>{"use strict";UO();Zit=4;o(Qit,"clone");YO=Qit});function tat(e){return I3(e,Jit|eat)}var Jit,eat,jO,bfe=F(()=>{"use strict";UO();Jit=1,eat=4;o(tat,"cloneDeep");jO=tat});function nat(e){return this.__data__.set(e,rat),this}var rat,Tfe,Cfe=F(()=>{"use strict";rat="__lodash_hash_undefined__";o(nat,"setCacheAdd");Tfe=nat});function iat(e){return this.__data__.has(e)}var wfe,kfe=F(()=>{"use strict";o(iat,"setCacheHas");wfe=iat});function M3(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Nm;++t{"use strict";m3();Cfe();kfe();o(M3,"SetCache");M3.prototype.add=M3.prototype.push=Tfe;M3.prototype.has=wfe;N3=M3});function aat(e,t){for(var r=-1,n=e==null?0:e.length;++r{"use strict";o(aat,"arraySome");Sfe=aat});function sat(e,t){return e.has(t)}var P3,KO=F(()=>{"use strict";o(sat,"cacheHas");P3=sat});function cat(e,t,r,n,i,a){var s=r&oat,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&lat?new N3:void 0;for(a.set(e,t),a.set(t,e);++f{"use strict";XO();Efe();KO();oat=1,lat=2;o(cat,"equalArrays");O3=cat});function uat(e){var t=-1,r=Array(e.size);return e.forEach(function(n,i){r[++t]=[i,n]}),r}var Afe,Rfe=F(()=>{"use strict";o(uat,"mapToArray");Afe=uat});function hat(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}var d1,B3=F(()=>{"use strict";o(hat,"setToArray");d1=hat});function Sat(e,t,r,n,i,a,s){switch(r){case kat:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case wat:return!(e.byteLength!=t.byteLength||!a(new u1(e),new u1(t)));case pat:case mat:case vat:return vl(+e,+t);case gat:return e.name==t.name&&e.message==t.message;case xat:case Tat:return e==t+"";case yat:var l=Afe;case bat:var u=n&dat;if(l||(l=d1),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;n|=fat,s.set(e,t);var d=O3(l(e),l(t),n,i,a,s);return s.delete(e),d;case Cat:if(QO)return QO.call(e)==QO.call(t)}return!1}var dat,fat,pat,mat,gat,yat,vat,xat,bat,Tat,Cat,wat,kat,_fe,QO,Lfe,Dfe=F(()=>{"use strict";Dm();WO();Mm();ZO();Rfe();B3();dat=1,fat=2,pat="[object Boolean]",mat="[object Date]",gat="[object Error]",yat="[object Map]",vat="[object Number]",xat="[object RegExp]",bat="[object Set]",Tat="[object String]",Cat="[object Symbol]",wat="[object ArrayBuffer]",kat="[object DataView]",_fe=wa?wa.prototype:void 0,QO=_fe?_fe.valueOf:void 0;o(Sat,"equalByTag");Lfe=Sat});function _at(e,t,r,n,i,a){var s=r&Eat,l=oT(e),u=l.length,h=oT(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:Rat.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f{"use strict";GO();Eat=1,Aat=Object.prototype,Rat=Aat.hasOwnProperty;o(_at,"equalObjects");Ife=_at});function Iat(e,t,r,n,i,a){var s=Yr(e),l=Yr(t),u=s?Pfe:Vo(e),h=l?Pfe:Vo(t);u=u==Nfe?$3:u,h=h==Nfe?$3:h;var d=u==$3,f=h==$3,p=u==h;if(p&&uc(e)){if(!uc(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new uu),s||pf(e)?O3(e,t,r,n,i,a):Lfe(e,t,u,r,n,i,a);if(!(r&Lat)){var m=d&&Ofe.call(e,"__wrapped__"),g=f&&Ofe.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new uu),i(y,v,r,n,a)}}return p?(a||(a=new uu),Ife(e,t,r,n,i,a)):!1}var Lat,Nfe,Pfe,$3,Dat,Ofe,Bfe,$fe=F(()=>{"use strict";sT();ZO();Dfe();Mfe();Om();ji();Qy();J2();Lat=1,Nfe="[object Arguments]",Pfe="[object Array]",$3="[object Object]",Dat=Object.prototype,Ofe=Dat.hasOwnProperty;o(Iat,"baseIsEqualDeep");Bfe=Iat});function Ffe(e,t,r,n,i){return e===t?!0:e==null||t==null||!Bi(e)&&!Bi(t)?e!==e&&t!==t:Bfe(e,t,r,n,Ffe,i)}var F3,JO=F(()=>{"use strict";$fe();lc();o(Ffe,"baseIsEqual");F3=Ffe});function Pat(e,t,r,n){var i=r.length,a=i,s=!n;if(e==null)return!a;for(e=Object(e);i--;){var l=r[i];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i{"use strict";sT();JO();Mat=1,Nat=2;o(Pat,"baseIsMatch");zfe=Pat});function Oat(e){return e===e&&!fi(e)}var z3,e9=F(()=>{"use strict";yl();o(Oat,"isStrictComparable");z3=Oat});function Bat(e){for(var t=Di(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,z3(i)]}return t}var Vfe,Wfe=F(()=>{"use strict";e9();Ah();o(Bat,"getMatchData");Vfe=Bat});function $at(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var G3,t9=F(()=>{"use strict";o($at,"matchesStrictComparable");G3=$at});function Fat(e){var t=Vfe(e);return t.length==1&&t[0][2]?G3(t[0][0],t[0][1]):function(r){return r===e||zfe(r,e,t)}}var qfe,Hfe=F(()=>{"use strict";Gfe();Wfe();t9();o(Fat,"baseMatches");qfe=Fat});function zat(e,t){return e!=null&&t in Object(e)}var Ufe,Yfe=F(()=>{"use strict";o(zat,"baseHasIn");Ufe=zat});function Gat(e,t,r){t=bf(t,e);for(var n=-1,i=t.length,a=!1;++n{"use strict";iT();Zy();ji();H2();l3();i1();o(Gat,"hasPath");V3=Gat});function Vat(e,t){return e!=null&&V3(e,t,Ufe)}var W3,n9=F(()=>{"use strict";Yfe();r9();o(Vat,"hasIn");W3=Vat});function Hat(e,t){return e1(e)&&z3(t)?G3(cu(e),t):function(r){var n=tde(r,e);return n===void 0&&n===t?W3(r,e):F3(t,n,Wat|qat)}}var Wat,qat,jfe,Xfe=F(()=>{"use strict";JO();rde();n9();f3();e9();t9();i1();Wat=1,qat=2;o(Hat,"baseMatchesProperty");jfe=Hat});function Uat(e){return function(t){return t?.[e]}}var q3,i9=F(()=>{"use strict";o(Uat,"baseProperty");q3=Uat});function Yat(e){return function(t){return Tf(t,e)}}var Kfe,Zfe=F(()=>{"use strict";aT();o(Yat,"basePropertyDeep");Kfe=Yat});function jat(e){return e1(e)?q3(cu(e)):Kfe(e)}var Qfe,Jfe=F(()=>{"use strict";i9();Zfe();f3();i1();o(jat,"property");Qfe=jat});function Xat(e){return typeof e=="function"?e:e==null?ao:typeof e=="object"?Yr(e)?jfe(e[0],e[1]):qfe(e):Qfe(e)}var os,_h=F(()=>{"use strict";Hfe();Xfe();sf();ji();Jfe();o(Xat,"baseIteratee");os=Xat});function Kat(e){return function(t,r,n){for(var i=-1,a=Object(t),s=n(t),l=s.length;l--;){var u=s[e?l:++i];if(r(a[u],u,a)===!1)break}return t}}var epe,tpe=F(()=>{"use strict";o(Kat,"createBaseFor");epe=Kat});var Zat,f1,H3=F(()=>{"use strict";tpe();Zat=epe(),f1=Zat});function Qat(e,t){return e&&f1(e,t,Di)}var p1,U3=F(()=>{"use strict";H3();Ah();o(Qat,"baseForOwn");p1=Qat});function Jat(e,t){return function(r,n){if(r==null)return r;if(!ka(r))return e(r,n);for(var i=r.length,a=t?i:-1,s=Object(r);(t?a--:++a{"use strict";lu();o(Jat,"createBaseEach");rpe=Jat});var est,wf,lT=F(()=>{"use strict";U3();npe();est=rpe(p1),wf=est});var tst,Y3,ipe=F(()=>{"use strict";gl();tst=o(function(){return Li.Date.now()},"now"),Y3=tst});var ape,rst,nst,a9,spe=F(()=>{"use strict";j2();Mm();X2();mf();ape=Object.prototype,rst=ape.hasOwnProperty,nst=hf(function(e,t){e=Object(e);var r=-1,n=t.length,i=n>2?t[2]:void 0;for(i&&Sh(t[0],t[1],i)&&(n=1);++r{"use strict";U2();Mm();o(ist,"assignMergeValue");cT=ist});function ast(e){return Bi(e)&&ka(e)}var j3,o9=F(()=>{"use strict";lu();lc();o(ast,"isArrayLikeObject");j3=ast});function sst(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var uT,l9=F(()=>{"use strict";o(sst,"safeGet");uT=sst});function ost(e){return ou(e,lo(e))}var ope,lpe=F(()=>{"use strict";Xy();mf();o(ost,"toPlainObject");ope=ost});function lst(e,t,r,n,i,a,s){var l=uT(e,r),u=uT(t,r),h=s.get(u);if(h){cT(e,r,h);return}var d=a?a(l,u,r+"",e,t,s):void 0,f=d===void 0;if(f){var p=Yr(u),m=!p&&uc(u),g=!p&&!m&&pf(u);d=u,p||m||g?Yr(l)?d=l:j3(l)?d=n3(l):m?(f=!1,d=b3(u,!0)):g?(f=!1,d=_3(u,!0)):d=[]:ude(u)||cc(u)?(d=l,cc(l)?d=ope(l):(!fi(l)||su(l))&&(d=L3(u))):f=!1}f&&(s.set(u,d),i(d,u,n,a,s),s.delete(u)),cT(e,r,d)}var cpe,upe=F(()=>{"use strict";s9();OO();qO();TO();HO();Zy();ji();o9();Qy();q2();yl();hde();J2();l9();lpe();o(lst,"baseMergeDeep");cpe=lst});function hpe(e,t,r,n,i){e!==t&&f1(t,function(a,s){if(i||(i=new uu),fi(a))cpe(e,t,s,r,hpe,n,i);else{var l=n?n(uT(e,s),a,s+"",e,t,i):void 0;l===void 0&&(l=a),cT(e,s,l)}},lo)}var dpe,fpe=F(()=>{"use strict";sT();s9();H3();upe();yl();mf();l9();o(hpe,"baseMerge");dpe=hpe});function cst(e,t,r){for(var n=-1,i=e==null?0:e.length;++n{"use strict";o(cst,"arrayIncludesWith");ppe=cst});function ust(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var kf,gpe=F(()=>{"use strict";o(ust,"last");kf=ust});function hst(e){return typeof e=="function"?e:ao}var m1,X3=F(()=>{"use strict";sf();o(hst,"castFunction");m1=hst});function dst(e,t){var r=Yr(e)?a3:wf;return r(e,m1(t))}var st,c9=F(()=>{"use strict";SO();lT();X3();ji();o(dst,"forEach");st=dst});var ype=F(()=>{"use strict";c9()});function fst(e,t){var r=[];return wf(e,function(n,i,a){t(n,i,a)&&r.push(n)}),r}var vpe,xpe=F(()=>{"use strict";lT();o(fst,"baseFilter");vpe=fst});function pst(e,t){var r=Yr(e)?T3:vpe;return r(e,os(t,3))}var Is,bpe=F(()=>{"use strict";BO();xpe();_h();ji();o(pst,"filter");Is=pst});function mst(e){return function(t,r,n){var i=Object(t);if(!ka(t)){var a=os(r,3);t=Di(t),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=e(t,r,n);return s>-1?i[a?t[s]:s]:void 0}}var Tpe,Cpe=F(()=>{"use strict";_h();lu();Ah();o(mst,"createFind");Tpe=mst});function yst(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:vue(r);return i<0&&(i=gst(n+i,0)),s3(e,os(t,3),i)}var gst,wpe,kpe=F(()=>{"use strict";EO();_h();xue();gst=Math.max;o(yst,"findIndex");wpe=yst});var vst,g1,Spe=F(()=>{"use strict";Cpe();kpe();vst=Tpe(wpe),g1=vst});function xst(e,t){var r=-1,n=ka(e)?Array(e.length):[];return wf(e,function(i,a,s){n[++r]=t(i,a,s)}),n}var K3,u9=F(()=>{"use strict";lT();lu();o(xst,"baseMap");K3=xst});function bst(e,t){var r=Yr(e)?au:K3;return r(e,os(t,3))}var mn,Epe=F(()=>{"use strict";W2();_h();u9();ji();o(bst,"map");mn=bst});function Tst(e,t){return e==null?e:f1(e,m1(t),lo)}var h9,Ape=F(()=>{"use strict";H3();X3();mf();o(Tst,"forIn");h9=Tst});function Cst(e,t){return e&&p1(e,m1(t))}var d9,Rpe=F(()=>{"use strict";U3();X3();o(Cst,"forOwn");d9=Cst});function wst(e,t){return e>t}var _pe,Lpe=F(()=>{"use strict";o(wst,"baseGt");_pe=wst});function Est(e,t){return e!=null&&Sst.call(e,t)}var kst,Sst,Dpe,Ipe=F(()=>{"use strict";kst=Object.prototype,Sst=kst.hasOwnProperty;o(Est,"baseHas");Dpe=Est});function Ast(e,t){return e!=null&&V3(e,t,Dpe)}var hT,Mpe=F(()=>{"use strict";Ipe();r9();o(Ast,"has");hT=Ast});function _st(e){return typeof e=="string"||!Yr(e)&&Bi(e)&&Ds(e)==Rst}var Rst,Npe,Ppe=F(()=>{"use strict";af();ji();lc();Rst="[object String]";o(_st,"isString");Npe=_st});function Lst(e,t){return au(t,function(r){return e[r]})}var Ope,Bpe=F(()=>{"use strict";W2();o(Lst,"baseValues");Ope=Lst});function Dst(e){return e==null?[]:Ope(e,Di(e))}var Wo,$pe=F(()=>{"use strict";Bpe();Ah();o(Dst,"values");Wo=Dst});function Ost(e){if(e==null)return!0;if(ka(e)&&(Yr(e)||typeof e=="string"||typeof e.splice=="function"||uc(e)||pf(e)||cc(e)))return!e.length;var t=Vo(e);if(t==Ist||t==Mst)return!e.size;if(df(e))return!Jy(e).length;for(var r in e)if(Pst.call(e,r))return!1;return!0}var Ist,Mst,Nst,Pst,Z3,Fpe=F(()=>{"use strict";d3();Om();Zy();ji();lu();Qy();K2();J2();Ist="[object Map]",Mst="[object Set]",Nst=Object.prototype,Pst=Nst.hasOwnProperty;o(Ost,"isEmpty");Z3=Ost});function Bst(e){return e===void 0}var Fn,zpe=F(()=>{"use strict";o(Bst,"isUndefined");Fn=Bst});function $st(e,t){return e{"use strict";o($st,"baseLt");Q3=$st});function Fst(e,t){var r={};return t=os(t,3),p1(e,function(n,i,a){cf(r,i,t(n,i,a))}),r}var Bm,Gpe=F(()=>{"use strict";U2();U3();_h();o(Fst,"mapValues");Bm=Fst});function zst(e,t,r){for(var n=-1,i=e.length;++n{"use strict";Im();o(zst,"baseExtremum");y1=zst});function Gst(e){return e&&e.length?y1(e,ao,_pe):void 0}var co,Vpe=F(()=>{"use strict";J3();Lpe();sf();o(Gst,"max");co=Gst});var Vst,v1,Wpe=F(()=>{"use strict";fpe();Kue();Vst=Xue(function(e,t,r){dpe(e,t,r)}),v1=Vst});function Wst(e){return e&&e.length?y1(e,ao,Q3):void 0}var Lh,qpe=F(()=>{"use strict";J3();f9();sf();o(Wst,"min");Lh=Wst});function qst(e,t){return e&&e.length?y1(e,os(t,2),Q3):void 0}var $m,Hpe=F(()=>{"use strict";J3();_h();f9();o(qst,"minBy");$m=qst});function Hst(e,t,r,n){if(!fi(e))return e;t=bf(t,e);for(var i=-1,a=t.length,s=a-1,l=e;l!=null&&++i{"use strict";Y2();iT();H2();yl();i1();o(Hst,"baseSet");Upe=Hst});function Ust(e,t,r){for(var n=-1,i=t.length,a={};++n{"use strict";aT();Ype();iT();o(Ust,"basePickBy");jpe=Ust});function Yst(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var Kpe,Zpe=F(()=>{"use strict";o(Yst,"baseSortBy");Kpe=Yst});function jst(e,t){if(e!==t){var r=e!==void 0,n=e===null,i=e===e,a=Go(e),s=t!==void 0,l=t===null,u=t===t,h=Go(t);if(!l&&!h&&!a&&e>t||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&e{"use strict";Im();o(jst,"compareAscending");Qpe=jst});function Xst(e,t,r){for(var n=-1,i=e.criteria,a=t.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return e.index-t.index}var eme,tme=F(()=>{"use strict";Jpe();o(Xst,"compareMultiple");eme=Xst});function Kst(e,t,r){t.length?t=au(t,function(a){return Yr(a)?function(s){return Tf(s,a.length===1?a[0]:a)}:a}):t=[ao];var n=-1;t=au(t,ff(os));var i=K3(e,function(a,s,l){var u=au(t,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return Kpe(i,function(a,s){return eme(a,s,r)})}var rme,nme=F(()=>{"use strict";W2();aT();_h();u9();Zpe();Z2();tme();sf();ji();o(Kst,"baseOrderBy");rme=Kst});var Zst,ime,ame=F(()=>{"use strict";i9();Zst=q3("length"),ime=Zst});function cot(e){for(var t=sme.lastIndex=0;sme.test(e);)++t;return t}var ome,Qst,Jst,eot,tot,rot,not,p9,m9,iot,lme,cme,ume,aot,hme,dme,sot,oot,lot,sme,fme,pme=F(()=>{"use strict";ome="\\ud800-\\udfff",Qst="\\u0300-\\u036f",Jst="\\ufe20-\\ufe2f",eot="\\u20d0-\\u20ff",tot=Qst+Jst+eot,rot="\\ufe0e\\ufe0f",not="["+ome+"]",p9="["+tot+"]",m9="\\ud83c[\\udffb-\\udfff]",iot="(?:"+p9+"|"+m9+")",lme="[^"+ome+"]",cme="(?:\\ud83c[\\udde6-\\uddff]){2}",ume="[\\ud800-\\udbff][\\udc00-\\udfff]",aot="\\u200d",hme=iot+"?",dme="["+rot+"]?",sot="(?:"+aot+"(?:"+[lme,cme,ume].join("|")+")"+dme+hme+")*",oot=dme+hme+sot,lot="(?:"+[lme+p9+"?",p9,cme,ume,not].join("|")+")",sme=RegExp(m9+"(?="+m9+")|"+lot+oot,"g");o(cot,"unicodeSize");fme=cot});function uot(e){return dde(e)?fme(e):ime(e)}var mme,gme=F(()=>{"use strict";ame();fde();pme();o(uot,"stringSize");mme=uot});function hot(e,t){return jpe(e,t,function(r,n){return W3(e,n)})}var yme,vme=F(()=>{"use strict";Xpe();n9();o(hot,"basePick");yme=hot});var dot,Fm,xme=F(()=>{"use strict";vme();lde();dot=ode(function(e,t){return e==null?{}:yme(e,t)}),Fm=dot});function mot(e,t,r,n){for(var i=-1,a=pot(fot((t-e)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=e,e+=r;return s}var fot,pot,bme,Tme=F(()=>{"use strict";fot=Math.ceil,pot=Math.max;o(mot,"baseRange");bme=mot});function got(e){return function(t,r,n){return n&&typeof n!="number"&&Sh(t,r,n)&&(r=n=void 0),t=Yy(t),r===void 0?(r=t,t=0):r=Yy(r),n=n===void 0?t{"use strict";Tme();X2();xO();o(got,"createRange");Cme=got});var yot,bl,kme=F(()=>{"use strict";wme();yot=Cme(),bl=yot});function vot(e,t,r,n,i){return i(e,function(a,s,l){r=n?(n=!1,a):t(r,a,s,l)}),r}var Sme,Eme=F(()=>{"use strict";o(vot,"baseReduce");Sme=vot});function xot(e,t,r){var n=Yr(e)?pde:Sme,i=arguments.length<3;return n(e,os(t,4),r,i,wf)}var hu,Ame=F(()=>{"use strict";mde();lT();_h();Eme();ji();o(xot,"reduce");hu=xot});function Cot(e){if(e==null)return 0;if(ka(e))return Npe(e)?mme(e):e.length;var t=Vo(e);return t==bot||t==Tot?e.size:Jy(e).length}var bot,Tot,g9,Rme=F(()=>{"use strict";d3();Om();lu();Ppe();gme();bot="[object Map]",Tot="[object Set]";o(Cot,"size");g9=Cot});var wot,du,_me=F(()=>{"use strict";v3();nme();j2();X2();wot=hf(function(e,t){if(e==null)return[];var r=t.length;return r>1&&Sh(e,t[0],t[1])?t=[]:r>2&&Sh(t[0],t[1],t[2])&&(t=[t[0]]),rme(e,s1(t,1),[])}),du=wot});var kot,Sot,Lme,Dme=F(()=>{"use strict";VO();Pue();B3();kot=1/0,Sot=Cf&&1/d1(new Cf([,-0]))[1]==kot?function(e){return new Cf(e)}:Nue,Lme=Sot});function Aot(e,t,r){var n=-1,i=Uue,a=e.length,s=!0,l=[],u=l;if(r)s=!1,i=ppe;else if(a>=Eot){var h=t?null:Lme(e);if(h)return d1(h);s=!1,i=P3,u=new N3}else u=t?[]:l;e:for(;++n{"use strict";XO();Yue();mpe();KO();Dme();B3();Eot=200;o(Aot,"baseUniq");Ime=Aot});var Rot,y9,Nme=F(()=>{"use strict";v3();j2();Mme();o9();Rot=hf(function(e){return Ime(s1(e,1,j3,!0))}),y9=Rot});function Lot(e){var t=++_ot;return g3(e)+t}var _ot,zm,Pme=F(()=>{"use strict";NO();_ot=0;o(Lot,"uniqueId");zm=Lot});function Dot(e,t,r){for(var n=-1,i=e.length,a=t.length,s={};++n{"use strict";o(Dot,"baseZipObject");Ome=Dot});function Iot(e,t){return Ome(e||[],t||[],uf)}var e5,$me=F(()=>{"use strict";Y2();Bme();o(Iot,"zipObject");e5=Iot});var Ln=F(()=>{"use strict";xfe();bfe();CO();spe();ype();bpe();Spe();PO();c9();Ape();Rpe();Mpe();ji();Fpe();q2();zpe();Ah();gpe();Epe();Gpe();Vpe();Wpe();qpe();Hpe();ipe();xme();kme();Ame();Rme();_me();Nme();Pme();$pe();$me();});function zme(e,t){e[t]?e[t]++:e[t]=1}function Gme(e,t){--e[t]||delete e[t]}function dT(e,t,r,n){var i=""+t,a=""+r;if(!e&&i>a){var s=i;i=a,a=s}return i+Fme+a+Fme+(Fn(n)?Mot:n)}function Not(e,t,r,n){var i=""+t,a=""+r;if(!e&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function v9(e,t){return dT(e,t.v,t.w,t.name)}var Mot,Gm,Fme,on,t5=F(()=>{"use strict";Ln();Mot="\0",Gm="\0",Fme="",on=class{static{o(this,"Graph")}constructor(t={}){this._isDirected=Object.prototype.hasOwnProperty.call(t,"directed")?t.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(t,"multigraph")?t.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(t,"compound")?t.compound:!1,this._label=void 0,this._defaultNodeLabelFn=oo(void 0),this._defaultEdgeLabelFn=oo(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Gm]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return su(t)||(t=oo(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return Di(this._nodes)}sources(){var t=this;return Is(this.nodes(),function(r){return Z3(t._in[r])})}sinks(){var t=this;return Is(this.nodes(),function(r){return Z3(t._out[r])})}setNodes(t,r){var n=arguments,i=this;return st(t,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(t,r){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=r),this):(this._nodes[t]=arguments.length>1?r:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=Gm,this._children[t]={},this._children[Gm][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],st(this.children(t),n=>{this.setParent(n)}),delete this._children[t]),st(Di(this._in[t]),r),delete this._in[t],delete this._preds[t],st(Di(this._out[t]),r),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(Fn(r))r=Gm;else{r+="";for(var n=r;!Fn(n);n=this.parent(n))if(n===t)throw new Error("Setting "+r+" as parent of "+t+" would create a cycle");this.setNode(r)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=r,this._children[r][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var r=this._parent[t];if(r!==Gm)return r}}children(t){if(Fn(t)&&(t=Gm),this._isCompound){var r=this._children[t];if(r)return Di(r)}else{if(t===Gm)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var r=this._preds[t];if(r)return Di(r)}successors(t){var r=this._sucs[t];if(r)return Di(r)}neighbors(t){var r=this.predecessors(t);if(r)return y9(r,this.successors(t))}isLeaf(t){var r;return this.isDirected()?r=this.successors(t):r=this.neighbors(t),r.length===0}filterNodes(t){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;st(this._nodes,function(s,l){t(l)&&r.setNode(l,s)}),st(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&st(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(t){return su(t)||(t=oo(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return Wo(this._edgeObjs)}setPath(t,r){var n=this,i=arguments;return hu(t,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var t,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(t=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(t=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,r=""+r,Fn(n)||(n=""+n);var l=dT(this._isDirected,t,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!Fn(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(t,r,n);var u=Not(this._isDirected,t,r,n);return t=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,zme(this._preds[r],t),zme(this._sucs[t],r),this._in[r][l]=u,this._out[t][l]=u,this._edgeCount++,this}edge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n);return this._edgeLabels[i]}hasEdge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n),a=this._edgeObjs[i];return a&&(t=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],Gme(this._preds[r],t),Gme(this._sucs[t],r),delete this._in[r][i],delete this._out[t][i],this._edgeCount--),this}inEdges(t,r){var n=this._in[t];if(n){var i=Wo(n);return r?Is(i,function(a){return a.v===r}):i}}outEdges(t,r){var n=this._out[t];if(n){var i=Wo(n);return r?Is(i,function(a){return a.w===r}):i}}nodeEdges(t,r){var n=this.inEdges(t,r);if(n)return n.concat(this.outEdges(t,r))}};on.prototype._nodeCount=0;on.prototype._edgeCount=0;o(zme,"incrementOrInitEntry");o(Gme,"decrementOrRemoveEntry");o(dT,"edgeArgsToId");o(Not,"edgeArgsToObj");o(v9,"edgeObjToId")});var qo=F(()=>{"use strict";t5()});function Vme(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Pot(e,t){if(e!=="_next"&&e!=="_prev")return t}var r5,Wme=F(()=>{"use strict";r5=class{static{o(this,"List")}constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,r=t._prev;if(r!==t)return Vme(r),r}enqueue(t){var r=this._sentinel;t._prev&&t._next&&Vme(t),t._next=r._next,r._next._prev=t,r._next=t,t._prev=r}toString(){for(var t=[],r=this._sentinel,n=r._prev;n!==r;)t.push(JSON.stringify(n,Pot)),n=n._prev;return"["+t.join(", ")+"]"}};o(Vme,"unlink");o(Pot,"filterOutLinks")});function qme(e,t){if(e.nodeCount()<=1)return[];var r=$ot(e,t||Oot),n=Bot(r.graph,r.buckets,r.zeroIdx);return xl(mn(n,function(i){return e.outEdges(i.v,i.w)}))}function Bot(e,t,r){for(var n=[],i=t[t.length-1],a=t[0],s;e.nodeCount();){for(;s=a.dequeue();)x9(e,t,r,s);for(;s=i.dequeue();)x9(e,t,r,s);if(e.nodeCount()){for(var l=t.length-2;l>0;--l)if(s=t[l].dequeue(),s){n=n.concat(x9(e,t,r,s,!0));break}}}return n}function x9(e,t,r,n,i){var a=i?[]:void 0;return st(e.inEdges(n.v),function(s){var l=e.edge(s),u=e.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,b9(t,r,u)}),st(e.outEdges(n.v),function(s){var l=e.edge(s),u=s.w,h=e.node(u);h.in-=l,b9(t,r,h)}),e.removeNode(n.v),a}function $ot(e,t){var r=new on,n=0,i=0;st(e.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),st(e.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=t(l),d=u+h;r.setEdge(l.v,l.w,d),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=bl(i+n+3).map(function(){return new r5}),s=n+1;return st(r.nodes(),function(l){b9(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function b9(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var Oot,Hme=F(()=>{"use strict";Ln();qo();Wme();Oot=oo(1);o(qme,"greedyFAS");o(Bot,"doGreedyFAS");o(x9,"removeNode");o($ot,"buildState");o(b9,"assignBucket")});function Ume(e){var t=e.graph().acyclicer==="greedy"?qme(e,r(e)):Fot(e);st(t,function(n){var i=e.edge(n);e.removeEdge(n),i.forwardName=n.name,i.reversed=!0,e.setEdge(n.w,n.v,i,zm("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function Fot(e){var t=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,st(e.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?t.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),st(e.nodes(),i),t}function Yme(e){st(e.edges(),function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}})}var T9=F(()=>{"use strict";Ln();Hme();o(Ume,"run");o(Fot,"dfsFAS");o(Yme,"undo")});function fu(e,t,r,n){var i;do i=zm(n);while(e.hasNode(i));return r.dummy=t,e.setNode(i,r),i}function Xme(e){var t=new on().setGraph(e.graph());return st(e.nodes(),function(r){t.setNode(r,e.node(r))}),st(e.edges(),function(r){var n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),t}function n5(e){var t=new on({multigraph:e.isMultigraph()}).setGraph(e.graph());return st(e.nodes(),function(r){e.children(r).length||t.setNode(r,e.node(r))}),st(e.edges(),function(r){t.setEdge(r,e.edge(r))}),t}function C9(e,t){var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function Sf(e){var t=mn(bl(k9(e)+1),function(){return[]});return st(e.nodes(),function(r){var n=e.node(r),i=n.rank;Fn(i)||(t[i][n.order]=r)}),t}function Kme(e){var t=Lh(mn(e.nodes(),function(r){return e.node(r).rank}));st(e.nodes(),function(r){var n=e.node(r);hT(n,"rank")&&(n.rank-=t)})}function Zme(e){var t=Lh(mn(e.nodes(),function(a){return e.node(a).rank})),r=[];st(e.nodes(),function(a){var s=e.node(a).rank-t;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=e.graph().nodeRankFactor;st(r,function(a,s){Fn(a)&&s%i!==0?--n:n&&st(a,function(l){e.node(l).rank+=n})})}function w9(e,t,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),fu(e,"border",i,t)}function k9(e){return co(mn(e.nodes(),function(t){var r=e.node(t).rank;if(!Fn(r))return r}))}function Qme(e,t){var r={lhs:[],rhs:[]};return st(e,function(n){t(n)?r.lhs.push(n):r.rhs.push(n)}),r}function Jme(e,t){var r=Y3();try{return t()}finally{console.log(e+" time: "+(Y3()-r)+"ms")}}function ege(e,t){return t()}var pu=F(()=>{"use strict";Ln();qo();o(fu,"addDummyNode");o(Xme,"simplify");o(n5,"asNonCompoundGraph");o(C9,"intersectRect");o(Sf,"buildLayerMatrix");o(Kme,"normalizeRanks");o(Zme,"removeEmptyRanks");o(w9,"addBorderNode");o(k9,"maxRank");o(Qme,"partition");o(Jme,"time");o(ege,"notime")});function rge(e){function t(r){var n=e.children(r),i=e.node(r);if(n.length&&st(n,t),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";Ln();pu();o(rge,"addBorderSegments");o(tge,"addBorderNode")});function age(e){var t=e.graph().rankdir.toLowerCase();(t==="lr"||t==="rl")&&oge(e)}function sge(e){var t=e.graph().rankdir.toLowerCase();(t==="bt"||t==="rl")&&zot(e),(t==="lr"||t==="rl")&&(Got(e),oge(e))}function oge(e){st(e.nodes(),function(t){ige(e.node(t))}),st(e.edges(),function(t){ige(e.edge(t))})}function ige(e){var t=e.width;e.width=e.height,e.height=t}function zot(e){st(e.nodes(),function(t){S9(e.node(t))}),st(e.edges(),function(t){var r=e.edge(t);st(r.points,S9),Object.prototype.hasOwnProperty.call(r,"y")&&S9(r)})}function S9(e){e.y=-e.y}function Got(e){st(e.nodes(),function(t){E9(e.node(t))}),st(e.edges(),function(t){var r=e.edge(t);st(r.points,E9),Object.prototype.hasOwnProperty.call(r,"x")&&E9(r)})}function E9(e){var t=e.x;e.x=e.y,e.y=t}var lge=F(()=>{"use strict";Ln();o(age,"adjust");o(sge,"undo");o(oge,"swapWidthHeight");o(ige,"swapWidthHeightOne");o(zot,"reverseY");o(S9,"reverseYOne");o(Got,"swapXY");o(E9,"swapXYOne")});function cge(e){e.graph().dummyChains=[],st(e.edges(),function(t){Wot(e,t)})}function Wot(e,t){var r=t.v,n=e.node(r).rank,i=t.w,a=e.node(i).rank,s=t.name,l=e.edge(t),u=l.labelRank;if(a!==n+1){e.removeEdge(t);var h=void 0,d,f;for(f=0,++n;n{"use strict";Ln();pu();o(cge,"run");o(Wot,"normalizeEdge");o(uge,"undo")});function pT(e){var t={};function r(n){var i=e.node(n);if(Object.prototype.hasOwnProperty.call(t,n))return i.rank;t[n]=!0;var a=Lh(mn(e.outEdges(n),function(s){return r(s.w)-e.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),st(e.sources(),r)}function Vm(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var i5=F(()=>{"use strict";Ln();o(pT,"longestPath");o(Vm,"slack")});function a5(e){var t=new on({directed:!1}),r=e.nodes()[0],n=e.nodeCount();t.setNode(r,{});for(var i,a;qot(t,e){"use strict";Ln();qo();i5();o(a5,"feasibleTree");o(qot,"tightTree");o(Hot,"findMinSlackEdge");o(Uot,"shiftRanks")});var dge=F(()=>{"use strict"});var _9=F(()=>{"use strict"});var Z6r,L9=F(()=>{"use strict";Ln();_9();Z6r=oo(1)});var fge=F(()=>{"use strict";L9()});var D9=F(()=>{"use strict"});var pge=F(()=>{"use strict";D9()});var lRr,mge=F(()=>{"use strict";Ln();lRr=oo(1)});function I9(e){var t={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new mT;Object.prototype.hasOwnProperty.call(t,a)||(r[a]=!0,t[a]=!0,st(e.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),st(e.sinks(),i),g9(t)!==e.nodeCount())throw new mT;return n}function mT(){}var M9=F(()=>{"use strict";Ln();I9.CycleException=mT;o(I9,"topsort");o(mT,"CycleException");mT.prototype=new Error});var gge=F(()=>{"use strict";M9()});function s5(e,t,r){Yr(t)||(t=[t]);var n=(e.isDirected()?e.successors:e.neighbors).bind(e),i=[],a={};return st(t,function(s){if(!e.hasNode(s))throw new Error("Graph does not have node: "+s);yge(e,s,r==="post",a,n,i)}),i}function yge(e,t,r,n,i,a){Object.prototype.hasOwnProperty.call(n,t)||(n[t]=!0,r||a.push(t),st(i(t),function(s){yge(e,s,r,n,i,a)}),r&&a.push(t))}var N9=F(()=>{"use strict";Ln();o(s5,"dfs");o(yge,"doDfs")});function P9(e,t){return s5(e,t,"post")}var vge=F(()=>{"use strict";N9();o(P9,"postorder")});function O9(e,t){return s5(e,t,"pre")}var xge=F(()=>{"use strict";N9();o(O9,"preorder")});var bge=F(()=>{"use strict";_9();t5()});var Tge=F(()=>{"use strict";dge();L9();fge();pge();mge();gge();vge();xge();bge();D9();M9()});function Af(e){e=Xme(e),pT(e);var t=a5(e);$9(t),B9(t,e);for(var r,n;r=Sge(t);)n=Ege(t,e,r),Age(t,e,r,n)}function B9(e,t){var r=P9(e,e.nodes());r=r.slice(0,r.length-1),st(r,function(n){Zot(e,t,n)})}function Zot(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=wge(e,t,r)}function wge(e,t,r){var n=e.node(r),i=n.parent,a=!0,s=t.edge(r,i),l=0;return s||(a=!1,s=t.edge(i,r)),l=s.weight,st(t.nodeEdges(r),function(u){var h=u.v===r,d=h?u.w:u.v;if(d!==i){var f=h===a,p=t.edge(u).weight;if(l+=f?p:-p,Jot(e,r,d)){var m=e.edge(r,d).cutvalue;l+=f?-m:m}}}),l}function $9(e,t){arguments.length<2&&(t=e.nodes()[0]),kge(e,{},1,t)}function kge(e,t,r,n,i){var a=r,s=e.node(n);return t[n]=!0,st(e.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(t,l)||(r=kge(e,t,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Sge(e){return g1(e.edges(),function(t){return e.edge(t).cutvalue<0})}function Ege(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var a=e.node(n),s=e.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Is(t.edges(),function(d){return u===Cge(e,e.node(d.v),l)&&u!==Cge(e,e.node(d.w),l)});return $m(h,function(d){return Vm(t,d)})}function Age(e,t,r,n){var i=r.v,a=r.w;e.removeEdge(i,a),e.setEdge(n.v,n.w,{}),$9(e),B9(e,t),Qot(e,t)}function Qot(e,t){var r=g1(e.nodes(),function(i){return!t.node(i).parent}),n=O9(e,r);n=n.slice(1),st(n,function(i){var a=e.node(i).parent,s=t.edge(i,a),l=!1;s||(s=t.edge(a,i),l=!0),t.node(i).rank=t.node(a).rank+(l?s.minlen:-s.minlen)})}function Jot(e,t,r){return e.hasEdge(t,r)}function Cge(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}var Rge=F(()=>{"use strict";Ln();Tge();pu();R9();i5();Af.initLowLimValues=$9;Af.initCutValues=B9;Af.calcCutValue=wge;Af.leaveEdge=Sge;Af.enterEdge=Ege;Af.exchangeEdges=Age;o(Af,"networkSimplex");o(B9,"initCutValues");o(Zot,"assignCutValue");o(wge,"calcCutValue");o($9,"initLowLimValues");o(kge,"dfsAssignLowLim");o(Sge,"leaveEdge");o(Ege,"enterEdge");o(Age,"exchangeEdges");o(Qot,"updateRanks");o(Jot,"isTreeEdge");o(Cge,"isDescendant")});function F9(e){switch(e.graph().ranker){case"network-simplex":_ge(e);break;case"tight-tree":tlt(e);break;case"longest-path":elt(e);break;default:_ge(e)}}function tlt(e){pT(e),a5(e)}function _ge(e){Af(e)}var elt,z9=F(()=>{"use strict";R9();Rge();i5();o(F9,"rank");elt=pT;o(tlt,"tightTreeRanker");o(_ge,"networkSimplexRanker")});function Lge(e){var t=fu(e,"root",{},"_root"),r=rlt(e),n=co(Wo(r))-1,i=2*n+1;e.graph().nestingRoot=t,st(e.edges(),function(s){e.edge(s).minlen*=i});var a=nlt(e)+1;st(e.children(),function(s){Dge(e,t,i,a,n,r,s)}),e.graph().nodeRankFactor=i}function Dge(e,t,r,n,i,a,s){var l=e.children(s);if(!l.length){s!==t&&e.setEdge(t,s,{weight:0,minlen:r});return}var u=w9(e,"_bt"),h=w9(e,"_bb"),d=e.node(s);e.setParent(u,s),d.borderTop=u,e.setParent(h,s),d.borderBottom=h,st(l,function(f){Dge(e,t,r,n,i,a,f);var p=e.node(f),m=p.borderTop?p.borderTop:f,g=p.borderBottom?p.borderBottom:f,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;e.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),e.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),e.parent(s)||e.setEdge(t,u,{weight:0,minlen:i+a[s]})}function rlt(e){var t={};function r(n,i){var a=e.children(n);a&&a.length&&st(a,function(s){r(s,i+1)}),t[n]=i}return o(r,"dfs"),st(e.children(),function(n){r(n,1)}),t}function nlt(e){return hu(e.edges(),function(t,r){return t+e.edge(r).weight},0)}function Ige(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,st(e.edges(),function(r){var n=e.edge(r);n.nestingEdge&&e.removeEdge(r)})}var Mge=F(()=>{"use strict";Ln();pu();o(Lge,"run");o(Dge,"dfs");o(rlt,"treeDepths");o(nlt,"sumWeights");o(Ige,"cleanup")});function Nge(e,t,r){var n={},i;st(r,function(a){for(var s=e.parent(a),l,u;s;){if(l=e.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){t.setEdge(u,s);return}s=l}})}var Pge=F(()=>{"use strict";Ln();o(Nge,"addSubgraphConstraints")});function Oge(e,t,r){var n=alt(e),i=new on({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return e.node(a)});return st(e.nodes(),function(a){var s=e.node(a),l=e.parent(a);(s.rank===t||s.minRank<=t&&t<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),st(e[r](a),function(u){var h=u.v===a?u.w:u.v,d=i.edge(h,a),f=Fn(d)?0:d.weight;i.setEdge(h,a,{weight:e.edge(u).weight+f})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[t],borderRight:s.borderRight[t]}))}),i}function alt(e){for(var t;e.hasNode(t=zm("_root")););return t}var Bge=F(()=>{"use strict";Ln();qo();o(Oge,"buildLayerGraph");o(alt,"createRootNode")});function $ge(e,t){for(var r=0,n=1;n0;)d%2&&(f+=l[d+1]),d=d-1>>1,l[d]+=h.weight;u+=h.weight*f})),u}var Fge=F(()=>{"use strict";Ln();o($ge,"crossCount");o(slt,"twoLayerCrossCount")});function zge(e){var t={},r=Is(e.nodes(),function(l){return!e.children(l).length}),n=co(mn(r,function(l){return e.node(l).rank})),i=mn(bl(n+1),function(){return[]});function a(l){if(!hT(t,l)){t[l]=!0;var u=e.node(l);i[u.rank].push(l),st(e.successors(l),a)}}o(a,"dfs");var s=du(r,function(l){return e.node(l).rank});return st(s,a),i}var Gge=F(()=>{"use strict";Ln();o(zge,"initOrder")});function Vge(e,t){return mn(t,function(r){var n=e.inEdges(r);if(n.length){var i=hu(n,function(a,s){var l=e.edge(s),u=e.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var Wge=F(()=>{"use strict";Ln();o(Vge,"barycenter")});function qge(e,t){var r={};st(e,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};Fn(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),st(t.edges(),function(i){var a=r[i.v],s=r[i.w];!Fn(a)&&!Fn(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Is(r,function(i){return!i.indegree});return olt(n)}function olt(e){var t=[];function r(a){return function(s){s.merged||(Fn(s.barycenter)||Fn(a.barycenter)||s.barycenter>=a.barycenter)&&llt(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&e.push(s)}}for(o(n,"handleOut");e.length;){var i=e.pop();t.push(i),st(i.in.reverse(),r(i)),st(i.out,n(i))}return mn(Is(t,function(a){return!a.merged}),function(a){return Fm(a,["vs","i","barycenter","weight"])})}function llt(e,t){var r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}var Hge=F(()=>{"use strict";Ln();o(qge,"resolveConflicts");o(olt,"doResolveConflicts");o(llt,"mergeEntries")});function Yge(e,t){var r=Qme(e,function(d){return Object.prototype.hasOwnProperty.call(d,"barycenter")}),n=r.lhs,i=du(r.rhs,function(d){return-d.i}),a=[],s=0,l=0,u=0;n.sort(clt(!!t)),u=Uge(a,i,u),st(n,function(d){u+=d.vs.length,a.push(d.vs),s+=d.barycenter*d.weight,l+=d.weight,u=Uge(a,i,u)});var h={vs:xl(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function Uge(e,t,r){for(var n;t.length&&(n=kf(t)).i<=r;)t.pop(),e.push(n.vs),r++;return r}function clt(e){return function(t,r){return t.barycenterr.barycenter?1:e?r.i-t.i:t.i-r.i}}var jge=F(()=>{"use strict";Ln();pu();o(Yge,"sort");o(Uge,"consumeUnsortable");o(clt,"compareWithBias")});function G9(e,t,r,n){var i=e.children(t),a=e.node(t),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Is(i,function(g){return g!==s&&g!==l}));var h=Vge(e,i);st(h,function(g){if(e.children(g.v).length){var y=G9(e,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&hlt(g,y)}});var d=qge(h,r);ult(d,u);var f=Yge(d,n);if(s&&(f.vs=xl([s,f.vs,l]),e.predecessors(s).length)){var p=e.node(e.predecessors(s)[0]),m=e.node(e.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(f,"barycenter")||(f.barycenter=0,f.weight=0),f.barycenter=(f.barycenter*f.weight+p.order+m.order)/(f.weight+2),f.weight+=2}return f}function ult(e,t){st(e,function(r){r.vs=xl(r.vs.map(function(n){return t[n]?t[n].vs:n}))})}function hlt(e,t){Fn(e.barycenter)?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}var Xge=F(()=>{"use strict";Ln();Wge();Hge();jge();o(G9,"sortSubgraph");o(ult,"expandSubgraphs");o(hlt,"mergeBarycenters")});function Qge(e){var t=k9(e),r=Kge(e,bl(1,t+1),"inEdges"),n=Kge(e,bl(t-1,-1,-1),"outEdges"),i=zge(e);Zge(e,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){dlt(l%2?r:n,l%4>=2),i=Sf(e);var h=$ge(e,i);h{"use strict";Ln();qo();pu();Pge();Bge();Fge();Gge();Xge();o(Qge,"order");o(Kge,"buildLayerGraphs");o(dlt,"sweepLayerGraphs");o(Zge,"assignOrder")});function e0e(e){var t=plt(e);st(e.graph().dummyChains,function(r){for(var n=e.node(r),i=n.edgeObj,a=flt(e,t,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],d=!0;r!==i.w;){if(n=e.node(r),d){for(;(h=s[u])!==l&&e.node(h).maxRanks||l>t[u].lim));for(h=u,u=n;(u=e.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function plt(e){var t={},r=0;function n(i){var a=r;st(e.children(i),n),t[i]={low:a,lim:r++}}return o(n,"dfs"),st(e.children(),n),t}var t0e=F(()=>{"use strict";Ln();o(e0e,"parentDummyChains");o(flt,"findPath");o(plt,"postorder")});function mlt(e,t){var r={};function n(i,a){var s=0,l=0,u=i.length,h=kf(a);return st(a,function(d,f){var p=ylt(e,d),m=p?e.node(p).order:u;(p||d===h)&&(st(a.slice(l,f+1),function(g){st(e.predecessors(g),function(y){var v=e.node(y),x=v.order;(xh)&&r0e(r,p,d)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return st(s,function(d,f){if(e.node(d).dummy==="border"){var p=e.predecessors(d);p.length&&(u=e.node(p[0]).order,n(s,h,f,l,u),h=f,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),hu(t,i),r}function ylt(e,t){if(e.node(t).dummy)return g1(e.predecessors(t),function(r){return e.node(r).dummy})}function r0e(e,t,r){if(t>r){var n=t;t=r,r=n}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0});var i=e[t];Object.defineProperty(i,r,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function vlt(e,t,r){if(t>r){var n=t;t=r,r=n}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],r)}function xlt(e,t,r,n){var i={},a={},s={};return st(t,function(l){st(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),st(t,function(l){var u=-1;st(l,function(h){var d=n(h);if(d.length){d=du(d,function(y){return s[y]});for(var f=(d.length-1)/2,p=Math.floor(f),m=Math.ceil(f);p<=m;++p){var g=d[p];a[h]===h&&u{"use strict";Ln();qo();pu();o(mlt,"findType1Conflicts");o(glt,"findType2Conflicts");o(ylt,"findOtherInnerSegmentNode");o(r0e,"addConflict");o(vlt,"hasConflict");o(xlt,"verticalAlignment");o(blt,"horizontalCompaction");o(Tlt,"buildBlockGraph");o(Clt,"findSmallestWidthAlignment");o(wlt,"alignCoordinates");o(klt,"balance");o(n0e,"positionX");o(Slt,"sep");o(Elt,"width")});function a0e(e){e=n5(e),Alt(e),d9(n0e(e),function(t,r){e.node(r).x=t})}function Alt(e){var t=Sf(e),r=e.graph().ranksep,n=0;st(t,function(i){var a=co(mn(i,function(s){return e.node(s).height}));st(i,function(s){e.node(s).y=n+a/2}),n+=a+r})}var s0e=F(()=>{"use strict";Ln();pu();i0e();o(a0e,"position");o(Alt,"positionY")});function gT(e,t){var r=t&&t.debugTiming?Jme:ege;r("layout",()=>{var n=r(" buildLayoutGraph",()=>$lt(e));r(" runLayout",()=>Rlt(n,r)),r(" updateInputGraph",()=>_lt(e,n))})}function Rlt(e,t){t(" makeSpaceForEdgeLabels",()=>Flt(e)),t(" removeSelfEdges",()=>jlt(e)),t(" acyclic",()=>Ume(e)),t(" nestingGraph.run",()=>Lge(e)),t(" rank",()=>F9(n5(e))),t(" injectEdgeLabelProxies",()=>zlt(e)),t(" removeEmptyRanks",()=>Zme(e)),t(" nestingGraph.cleanup",()=>Ige(e)),t(" normalizeRanks",()=>Kme(e)),t(" assignRankMinMax",()=>Glt(e)),t(" removeEdgeLabelProxies",()=>Vlt(e)),t(" normalize.run",()=>cge(e)),t(" parentDummyChains",()=>e0e(e)),t(" addBorderSegments",()=>rge(e)),t(" order",()=>Qge(e)),t(" insertSelfEdges",()=>Xlt(e)),t(" adjustCoordinateSystem",()=>age(e)),t(" position",()=>a0e(e)),t(" positionSelfEdges",()=>Klt(e)),t(" removeBorderNodes",()=>Ylt(e)),t(" normalize.undo",()=>uge(e)),t(" fixupEdgeLabelCoords",()=>Hlt(e)),t(" undoCoordinateSystem",()=>sge(e)),t(" translateGraph",()=>Wlt(e)),t(" assignNodeIntersects",()=>qlt(e)),t(" reversePoints",()=>Ult(e)),t(" acyclic.undo",()=>Yme(e))}function _lt(e,t){st(e.nodes(),function(r){var n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,t.children(r).length&&(n.width=i.width,n.height=i.height))}),st(e.edges(),function(r){var n=e.edge(r),i=t.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}function $lt(e){var t=new on({multigraph:!0,compound:!0}),r=W9(e.graph());return t.setGraph(v1({},Dlt,V9(r,Llt),Fm(r,Ilt))),st(e.nodes(),function(n){var i=W9(e.node(n));t.setNode(n,a9(V9(i,Mlt),Nlt)),t.setParent(n,e.parent(n))}),st(e.edges(),function(n){var i=W9(e.edge(n));t.setEdge(n,v1({},Olt,V9(i,Plt),Fm(i,Blt)))}),t}function Flt(e){var t=e.graph();t.ranksep/=2,st(e.edges(),function(r){var n=e.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(t.rankdir==="TB"||t.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function zlt(e){st(e.edges(),function(t){var r=e.edge(t);if(r.width&&r.height){var n=e.node(t.v),i=e.node(t.w),a={rank:(i.rank-n.rank)/2+n.rank,e:t};fu(e,"edge-proxy",a,"_ep")}})}function Glt(e){var t=0;st(e.nodes(),function(r){var n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=co(t,n.maxRank))}),e.graph().maxRank=t}function Vlt(e){st(e.nodes(),function(t){var r=e.node(t);r.dummy==="edge-proxy"&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))})}function Wlt(e){var t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=e.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var d=h.x,f=h.y,p=h.width,m=h.height;t=Math.min(t,d-p/2),r=Math.max(r,d+p/2),n=Math.min(n,f-m/2),i=Math.max(i,f+m/2)}o(u,"getExtremes"),st(e.nodes(),function(h){u(e.node(h))}),st(e.edges(),function(h){var d=e.edge(h);Object.prototype.hasOwnProperty.call(d,"x")&&u(d)}),t-=s,n-=l,st(e.nodes(),function(h){var d=e.node(h);d.x-=t,d.y-=n}),st(e.edges(),function(h){var d=e.edge(h);st(d.points,function(f){f.x-=t,f.y-=n}),Object.prototype.hasOwnProperty.call(d,"x")&&(d.x-=t),Object.prototype.hasOwnProperty.call(d,"y")&&(d.y-=n)}),a.width=r-t+s,a.height=i-n+l}function qlt(e){st(e.edges(),function(t){var r=e.edge(t),n=e.node(t.v),i=e.node(t.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(C9(n,a)),r.points.push(C9(i,s))})}function Hlt(e){st(e.edges(),function(t){var r=e.edge(t);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function Ult(e){st(e.edges(),function(t){var r=e.edge(t);r.reversed&&r.points.reverse()})}function Ylt(e){st(e.nodes(),function(t){if(e.children(t).length){var r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),a=e.node(kf(r.borderLeft)),s=e.node(kf(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),st(e.nodes(),function(t){e.node(t).dummy==="border"&&e.removeNode(t)})}function jlt(e){st(e.edges(),function(t){if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function Xlt(e){var t=Sf(e);st(t,function(r){var n=0;st(r,function(i,a){var s=e.node(i);s.order=a+n,st(s.selfEdges,function(l){fu(e,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function Klt(e){st(e.nodes(),function(t){var r=e.node(t);if(r.dummy==="selfedge"){var n=e.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function V9(e,t){return Bm(Fm(e,t),Number)}function W9(e){var t={};return st(e,function(r,n){t[n.toLowerCase()]=r}),t}var Llt,Dlt,Ilt,Mlt,Nlt,Plt,Olt,Blt,o0e=F(()=>{"use strict";Ln();qo();nge();lge();T9();A9();z9();Mge();Jge();t0e();s0e();pu();o(gT,"layout");o(Rlt,"runLayout");o(_lt,"updateInputGraph");Llt=["nodesep","edgesep","ranksep","marginx","marginy"],Dlt={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Ilt=["acyclicer","ranker","rankdir","align"],Mlt=["width","height"],Nlt={width:0,height:0},Plt=["minlen","weight","width","height","labeloffset"],Olt={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Blt=["labelpos"];o($lt,"buildLayoutGraph");o(Flt,"makeSpaceForEdgeLabels");o(zlt,"injectEdgeLabelProxies");o(Glt,"assignRankMinMax");o(Vlt,"removeEdgeLabelProxies");o(Wlt,"translateGraph");o(qlt,"assignNodeIntersects");o(Hlt,"fixupEdgeLabelCoords");o(Ult,"reversePointsForReversedEdges");o(Ylt,"removeBorderNodes");o(jlt,"removeSelfEdges");o(Xlt,"insertSelfEdges");o(Klt,"positionSelfEdges");o(V9,"selectNumberAttrs");o(W9,"canonicalize")});var q9=F(()=>{"use strict";T9();o0e();A9();z9()});function hc(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Zlt(e),edges:Qlt(e)};return Fn(e.graph())||(t.value=YO(e.graph())),t}function Zlt(e){return mn(e.nodes(),function(t){var r=e.node(t),n=e.parent(t),i={v:t};return Fn(r)||(i.value=r),Fn(n)||(i.parent=n),i})}function Qlt(e){return mn(e.edges(),function(t){var r=e.edge(t),n={v:t.v,w:t.w};return Fn(t.name)||(n.name=t.name),Fn(r)||(n.value=r),n})}var H9=F(()=>{"use strict";Ln();t5();o(hc,"write");o(Zlt,"writeNodes");o(Qlt,"writeEdges")});var Br,Rf,u0e,o5,Wm,Jlt,U9,h0e,ect,qm,c0e,d0e,f0e,p0e,m0e,g0e,tct,Y9=F(()=>{"use strict";vt();qo();H9();Br=new Map,Rf=new Map,u0e=new Map,o5=o(()=>{Rf.clear(),u0e.clear(),Br.clear()},"clear"),Wm=o((e,t)=>{let r=Rf.get(t)||[];return Z.trace("In isDescendant",t," ",e," = ",r.includes(e)),r.includes(e)},"isDescendant"),Jlt=o((e,t)=>{let r=Rf.get(t)||[];return Z.info("Descendants of ",t," is ",r),Z.info("Edge is ",e),e.v===t||e.w===t?!1:r?r.includes(e.v)||Wm(e.v,t)||Wm(e.w,t)||r.includes(e.w):(Z.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),U9=o((e,t,r,n)=>{Z.warn("Copying children of ",e,"root",n,"data",t.node(e),n);let i=t.children(e)||[];e!==n&&i.push(e),Z.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach(a=>{if(t.children(a).length>0)U9(a,t,r,n);else{let s=t.node(a);Z.info("cp ",a," to ",n," with parent ",e),r.setNode(a,s),n!==t.parent(a)&&(Z.warn("Setting parent",a,t.parent(a)),r.setParent(a,t.parent(a))),e!==n&&a!==e?(Z.debug("Setting parent",a,e),r.setParent(a,e)):(Z.info("In copy ",e,"root",n,"data",t.node(e),n),Z.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==n,"node!==clusterId",a!==e));let l=t.edges(a);Z.debug("Copying Edges",l),l.forEach(u=>{Z.info("Edge",u);let h=t.edge(u.v,u.w,u.name);Z.info("Edge data",h,n);try{if(Jlt(u,n)){let d=Rf.get(n)||[],f=d.includes(u.v)||Wm(u.v,n)||u.v===n,p=d.includes(u.w)||Wm(u.w,n)||u.w===n;if(f&&p)Z.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Z.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]));else{let m=f?n:u.v,g=p?n:u.w;Z.info("Rebinding cross-boundary edge as ",m,g,h,u.name),t.setEdge(m,g,h,u.name)}}else Z.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",e)}catch(d){Z.error(d)}})}Z.debug("Removing node",a),t.removeNode(a)})},"copy"),h0e=o((e,t)=>{let r=t.children(e),n=[...r];for(let i of r)u0e.set(i,e),n=[...n,...h0e(i,t)];return n},"extractDescendants"),ect=o((e,t,r)=>{let n=e.edges().filter(u=>u.v===t||u.w===t),i=e.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===t?r:u.v,w:u.w===t?t:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),qm=o((e,t,r)=>{let n=t.children(e);if(Z.trace("Searching children of id ",e,n),n.length<1)return e;let i;for(let a of n){let s=qm(a,t,r),l=ect(t,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),c0e=o(e=>!Br.has(e)||!Br.get(e).externalConnections?e:Br.has(e)?Br.get(e).id:e,"getAnchorId"),d0e=o((e,t)=>{if(!e||t>10){Z.debug("Opting out, no graph ");return}else Z.debug("Opting in, graph ");e.nodes().forEach(function(r){e.children(r).length>0&&(Z.warn("Cluster identified",r," Replacement id in edges: ",qm(r,e,r)),Rf.set(r,h0e(r,e)),Br.set(r,{id:qm(r,e,r),clusterData:e.node(r)}))}),e.nodes().forEach(function(r){let n=e.children(r),i=e.edges();n.length>0?(Z.debug("Cluster identified",r,Rf),i.forEach(a=>{let s=Wm(a.v,r),l=Wm(a.w,r);s^l&&(Z.warn("Edge: ",a," leaves cluster ",r),Z.warn("Descendants of XXX ",r,": ",Rf.get(r)),Br.get(r).externalConnections=!0)})):Z.debug("Not a cluster ",r,Rf)});for(let r of Br.keys()){let n=Br.get(r).id,i=e.parent(n);i!==r&&Br.has(i)&&!Br.get(i).externalConnections&&(Br.get(r).id=i);let a=e.edges().some(s=>s.v===r);if(n&&Br.get(r)?.externalConnections&&a&&g0e(e,n,r)){let s=tct(e,r,e.parent(n));s&&(Br.get(r).id=s)}}e.edges().forEach(function(r){let n=e.edge(r);Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(e.edge(r)));let i=r.v,a=r.w;if(Z.warn("Fix XXX",Br,"ids:",r.v,r.w,"Translating: ",Br.get(r.v)," --- ",Br.get(r.w)),Br.get(r.v)||Br.get(r.w)){if(Z.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=c0e(r.v),a=c0e(r.w),e.removeEdge(r.v,r.w,r.name),i!==r.v){let s=e.parent(i);Br.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=e.parent(a);Br.get(s).externalConnections=!0,n.toCluster=r.w}Z.warn("Fix Replacing with XXX",i,a,r.name),e.setEdge(i,a,n,r.name)}}),Z.warn("Adjusted Graph",hc(e)),f0e(e,0),Z.trace(Br)},"adjustClustersAndEdges"),f0e=o((e,t)=>{if(Z.warn("extractor - ",t,hc(e),e.children("D")),t>10){Z.error("Bailing out");return}let r=e.nodes(),n=!1;for(let i of r){let a=e.children(i);n=n||a.length>0}if(!n){Z.debug("Done, no node has children",e.nodes());return}Z.debug("Nodes = ",r,t);for(let i of r)if(Z.debug("Extracting node",i,Br,Br.has(i)&&!Br.get(i).externalConnections,!e.parent(i),e.node(i),e.children("D")," Depth ",t),!Br.has(i))Z.debug("Not a cluster",i,t);else if(Br.get(i)?.clusterData?.explicitDir&&e.children(i)&&e.children(i).length>0){Z.warn("Cluster with explicit dir, creating subgraph for children",i,t);let a=Br.get(i).clusterData.dir,s=new on({multigraph:!0,compound:!0}).setGraph({rankdir:a,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});U9(i,e,s,i);let l=e.node(i)||{};e.setNode(i,{...l,clusterNode:!0,id:i,clusterData:Br.get(i).clusterData,label:Br.get(i).label,graph:s}),Z.warn("Subgraph for cluster with explicit dir created:",i,hc(s))}else if(!Br.get(i).externalConnections&&e.children(i)&&e.children(i).length>0){Z.warn("Cluster without external connections, without a parent and with children",i,t);let s=e.graph().rankdir==="TB"?"LR":"TB";Br.get(i)?.clusterData?.dir&&(s=Br.get(i).clusterData.dir,Z.warn("Fixing dir",Br.get(i).clusterData.dir,s));let l=new on({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});U9(i,e,l,i);let u=e.node(i)||{};e.setNode(i,{...u,clusterNode:!0,id:i,clusterData:Br.get(i).clusterData,label:Br.get(i).label,graph:l}),Z.debug("Old graph after copy",hc(e))}else Z.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!Br.get(i).externalConnections," no parent: ",!e.parent(i)," children ",e.children(i)&&e.children(i).length>0,e.children("D"),t),Z.debug(Br);r=e.nodes(),Z.warn("New list of nodes",r);for(let i of r){let a=e.node(i);Z.warn(" Now next level",i,a),a?.clusterNode&&f0e(a.graph,t+1)}},"extractor"),p0e=o((e,t)=>{if(t.length===0)return[];let r=Object.assign([],t);return t.forEach(n=>{let i=e.children(n),a=p0e(e,i);r=[...r,...a]}),r},"sorter"),m0e=o(e=>p0e(e,e.children()),"sortNodesByHierarchy"),g0e=o((e,t,r)=>{let n=e.parent(t);for(;n&&n!==r;){let i=Br.get(n);if(i&&!i.externalConnections)return!0;n=e.parent(n)}return!1},"isNodeInExtractableCluster"),tct=o((e,t,r)=>{let n=e.children(t)??[];for(let i of n){if(i===r||Wm(i,r))continue;let a=qm(i,e,t);if(a&&!g0e(e,a,t))return a}return null},"findSafeAnchorNode")});var T0e={};ir(T0e,{getEdgesToRender:()=>x0e,render:()=>sct});var y0e,v0e,rct,nct,ict,act,x0e,b0e,sct,C0e=F(()=>{"use strict";q9();H9();qo();Z4();Kt();Y9();Lm();Wy();G2();vt();Vy();Xt();y0e=o((e,t,r)=>Math.max(t,Math.min(r,e)),"clamp"),v0e=o((e="TB")=>{switch(e){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";case"TB":default:return"top"}},"getDefaultSelfLoopSide"),rct=o(e=>e==="flowchart"||e==="flowchart-v2"||e==="stateDiagram","shouldMergeSelfLoopSegments"),nct=o((e,t,r,n,i)=>{let a=[],s=new Set;if(r.forEach(({start:d,end:f})=>{d!==n&&s.add(d),f!==n&&s.add(f)}),s.forEach(d=>{let f=e.node(d);typeof f?.x=="number"&&typeof f?.y=="number"&&a.push(f)}),a.length===0&&r.forEach(({edge:d})=>{(d.points??[]).forEach(f=>{typeof f?.x=="number"&&typeof f?.y=="number"&&a.push(f)})}),a.length===0)return v0e(i);let l=a.reduce((d,f)=>({x:d.x+f.x/a.length,y:d.y+f.y/a.length}),{x:0,y:0}),u=l.x-t.x,h=l.y-t.y;return Math.abs(u)>Math.abs(h)?u>0?"right":"left":Math.abs(h)>0?h>0?"bottom":"top":v0e(i)},"getSelfLoopSide"),ict=o((e,t="top",r=0,n=0)=>{let i=e.x,a=e.y-r,s=e.width/2,l=e.height/2,u=Math.max(36,Math.min(100,e.width*.8)),h=y0e(Math.max(n,e.width*.35),36,u),d=y0e(Math.min(e.width,e.height)*.45,24,48);switch(t){case"bottom":{let f=a+l;return[{x:i-h/2,y:f},{x:i-h/2,y:f+d},{x:i+h/2,y:f+d},{x:i+h/2,y:f}]}case"right":{let f=i+s;return[{x:f,y:a-h/2},{x:f+d,y:a-h/2},{x:f+d,y:a+h/2},{x:f,y:a+h/2}]}case"left":{let f=i-s;return[{x:f,y:a-h/2},{x:f-d,y:a-h/2},{x:f-d,y:a+h/2},{x:f,y:a+h/2}]}case"top":default:{let f=a-l;return[{x:i-h/2,y:f},{x:i-h/2,y:f-d},{x:i+h/2,y:f-d},{x:i+h/2,y:f}]}}},"getSelfLoopPoints"),act=o((e,t,r="top",n=0,i={})=>{let s=e.x,l=e.y-n,u=i.width??0,h=i.height??0;switch(r){case"bottom":return{x:s,y:Math.max(...t.map(d=>d.y))+h/2+4};case"right":return{x:Math.max(...t.map(d=>d.x))+u/2+4,y:l};case"left":return{x:Math.min(...t.map(d=>d.x))-u/2-4,y:l};case"top":default:return{x:s,y:Math.min(...t.map(d=>d.y))-h/2-4}}},"getSelfLoopLabelPosition"),x0e=o((e,t=0,{mergeSelfLoops:r=!0}={})=>{let n=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(s=>{let l=e.edge(s);if(r&&l.selfLoop){let u=l.selfLoop.id;n.has(u)||n.set(u,[]),n.get(u).push({edge:l,start:s.v,end:s.w})}else i.push({edge:l,start:s.v,end:s.w})}),n.forEach(s=>{if(s.length!==3){s.forEach(x=>i.push(x));return}s.sort((x,b)=>x.edge.selfLoop.order-b.edge.selfLoop.order);let[l,u,h]=s,d=l.edge.originalEdge??u.edge.originalEdge??h.edge.originalEdge??u.edge,f=e.node(d.start);if(!f){s.forEach(x=>i.push(x));return}let p={width:u.edge.width,height:u.edge.height},m=nct(e,f,s,d.start,a),g=ict(f,m,t,p.width??0),y=act(f,g,m,t,p),v={...u.edge,...d,id:d.id,points:g,start:d.start,end:d.end,x:y.x,y:y.y,width:p.width,height:p.height,labelStyle:u.edge.labelStyle,fromCluster:l.edge.fromCluster??u.edge.fromCluster??h.edge.fromCluster,toCluster:l.edge.toCluster??u.edge.toCluster??h.edge.toCluster};delete v.selfLoop,delete v.originalEdge,i.push({edge:v,start:v.start,end:v.end})}),i},"getEdgesToRender"),b0e=o(async(e,t,r,n,i,a)=>{Z.warn("Graph in recursive render:XAX",hc(t),i);let s=t.graph().rankdir;Z.trace("Dir in recursive render - dir:",s);let l=e.insert("g").attr("class","root");t.nodes()?Z.info("Recursive render XXX",t.nodes()):Z.info("No nodes found for",t),t.edges().length>0&&Z.info("Recursive edges",t.edge(t.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),d=l.insert("g").attr("class","edgeLabels"),f=l.insert("g").attr("class","nodes"),p=rct(r);await Promise.all(t.nodes().map(async function(b){let T=t.node(b);if(i!==void 0){let k=JSON.parse(JSON.stringify(i.clusterData));Z.trace(`Setting data for parent cluster XXX + Node.id = `,b,` + data=`,k.height,` +Parent cluster`,i.height),t.setNode(i.id,k),t.parent(b)||(Z.trace("Setting parent",b,i.id),t.setParent(b,i.id,k))}if(Z.info("(Insert) Node XXX"+b+": "+JSON.stringify(t.node(b))),T?.clusterNode){Z.info("Cluster identified XBX",b,T.width,t.node(b));let{ranksep:k,nodesep:C}=t.graph();T.graph.setGraph({...T.graph.graph(),ranksep:k+25,nodesep:C});let w=await b0e(f,T.graph,r,n,t.node(b),a),S=w.elem;pt(T,S),T.diff=w.diff||0,Z.info("New compound node after recursive render XAX",b,"width",T.width,"height",T.height),Kce(S,T)}else t.children(b).length>0?(Z.trace("Cluster - the non recursive path XBX",b,T.id,T,T.width,"Graph:",t),Z.trace(qm(T.id,t)),Br.set(T.id,{id:qm(T.id,t),node:T})):(Z.trace("Node - the non recursive path XAX",b,f,t.node(b),s),await nf(f,t.node(b),{config:a,dir:s}))})),await o(async()=>{let b=t.edges().map(async function(T){let k=t.edge(T.v,T.w,T.name);if(Z.info("Edge "+T.v+" -> "+T.w+": "+JSON.stringify(T)),Z.info("Edge "+T.v+" -> "+T.w+": ",T," ",JSON.stringify(t.edge(T))),Z.info("Fix",Br,"ids:",T.v,T.w,"Translating: ",Br.get(T.v),Br.get(T.w)),p&&k.selfLoop){if(k.selfLoop.order!==1)return;let C=k.id;k.id=k.selfLoop.id,await Rm(d,k),k.id=C;return}await Rm(d,k)});await Promise.all(b)},"processEdges")(),Z.info("Graph before layout:",JSON.stringify(hc(t))),Z.info("############################################# XXX"),Z.info("### Layout ### XXX"),Z.info("############################################# XXX"),gT(t),Z.info("Graph after layout:",JSON.stringify(hc(t)));let g=0,{subGraphTitleTotalMargin:y}=oc(a);await Promise.all(m0e(t).map(async function(b){let T=t.node(b);if(Z.info("Position XBX => "+b+": ("+T.x,","+T.y,") width: ",T.width," height: ",T.height),T?.clusterNode)T.y+=y,Z.info("A tainted cluster node XBX1",b,T.id,T.width,T.height,T.x,T.y,t.parent(b)),Br.get(T.id).node=T,_m(T);else if(t.children(b).length>0){Z.info("A pure cluster node XBX1",b,T.id,T.x,T.y,T.width,T.height,t.parent(b)),T.height+=y,t.node(T.parentId);let k=T?.padding/2||0,C=T?.labelBBox?.height||0,w=C-k||0;Z.debug("OffsetY",w,"labelHeight",C,"halfPadding",k),await rf(u,T),Br.get(T.id).node=T}else{let k=t.node(T.parentId);T.y+=y/2,Z.info("A regular node XBX1 - using the padding",T.id,"parent",T.parentId,T.width,T.height,T.x,T.y,"offsetY",T.offsetY,"parent",k,k?.offsetY,T),_m(T)}}));let v=y/2;return x0e(t,v,{mergeSelfLoops:p}).forEach(function({edge:b,start:T,end:k}){Z.info("Edge "+T+" -> "+k+": "+JSON.stringify(b),b),b.points.forEach(R=>R.y+=v);let C=t.node(T),w=t.node(k),S=Hy(h,b,Br,r,C,w,n);K4(b,S)}),t.nodes().forEach(function(b){let T=t.node(b);Z.info(b,T.type,T.diff),T.isGroup&&(g=T.diff)}),Z.warn("Returning from recursive render XAX",l,g),{elem:l,diff:g}},"recursiveRender"),sct=o(async(e,t)=>{let r=new on({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=t.select("g");Uy(n,e.markers,e.type,e.diagramId),J4(),X4(),q4(),o5(),e.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Z.debug("Edges:",e.edges),e.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let d=structuredClone(a),f=structuredClone(a),p=structuredClone(a),m=structuredClone(a);f.originalEdge=d,f.selfLoop={id:d.id,order:0},p.originalEdge=d,p.selfLoop={id:d.id,order:1},m.originalEdge=d,m.selfLoop={id:d.id,order:2},f.label="",f.arrowTypeEnd="none",f.endLabelLeft="",f.endLabelRight="",f.startLabelLeft="",f.id=s+"-cyclic-special-1",p.startLabelRight="",p.startLabelLeft="",p.endLabelLeft="",p.endLabelRight="",p.arrowTypeStart="none",p.arrowTypeEnd="none",p.id=s+"-cyclic-special-mid",m.label="",m.startLabelRight="",m.startLabelLeft="",m.arrowTypeStart="none",h.isGroup&&(f.fromCluster=s,m.toCluster=s),m.id=s+"-cyclic-special-2",m.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,p,s+"-cyclic-special-1"),r.setEdge(u,s,m,s+"-cyclic-special-2")}else r.setEdge(a.start,a.end,{...a},a.id)}),Z.warn("Graph at first:",JSON.stringify(hc(r))),d0e(r),Z.warn("Graph after XAX:",JSON.stringify(hc(r)));let i=Ae();await b0e(n,r,e.type,e.diagramId,void 0,i)},"render")});var w0e=F(()=>{"use strict"});var S0e={};ir(S0e,{captureNodeSizes:()=>hct,shouldCaptureSizes:()=>lct});function k0e(){if(!(typeof globalThis>"u"))return globalThis}function lct(){return!!k0e()?.mermaidCaptureSizes}function cct(){return typeof location>"u"?"browser-dev":`${location.pathname}${location.search}`}function uct(e,t){let r=k0e();if(!r)return;let n=t.node(),a=((n&&"ownerSVGElement"in n?n.ownerSVGElement:null)??n)?.id??"(unknown)";r.mermaidCapturedSizes??=[];let s={svgId:a,sizes:e};r.mermaidCapturedSizes.push(s),r.mermaidLastCapturedSizes=s}function hct(e,t){let r=[];for(let n of t.nodes)n.isGroup||r.push({id:n.id,width:n.width??0,height:n.height??0});r.length!==0&&uct({metadata:{captureVersion:1,capturedAt:new Date().toISOString(),capturedFrom:cct()},nodes:r},e)}var E0e=F(()=>{"use strict";w0e();o(k0e,"getCaptureGlobal");o(lct,"shouldCaptureSizes");o(cct,"capturedFromLocation");o(uct,"emitCapturedSizes");o(hct,"captureNodeSizes")});async function A0e(e,t){let r=new on({multigraph:!0,compound:!0}),n=[...t.edges],i=Ae(),a=e.insert("g").attr("class","root"),s=a.insert("g").attr("class","clusters"),l=a.insert("g").attr("class","edges edgePath"),u=a.insert("g").attr("class","edgeLabels"),h=a.insert("g").attr("class","nodes"),d=new Map,f=e.node()!=null;await Promise.all(t.nodes.map(async p=>{if(p.isGroup)r.setNode(p.id,{...p});else{if(f){let m=await nf(h,p,{config:i,dir:p.dir}),g=m.node()?.getBBox()??{width:0,height:0};d.set(p.id,m),p.width=g.width,p.height=g.height}r.setNode(p.id,{...p})}}));for(let p of n)r.setEdge(p.start,p.end,{...p},p.id),t.edges.some(g=>g.id===p.id)||t.edges.push(p);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:p}=await Promise.resolve().then(()=>(E0e(),S0e));p(e,t)}return{graph:r,groups:{clusters:s,edgePaths:l,edgeLabels:u,nodes:h,rootGroups:a},nodeElements:d}}var R0e=F(()=>{"use strict";qo();Xt();Lm();o(A0e,"createGraphWithElements")});function j9(e){let t=[];for(let r=0;r=1-c5||p<=c5||p>=1-c5?null:{point:{x:e.x+f*i,y:e.y+f*a},tA:f,tB:p}}function L0e(e){return Math.abs(e.b.x-e.a.x)>=Math.abs(e.b.y-e.a.y)}function fct(e){let t=[];for(let r=0;r=Math.abs(r)?t>=0?1:0:r>=0?1:0}function gct(e,t){if(e.length<2)return e.map(a=>({...a}));let r=e.map(a=>({...a})),n=t.arrowTypeStart&&Yi[t.arrowTypeStart];if(n){let a=e[0],s=e[1],l=Math.atan2(s.y-a.y,s.x-a.x);r[0].x=a.x+n*Math.cos(l),r[0].y=a.y+n*Math.sin(l)}let i=t.arrowTypeEnd&&Yi[t.arrowTypeEnd];if(i){let a=e.length,s=e[a-2],l=e[a-1],u=Math.atan2(l.y-s.y,l.x-s.x);r[a-1].x=l.x-i*Math.cos(u),r[a-1].y=l.y-i*Math.sin(u)}return r}function yct(e,t,r,n,i){let a=e.point.x,s=e.point.y,l={x:a-t*e.r,y:s-r*e.r},u={x:a+t*e.r,y:s+r*e.r},h=[`L${yT(l)}`];return i==="arc"?h.push(`A${mu(e.r)},${mu(e.r)} 0 0 ${n} ${yT(u)}`):h.push(`M${yT(u)}`),h}function D0e(e,t,r,n){let i=t.x-e.x,a=t.y-e.y,s=r.x-t.x,l=r.y-t.y,u=Math.hypot(i,a),h=Math.hypot(s,l);if(u0){let T=D0e(i[h-1],i[h],i[h+1]??i[h],_0e);T&&(y=T.cutLen)}let v=f,x=null;a&&hT.t-k.t);for(let T of b)T.r=Math.min(T.r,T.d-y,v-T.d);for(let T=0;Tk){let C=k/2;b[T].r=Math.min(b[T].r,C),b[T+1].r=Math.min(b[T+1].r,C)}}for(let T of b)T.r=2?n:null}catch{return null}}function I0e(e,t,r){if(!r.enabled)return;let n=e.node();if(!n)return;let i=new Map;for(let h of t)i.set(h.id,h);let a=[],s=new Map;for(let h of t){let d=typeof CSS<"u"&&CSS.escape?CSS.escape(h.id):h.id,f=n.querySelector(`path[data-id="${d}"]`);if(!f)continue;s.set(h.id,f);let m=Tct(f.getAttribute("data-points"))??h.points;a.push({...h,points:m})}let l=fct(a);if(l.length===0)return;let u=new Map;for(let h of l){let d=u.get(h.jumpEdgeId)??[];d.push(h),u.set(h.jumpEdgeId,d)}for(let h of a){let d=u.get(h.id);if(!d||d.length===0)continue;let p=i.get(h.id)?.curve;if(p!==void 0&&!bct(p))continue;let m=s.get(h.id);if(!m)continue;if(p===void 0){let T=m.getAttribute("d")??"";if(!xct(T))continue}let g=m.getAttribute("style")??"",y=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(g),v=y?Number.parseFloat(y[1]):null,x=y?Number.parseFloat(y[2]):null,b=vct(h,d,r);if(m.setAttribute("d",b),v!==null&&x!==null&&typeof m.getTotalLength=="function"){let T=m.getTotalLength(),k=Math.max(0,T-v-x),C=`0 ${v} ${k} ${x}`,w=g.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${C};`).replace(/;\s*;+/g,";");m.setAttribute("style",w)}}}var _0e,l5,c5,mct,M0e=F(()=>{"use strict";Y4();_0e=5,l5=1e-5,c5=1e-6;o(j9,"buildSegmentList");o(dct,"segmentIntersection");o(L0e,"isHorizontalSeg");o(fct,"findEdgeIntersections");o(mu,"fmt");o(yT,"pointToString");o(pct,"getArcSweepFlag");mct=.001;o(gct,"applyMarkerOffsets");o(yct,"emitJump");o(D0e,"computeRoundedCorner");o(vct,"rewriteEdgePath");o(xct,"isStraightPath");o(bct,"curveSupportsLineHops");o(Tct,"decodeDataPoints");o(I0e,"applyLineJumpsToSvg")});async function N0e(e,t){for(let i of e.nodes)i.isGroup?await rf(t.clusters,i):_m(i);let r=new Map;for(let i of e.nodes)i?.id&&r.set(i.id,i);for(let i of e.edges){let a=i.start?r.get(i.start)??{}:{},s=i.end?r.get(i.end)??{}:{},l=Hy(t.edgePaths,{...i},{},e.type,a,s,e.diagramId);i.label&&await Rm(t.rootGroups,i),i.label&&Cct(i,l)}let n=e.config?.swimlane?.lineHops;if(n!==!1){let i=n==="gap"?"gap":"arc",a=e.edges.filter(s=>Array.isArray(s.points)&&s.points.length>=2).map(s=>({id:s.id,points:s.points,curve:s.curve,arrowTypeStart:s.arrowTypeStart,arrowTypeEnd:s.arrowTypeEnd}));I0e(t.edgePaths,a,{enabled:!0,jumpRadius:6,jumpStyle:i})}}function Cct(e,t){let r=t?.updatedPath??t?.originalPath,n=_t(),{subGraphTitleTotalMargin:i}=oc({flowchart:n.flowchart??{}});if(e.label){let a=qy.get(e.id),s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e?.startLabelLeft){let a=_i.get(e.id).startLeft,s=e?.x,l=e?.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=_i.get(e.id).startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=_i.get(e.id).endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=_i.get(e.id).endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}}var P0e=F(()=>{"use strict";Lm();Wy();G2();M0e();vt();Vy();ur();Qt();o(N0e,"adjustLayout");o(Cct,"positionEdgeLabel")});function O0e(e){return Math.max(e.padding??20,20)}function wct(e){let{x:t,y:r,width:n,height:i}=e,a=e.swimlaneContentTop;if(typeof t!="number"||typeof r!="number"||typeof n!="number"||typeof i!="number"||typeof a!="number"||!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(i)||!Number.isFinite(a)||n<=0||i<=0){delete e.groupTitleRect;return}let s=r-i/2,l=Math.min(a,r+i/2),u=Math.min(21,Math.max(0,l-s)),h=s+u;if(h<=s){delete e.groupTitleRect;return}e.groupTitleRect={left:t-n/2,right:t+n/2,top:s,bottom:h}}function B0e(e){let t=e.direction,r=e.nodes??=[];for(let a of e.nodes??[])a.isGroup&&!a.parentId&&(a.shape="swimlane",t&&(a.direction=t));let n=r.filter(a=>!a.isGroup&&!a.parentId);if(n.length===0)return;let i=r.find(a=>a.id===X9);i?i.isGroup&&(i.shape="swimlane",t&&(i.direction=t)):(i={id:X9,label:"",isGroup:!0,shape:"swimlane",padding:20,...t?{direction:t}:{}},r.push(i));for(let a of n)a.parentId=X9}function $0e(e){let t=new Map;for(let u of e.nodes??[])t.set(u.id,u);let r=[];for(let u of e.edges??[]){let h=typeof u.start=="string"?u.start:void 0,d=typeof u.end=="string"?u.end:void 0;!h||!d||u.labelNodeId||r.push({id:u.id,src:h,dst:d,ref:u})}let n=e.nodes??[],i=n.filter(u=>u.isGroup),a=n.filter(u=>!u.isGroup);return{nodes:[...[...i].reverse(),...a].map(u=>u.id),edges:r,layout:e,nodeById:t}}function F0e(e,t,r,n){let{layout:i}=e,a=e.nodeById,s=n?.layerGap??100,l=n?.nodeGap??40,u=0;for(let p of t.layers){let m=0;for(let g of p){let y=a.get(g);if(!y){m++;continue}y.layer=u,y.order=m;let v=r.x[g]??m*l,x=r.y[g]??u*s;y.x=v,y.y=x,m++}u++}let h=i.nodes??[],d=new Map,f=[];for(let p of h){if(!p?.isGroup)continue;p.parentId||f.push(p);let m=h.filter(b=>b.parentId===p.id),g=1/0,y=-1/0,v=1/0,x=-1/0;for(let b of m){let T=b.x??r.x[b.id],k=b.y??r.y[b.id],C=b.width??0,w=b.height??0;T!=null&&k!=null&&(g=Math.min(g,T-C/2),y=Math.max(y,T+C/2),v=Math.min(v,k-w/2),x=Math.max(x,k+w/2))}if(g===1/0||v===1/0)p.x=p.x??0,p.y=p.y??0,p.width=p.width??0,p.height=p.height??0;else{let b=p.padding??20,T=p.parentId?b:2*O0e(p),k=b,C=Math.max(0,y-g)+T,w=Math.max(0,x-v)+k,S=(g+y)/2,R=(v+x)/2;p.x=S,p.y=R,p.width=C,p.height=w,d.set(p.id,{minX:g,maxX:y,minY:v,maxY:x})}}if(f.length>0&&d.size>0){let p=1/0,m=-1/0,g=0;for(let y of f){let v=y.padding??20;v>g&&(g=v);let x=d.get(y.id);x&&(p=Math.min(p,x.minY),m=Math.max(m,x.maxY))}if(p!==1/0&&m!==-1/0){let y=Math.max(0,m-p),x=Math.max(g,36),b=y+2*x,T=(p+m)/2;for(let L of f)L.y=T,L.height=b,L.swimlaneContentTop=p;let k=[...f].sort((L,N)=>{let I=L.x??0,_=N.x??0;return I-_}),C=[],w=[],S=[];for(let L of k){let N=d.get(L.id);if(!N)continue;let I=Math.max(0,N.maxX-N.minX)+2*O0e(L),_=(N.minX+N.maxX)/2;C.push(L.id),w.push(_),S.push(I)}let R=C.length;if(R>0){let L=new Map;if(R===1)L.set(C[0],S[0]);else{let N=[];for(let D=0;D{"use strict";X9="__swimlane_default__";o(O0e,"topLaneHorizontalPadding");o(wct,"assignTopLaneTitleRect");o(B0e,"prepareLayoutForSwimlanes");o($0e,"toGraphView");o(F0e,"writeBackToLayoutData")});function z0e(e){let t=[],r=[],n=new Map;for(let s of e.nodes)n.set(s.id,s);for(let s of e.edges){if(!s.label||s.label.length===0||s.isLayoutOnly||s.labelNodeId)continue;let l=s.start?n.get(s.start):void 0,u=s.end?n.get(s.end):void 0;if(!l||!u){Z.warn(kct,`Edge ${s.id} has missing source or target node`);continue}let h=`edge-label-${s.start}-${s.end}-${s.id}`,f=l.parentId!==u.parentId?u.parentId:l.parentId,p={id:h,label:s.label,edgeStart:s.start??"",edgeEnd:s.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:f,isGroup:!1,labelStyle:Array.isArray(s.labelStyle)?s.labelStyle[0]:s.labelStyle??"",...l.dir?{dir:l.dir}:{}};t.push(p),s.labelNodeId=h,s.label=void 0,s.text=void 0;let m={id:`${s.id}-to-label`,start:s.start,end:h,type:"normal",isLayoutOnly:!0},g={id:`${s.id}-from-label`,start:h,end:s.end,type:"normal",isLayoutOnly:!0};r.push(m,g)}let i=[...e.nodes,...t],a=[...e.edges,...r];return{...e,nodes:i,edges:a}}var kct,G0e=F(()=>{"use strict";vt();kct="[EdgeLabelNodes]";o(z0e,"createEdgeLabelNodes")});function W0e(e){let t=e.x??0,r=e.y??0,n=e.width??0,i=e.height??0;return n>0&&i>0?{cx:t,cy:r,rect:x1(t,r,n,i)}:void 0}function q0e(e){if(e.isGroup)return;let t=W0e(e);return t?{id:String(e.id??""),cx:t.cx,cy:t.cy,rect:t.rect}:void 0}function uo(e,t,r=.001){return Math.abs(e.x-t.x)r}function Ti(e,t,r=.001){return Qr(e,t,r)&&Math.abs(e.y-t.y)>r}function ls(e,t,r,n){return Math.max(0,Math.min(Math.max(e,t),Math.max(r,n))-Math.max(Math.min(e,t),Math.min(r,n)))}function dc(e,t,r=.001){return e.horizontal&&t.horizontal&&tn(e.a,t.a,r)?ls(e.a.x,e.b.x,t.a.x,t.b.x):e.vertical&&t.vertical&&Qr(e.a,t.a,r)?ls(e.a.y,e.b.y,t.a.y,t.b.y):0}function _f(e,t=.001){let r=[];for(let n=0;n0?r[r.length-1]:void 0;(!i||!uo(i,n,t))&&r.push({x:n.x,y:n.y})}return r}function u5(e,t=.001){if(!e||e.length!==4)return;let[r,n,i,a]=e;return bi(r,n,t)&&Ti(n,i,t)&&bi(i,a,t)?{kind:"HVH",p0:r,p1:n,p2:i,p3:a}:Ti(r,n,t)&&bi(n,i,t)&&Ti(i,a,t)?{kind:"VHV",p0:r,p1:n,p2:i,p3:a}:void 0}function vT(e,t,r,n=0){let i=Math.min(e.x,t.x),a=Math.max(e.x,t.x),s=Math.min(e.y,t.y),l=Math.max(e.y,t.y);return a>r.left-n&&ir.top-n&&st.left+r&&e.xt.top+r&&e.y=t.right&&e.top<=t.top&&e.bottom>=t.bottom}function d5(e,t){return e.leftt.left&&e.topt.top}function Z9(e,t){return{left:e.left-t,right:e.right+t,top:e.top-t,bottom:e.bottom+t}}function x1(e,t,r,n){return{left:e-r/2,right:e+r/2,top:t-n/2,bottom:t+n/2}}function Sa(e){return W0e(e)?.rect}function Lf(e,t){switch(t){case"top":return{x:e.cx,y:e.rect.top};case"bottom":return{x:e.cx,y:e.rect.bottom};case"left":return{x:e.rect.left,y:e.cy};case"right":return{x:e.rect.right,y:e.cy}}}function f5(e,t,r,n,i,a=.001){let s=t==="left"||t==="right",l=n==="left"||n==="right";if(s&&l){if(t==="right"&&n==="left"&&e.xr.x){if(tn(e,r,a))return[e,r];let f=(e.x+r.x)/2;return[e,{x:f,y:e.y},{x:f,y:r.y},r]}if(t===n){if(tn(e,r,a))return;let f=t==="left"?Math.min(e.x,r.x)-i:Math.max(e.x,r.x)+i;return[e,{x:f,y:e.y},{x:f,y:r.y},r]}return}if(!s&&!l){if(t===n){if(Qr(e,r,a))return;let p=t==="top"?Math.min(e.y,r.y)-i:Math.max(e.y,r.y)+i;return[e,{x:e.x,y:p},{x:r.x,y:p},r]}if(!(t==="bottom"&&n==="top"&&e.yr.y))return;if(Qr(e,r,a))return[e,r];let f=(e.y+r.y)/2;return[e,{x:e.x,y:f},{x:r.x,y:f},r]}if(s&&!l){let d=t==="right"&&r.x>e.x||t==="left"&&r.xr.y;return d&&f?[e,{x:r.x,y:e.y},r]:void 0}let u=t==="bottom"&&r.y>e.y||t==="top"&&r.yr.x;return u&&h?[e,{x:e.x,y:r.y},r]:void 0}function p5(e,t,r,n){return t==="left"||t==="right"?[e,{x:n,y:e.y},{x:n,y:r.y},r]:[e,{x:e.x,y:n},{x:r.x,y:n},r]}function b1(e){let t=new Map,r=[];for(let n of e){if(n.isEdgeLabel)continue;let i=q0e(n);i&&(t.set(i.id,i),r.push({id:i.id,rect:i.rect}))}return{nodeInfoById:t,realNodeRects:r}}function gu(e){let t=[],r=[];for(let n of e){let i=q0e(n);if(!i)continue;let a={id:i.id,rect:i.rect};n.isEdgeLabel?r.push(a):t.push(a)}return{realNodeRects:t,labelNodeRects:r}}function U0e(e,{includeEdgeLabels:t=!0}={}){let r=[];for(let n of e){if(n.isGroup||!t&&n.isEdgeLabel)continue;let i=n.x??0,a=n.y??0,s=n.width??0,l=n.height??0;r.push({nodeId:n.id,...x1(i,a,s,l)})}return r}function m5(e,t,r=.001){let n=e.start,i=e.end;if(!n||!i)return;let a=t.get(n),s=t.get(i);if(!(!a||!s))return{srcId:n,dstId:i,srcInfo:a,dstInfo:s,collinearX:Math.abs(a.cx-s.cx)g||px)return!1;let b=Math.abs(y-d.a.x)i:a&&l&&tn(e,r,i)?ls(e.x,t.x,r.x,n.x)>i:!1}function xT(e,t,r,n,{epsilon:i=.001,skipDegenerateOther:a=!1}={}){for(let s of r){if(s===n||s.isLayoutOnly)continue;let l=s.points;if(!(!l||l.length<2))for(let u=0;up+i&&gy+i&&fn+.001&&e=2?t[t.length-2]:void 0,u=(s?Qr(s,i):!1)?{x:i.x,y:a.y}:{x:a.x,y:i.y};t.push(u)}t.push(a)}let r=[];for(let n of t){let i=r[r.length-1];(!i||!uo(i,n))&&r.push(n)}return r}function Tl(e){if(e.length<3)return e;let t=[...e];for(let r=0;r<32;r++){let n=Act(t);if(t=n.points,!n.changed)break}return t}var pc=F(()=>{"use strict";o(W0e,"measuredNodeRect");o(q0e,"nodeBoundsInfoFor");o(uo,"samePoint");o(Qr,"sameX");o(tn,"sameY");o(bi,"isHorizontalSegment");o(Ti,"isVerticalSegment");o(ls,"overlapLength");o(dc,"sameAxisSegmentOverlapLength");o(_f,"orthogonalSegmentsForPoints");o(ho,"countOrthogonalBends");o(Jr,"dedupeConsecutivePoints");o(u5,"classifyThreeSegmentRoute");o(vT,"segmentBoundsOverlapRect");o(h5,"pointInsideRect");o(H0e,"rectContainsRect");o(d5,"rectsOverlap");o(Z9,"inflateRect");o(x1,"rectFromCenterSize");o(Sa,"rectOfNodeBounds");o(Lf,"portForRectSide");o(f5,"buildOrthogonalPortPath");o(p5,"buildSameSideTrackPath");o(b1,"collectRealNodeBounds");o(gu,"collectNodeRectEntries");o(U0e,"collectLayoutNodeRects");o(m5,"getNodePairGeometry");o(Xn,"segmentHitsAnyRect");o(Q9,"orthogonalSegmentsCross");o(Sct,"sameAxisSegmentsOverlap");o(xT,"segmentConflictsWithAnyEdge");o(fc,"orthogonalSegmentsStrictlyCross");o(V0e,"strictlyBetween");o(Ect,"isCollinearIntermediate");o(Act,"simplifyPolylineOnce");o(bT,"orthogonalizePolyline");o(Tl,"simplifyPolyline")});function nye(e,t,r){let n=e;if(n.isLayoutOnly||!n.points||n.points.length=0&&i=e.length)return e;let a=i-n;if(a<0||a>=e.length)return e;let s=_ct(e[i],e[a],t);return r?[s,...e.slice(i)]:[...e.slice(0,i+1),s]}function iye(e,t){for(let r of e){let n=nye(r,t,2);if(!n)continue;let i=[...n.points];n.srcRect&&(i=j0e(i,n.srcRect,!0)),n.dstRect&&(i=j0e(i,n.dstRect,!1)),i=Tl(bT(i)),i=aye(i,n.srcRect,n.dstRect),n.edge.points=Tl(bT(i))}}function X0e(e,t,r,n=!1){if(tn(e,t,Sr)){if(t.yr.bottom+Sr)return t;if(n){if(e.xr.right+Sr)return{x:r.right,y:e.y}}return{x:Math.abs(t.x-r.left)<=Math.abs(t.x-r.right)?r.left:r.right,y:e.y}}if(Qr(e,t,Sr)){if(t.xr.right+Sr)return t;if(n){if(e.yr.bottom+Sr)return{x:e.x,y:r.bottom}}let i=Math.abs(t.y-r.top)<=Math.abs(t.y-r.bottom);return{x:e.x,y:i?r.top:r.bottom}}return t}function J9(e,t,r){let n=e[t];for(let i=t+r;i>=0&&in.lo)),r=Math.min(...e.map(n=>n.hi));if(!(t>r))return{lo:t,hi:r}}function Z0e(e,t){return t==="left"||t==="right"?eB(e.top,e.bottom):eB(e.left,e.right)}function tB(e,t,r){let n=e.y>=r.top-Sr&&e.y<=r.bottom+Sr,i=e.x>=r.left-Sr&&e.x<=r.right+Sr;if(tn(e,t,Sr)&&n){if(Math.abs(e.x-r.left)0?Lct(a):void 0}function Q0e(e,t,r,n,i){let a=Dct(e,t,r,n,i);if(!a)return;let s=i?e.y:e.x,l=Math.min(a.hi,Math.max(a.lo,s));if(!(Math.abs(l-s)({...l}));for(let l=t;l>=0&&l=r.left-Sr&&Math.max(e.x,t.x)<=r.right+Sr,i=Math.min(e.y,t.y)>=r.top-Sr&&Math.max(e.y,t.y)<=r.bottom+Sr;if(Math.abs(e.y-r.top)n.bottom+Sr;case"left":return tn(t,r,Sr)&&r.xn.right+Sr}}function rye(e,t,r){if(e.length<3)return e;if(r){let a=eye(e[0],e[1],t);return a&&tye(a,e[1],e[2],t)?e.slice(1):e}let n=e.length-1,i=eye(e[n-1],e[n],t);return i&&tye(i,e[n-1],e[n-2],t)?e.slice(0,n):e}function Nct(e,t,r){let n=e;if(t){let a=J9(n,0,1);if(a){let s=X0e(a,n[0],t);s!==n[0]&&(n=[s,...n.slice(1)])}n=rye(n,t,!0)}if(r){let a=n.length-1,s=J9(n,a,-1);if(s){let l=X0e(s,n[a],r,!0);l!==n[a]&&(n=[...n.slice(0,a),l])}n=rye(n,r,!1)}let i=aye(n,t,r);return i!==n||n.length===2?i:(t&&(n=J0e(n,t,!0)),r&&(n=J0e(n,r,!1)),n)}function rB(e,t){for(let r of e){let n=nye(r,t,2);if(!n)continue;let i=Jr(n.points,Sr),a=Nct(i,n.srcRect,n.dstRect);if(a.length<3){n.edge.points=a;continue}let s=[a[0],{...a[0]},...a.slice(1,-1),a[a.length-1],{...a[a.length-1]}];n.edge.points=s}}var Sr,Rct,Y0e,sye=F(()=>{"use strict";pc();Sr=.001,Rct=.5,Y0e=4;o(nye,"endpointContextFor");o(_ct,"segmentEnterPoint");o(j0e,"clipEndpoint");o(iye,"clipEdgeEndpointsToNodeBoundaries");o(X0e,"snapEndpointToBoundary");o(J9,"firstDistinctAdjacent");o(eB,"cornerClearanceRange");o(K0e,"clampToCornerClearance");o(Lct,"intersectRanges");o(Z0e,"clearanceRangeForSide");o(tB,"terminalSideForSegment");o(g5,"isHorizontalSide");o(Dct,"straightClearanceRange");o(Q0e,"clearStraightEndpointCornerAxis");o(aye,"clearStraightEndpointCornerConnections");o(Ict,"cornerClearedEndpoint");o(Mct,"moveCollinearEndpointRun");o(J0e,"clearEndpointCornerConnection");o(eye,"borderSideForSegment");o(tye,"leavesOutward");o(rye,"collapseOwnBorderStub");o(Nct,"snapAndCollapseEndpoints");o(rB,"prepareEdgeEndpointsForRenderer")});function lye(e){return new Map(e.map(t=>[t.id,t]))}function Pct(e,t){let r=e.parentId,n=null;for(;r;){let i=t.get(r);if(!i?.isGroup)break;n=i.id,r=i.parentId}return n}function oye(e,t){let r=0,n=e.parentId;for(;n;){let i=t.get(n);if(!i?.isGroup)break;r++,n=i.parentId}return r}function cye(e){let t=1/0,r=-1/0,n=1/0,i=-1/0;for(let a of e){let s=a.x,l=a.y;if(typeof s!="number"||typeof l!="number")continue;let u=a.width??0,h=a.height??0;t=Math.min(t,s-u/2),r=Math.max(r,s+u/2),n=Math.min(n,l-h/2),i=Math.max(i,l+h/2)}return t===1/0||n===1/0?null:{minX:t,maxX:r,minY:n,maxY:i}}function Oct(e,t){let r=e.padding??20;e.x=(t.minX+t.maxX)/2,e.y=(t.minY+t.maxY)/2,e.width=Math.max(0,t.maxX-t.minX)+r,e.height=Math.max(0,t.maxY-t.minY)+r}function Bct(e){let t=lye(e),r=e.filter(n=>n.isGroup&&n.parentId).sort((n,i)=>oye(i,t)-oye(n,t));for(let n of r){let i=e.filter(s=>s.parentId===n.id),a=cye(i);a&&Oct(n,a)}}function nB(e,t){let r=e.nodes??[],n=e.edges??[],i=r.filter(u=>!u.isGroup),a=1/0,s=-1/0;for(let u of i){let h=u[t];typeof h=="number"&&(a=Math.min(a,h),s=Math.max(s,h))}if(!Number.isFinite(a)||!Number.isFinite(s))return!1;let l=o(u=>a+s-u,"mirror");for(let u of r){let h=u[t];typeof h=="number"&&(u[t]=l(h));let d=u.groupTitleRect;d&&(u.groupTitleRect=t==="x"?{...d,left:l(d.right),right:l(d.left)}:{...d,top:l(d.bottom),bottom:l(d.top)})}for(let u of n)for(let h of u.points??[])h[t]=l(h[t]);return!0}function uye(e){return(e.nodes??[]).some(r=>!r.isGroup)?nB(e,"y"):!0}function hye(e,t="LR"){let r=e.nodes??[],n=e.edges??[],i=r.filter(A=>!A.isGroup),a=1/0,s=1/0;for(let A of i){let M=A.x??0,D=A.y??0;M0?Math.max(1,d/f):1;for(let A of i){let M=A.x??0,P=((A.y??0)-s)*p+l,B=M-a;A.x=P,A.y=B}for(let A of n)if(A.points)for(let M of A.points){let D=M.x,B=(M.y-s)*p+l,O=D-a;M.x=B,M.y=O}Bct(r);let m=r.filter(A=>A.isGroup&&!A.parentId);if(m.length===0)return t==="RL"&&nB(e,"x"),!0;let g=lye(r),y=new Map;for(let A of r){if(A.isGroup)continue;let M=Pct(A,g);if(!M)continue;let D=y.get(M)??[];D.push(A),y.set(M,D)}let v=0;for(let A of m){let M=A.padding??0;M>v&&(v=M)}let x=[],b=1/0,T=-1/0;for(let A of m){let M=y.get(A.id)??[],D=cye(M);D&&(b=Math.min(b,D.minX),T=Math.max(T,D.maxX),x.push({lane:A,contentTop:D.minY,contentBottom:D.maxY,centerY:(D.minY+D.maxY)/2}))}if(b===1/0||T===-1/0)return!0;let k=Math.max(0,T-b),C=Math.max(v,10),w=k+2*C,S=l+w,N=(b+T)/2-w/2-l,I=N+S/2,_=Math.max(v,l);x.sort((A,M)=>A.centerY-M.centerY);for(let A=0;A{"use strict";o(lye,"buildNodeMap");o(Pct,"resolveTopLevelGroupId");o(oye,"groupDepth");o(cye,"boundsForChildren");o(Oct,"applyGroupBounds");o(Bct,"recomputeNestedGroupBounds");o(nB,"mirrorAxis");o(uye,"applyBtDirectionTransform");o(hye,"applyLrDirectionTransform")});function fye(e,t){let{nodeInfoById:r,realNodeRects:n}=b1(t);for(let i of e){if(i.isLayoutOnly)continue;let a=i.points;if(!a||a.length<4)continue;let s=u5(Jr(a,mc),mc);if(!s)continue;let{p3:l}=s,u=s.kind==="HVH",h=m5(i,r,mc);if(!h)continue;let{srcId:d,dstId:f,srcInfo:p,dstInfo:m,collinearX:g,collinearY:y}=h;if(g||y)continue;let v,x=p.rect;for(let b of Fct){let T,k,C;if(u){let I=m.cy>p.cy?x.bottom:x.top,_=p.cx+b;if(_<=x.left+mc||_>=x.right-mc)continue;T={x:_,y:I},k={x:_,y:l.y},C={x:l.x,y:l.y}}else{let I=m.cx>p.cx?x.right:x.left,_=p.cy+b;if(_<=x.top+mc||_>=x.bottom-mc)continue;T={x:I,y:_},k={x:l.x,y:_},C={x:l.x,y:l.y}}let w=uo(T,k,mc),S=uo(k,C,mc);if(w&&S||!w&&Xn(T,k,n,[d],1)||!S&&Xn(k,C,n,[f],1))continue;let R=!w&&xT(T,k,e,i,{epsilon:mc,skipDegenerateOther:!0}),L=!S&&xT(k,C,e,i,{epsilon:mc,skipDegenerateOther:!0});if(!(R||L)){w?v=[k,C]:S?v=[T,k]:v=[T,k,C];break}}v&&(i.points=v)}}var mc,$ct,y5,Fct,pye=F(()=>{"use strict";pc();mc=1e-6,$ct=8,y5=$ct,Fct=[0,y5,-y5,2*y5,-2*y5];o(fye,"portSwapToLShape")});function mye(e,t){let{realNodeRects:a,labelNodeRects:s}=gu(t.values());for(let l of e){if(l.isLayoutOnly)continue;let u=l.points;if(!u||u.length<4)continue;let h=Jr(u,.001);if(h.length<4)continue;let d=h.length-1,f=h[d],p=h[d-1],m=h[d-2],g=f.x-p.x,y=f.y-p.y,v=Math.hypot(g,y);if(v>=10||v<.001)continue;let x=p.x-m.x,b=p.y-m.y;if(Math.hypot(x,b)<.001)continue;let k=bi(p,f,.001),C=Ti(p,f,.001),w=bi(m,p,.001),S=Ti(m,p,.001);if(!(k&&S||C&&w))continue;let R=l.end,L=l.start,N=R?t.get(R):void 0;if(!N)continue;let I=N.x??0,_=N.y??0,A=Sa(N);if(!A)continue;let M,D;if(S){let z=b<0;M={x:I,y:m.y},D={x:I,y:z?A.bottom:A.top}}else{let z=x>0;M={x:m.x,y:_},D={x:z?A.right:A.left,y:_}}if(Xn(M,D,a,R?[R]:[],-2)||Xn(M,D,s,[],-2))continue;if(L){let z=t.get(L),W=z?Sa(z):void 0;if(W&&h5(M,W,2))continue}let P=o((z,W)=>`${z.x.toFixed(3)},${z.y.toFixed(3)}|${W.x.toFixed(3)},${W.y.toFixed(3)}`,"ownSegmentKey"),B=new Set;for(let z=0;z{for(let H of e){if(H===l||H.isLayoutOnly)continue;let j=H.points;if(!(!j||j.length<2))for(let Q=0;Q=0){let z=h[d-3],W=[L,R].filter(H=>!!H);if(Xn(z,M,a,W,-2)||O(z,M))continue}let V=[...h.slice(0,d-2),M,D];l.points=V;let G=l.labelNodeId;if(G){let z=t.get(G);if(z){let W=z.width??0,H=z.height??0;if(W>0&&H>0){let j,Q,U=-1;for(let oe=0;oe=W+2||Re&&ie>=H+2)&&ie>U&&(U=ie,j=(te.x+le.x)/2,Q=(te.y+le.y)/2)}j!==void 0&&Q!==void 0&&(z.x=j,z.y=Q)}}}}}var gye=F(()=>{"use strict";pc();o(mye,"collapseShortTerminalStub")});function yye(e,t){let i=o((m,g)=>{let y=m.x??0,v=m.y??0,x=g.x-y,b=g.y-v,T=(m.width??0)/2,k=(m.height??0)/2;return Math.abs(b)*T>Math.abs(x)*k?(b<0&&(k=-k),{x:y+(b===0?0:k*x/b),y:v+k}):(x<0&&(T=-T),{x:y+T,y:v+(x===0?0:T*b/x)})},"rectIntersect"),a=o((m,g)=>{let y=Jr(m.points??[]);if(y.length<2)return;let v=g?m.start:m.end,x=v?t.get(v):void 0,b=x?Sa(x):void 0;if(!x||!v||!b)return;let T=g?y[0]:y[y.length-1],k=g?y[1]:y[y.length-2],C=i(x,T),w=T;if(iB(k,C)&&(w=k),Qr(C,w,rr))return{edge:m,edgeId:String(m.id??""),nodeId:v,atStart:g,orientation:"V",coord:C.x,min:Math.min(C.y,w.y),max:Math.max(C.y,w.y),boundary:C,railEnd:w,rect:b};if(tn(C,w,rr))return{edge:m,edgeId:String(m.id??""),nodeId:v,atStart:g,orientation:"H",coord:C.y,min:Math.min(C.x,w.x),max:Math.max(C.x,w.x),boundary:C,railEnd:w,rect:b}},"terminalLaneFor"),s=o((m,g)=>Math.max(0,Math.min(m.max,g.max)-Math.max(m.min,g.min)),"projectedOverlapLength"),l=o((m,g)=>m.nodeId!==g.nodeId||m.orientation!==g.orientation?!1:m.orientation==="H"?(Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1)&&Qr(m.boundary,g.boundary,1):(Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1)&&tn(m.boundary,g.boundary,1),"sameTerminalFace"),u=o((m,g)=>m.nodeId!==g.nodeId||m.orientation!==g.orientation?!1:s(m,g)>=Ea&&Math.abs(m.coord-g.coord)<.5,"exactTerminalLaneConflict"),h=o((m,g)=>{if(m.nodeId!==g.nodeId||m.orientation!==g.orientation||m.orientation!=="H"||m.atStart===g.atStart)return!1;let y=s(m,g);if(y2*v?!1:l(m,g)&&Math.abs(m.coord-g.coord)<16},"nearTerminalLaneConflict"),d=o((m,g)=>{let y=Jr(m.edge.points??[]);if(y.length<2)return;let v=m.orientation==="V"?{x:m.boundary.x+g,y:m.boundary.y}:{x:m.boundary.x,y:m.boundary.y+g},x=m.orientation==="V"?{x:m.railEnd.x+g,y:m.railEnd.y}:{x:m.railEnd.x,y:m.railEnd.y+g};if(!o(()=>Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1?tn(v,m.boundary,rr)&&v.x>=m.rect.left+1&&v.x<=m.rect.right-1:Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1?Qr(v,m.boundary,rr)&&v.y>=m.rect.top+1&&v.y<=m.rect.bottom-1:!1,"boundaryStaysOnSameFace")())return;if(m.atStart){let w=y.length>1&&uo(y[1],m.railEnd,rr),S=y.slice(w?2:1),R=S[0];return R&&!iB(R,x)?void 0:[v,x,...S]}let T=y.length>1&&uo(y[y.length-2],m.railEnd,rr),k=y.slice(0,T?-2:-1),C=k[k.length-1];if(!(C&&!iB(C,x)))return[...k,x,v]},"shiftedCandidate"),f=o(m=>{let g=m.edge,y=Jr(g.points??[]);if(y.length!==2)return!1;let v=g.start,x=g.end,b=v?t.get(v):void 0,T=x?t.get(x):void 0;if(!b||!T)return!1;let k=b.x??0,C=b.y??0,w=T.x??0,S=T.y??0,[R,L]=y;return tn(R,L,rr)&&Math.abs(C-S)<1&&Math.abs(k-w)>1||Qr(R,L,rr)&&Math.abs(k-w)<1&&Math.abs(C-S)>1},"laneIsStraightCollinearConnector"),p=[-7,7,-14,14,-21,21];for(let m=0;m<8;m++){let g=e.filter(v=>!v.isLayoutOnly).flatMap(v=>[a(v,!0),a(v,!1)]).filter(v=>!!v),y=!1;for(let v=0;v{let R=f(w),L=f(S);return R!==L?Number(R)-Number(L):+!S.atStart-+!w.atStart});for(let w of C){for(let S of p){let R=d(w,S);if(!R)continue;let L=a({...w.edge,points:R},w.atStart);if(!(!L||g.some(N=>N.edge!==w.edge&&(u(L,N)||k&&h(L,N))))){w.edge.points=R,y=!0;break}}if(y)break}}if(!y)return}}function vye(e,t){let{realNodeRects:i,labelNodeRects:a}=gu(t.values()),s=o((u,h)=>{let d=u.start,f=u.end,p=jr(h);if(p.length!==h.length-1)return!1;let m=[d,f].filter(g=>!!g);for(let g of p)if(Xn(g.a,g.b,i,m,-2)||Xn(g.a,g.b,a,[],-2))return!1;for(let g of e){if(g===u||g.isLayoutOnly)continue;let y=g.points;if(!(!y||y.length<2)){for(let v of p)for(let x of jr(Jr(y)))if(dc(v,x,.5)>=Ea||fc(v.a,v.b,x.a,x.b,rr))return!1}}return!0},"candidateIsSafe"),l=o((u,h)=>{if(h+4>=u.length)return;let d=u[h],f=u[h+1],p=u[h+2],m=u[h+3],g=u[h+4],y=bi(d,f)&&Ti(f,p)&&bi(p,m)&&Ti(m,g)&&Qr(d,m,rr)&&Qr(d,g,rr)&&Qr(f,p,rr)&&(f.x-d.x)*(m.x-p.x)<0,v=Ti(d,f)&&bi(f,p)&&Ti(p,m)&&bi(m,g)&&tn(d,m,rr)&&tn(d,g,rr)&&tn(f,p,rr)&&(f.y-d.y)*(m.y-p.y)<0;if(y||v)return Jr([...u.slice(0,h+1),g,...u.slice(h+5)]);if(h+5>=u.length)return;let x=u[h+5],b=Ti(d,f)&&bi(f,p)&&Ti(p,m)&&bi(m,g)&&Ti(g,x)&&Qr(d,g,rr)&&Qr(d,x,rr)&&Qr(p,m,rr)&&(p.x-f.x)*(g.x-m.x)<0,T=bi(d,f)&&Ti(f,p)&&bi(p,m)&&Ti(m,g)&&bi(g,x)&&tn(d,g,rr)&&tn(d,x,rr)&&tn(p,m,rr)&&(p.y-f.y)*(g.y-m.y)<0;if(!(!b&&!T))return Jr([...u.slice(0,h+1),x,...u.slice(h+6)])},"withoutDogleg");for(let u=0;u<8;u++){let h=!1;for(let d of e){if(d.isLayoutOnly)continue;let f=Jr(d.points??[]);for(let p=0;p<=f.length-5;p++){let m=l(f,p);if(!(!m||!s(d,m))){d.points=m,h=!0;break}}if(h)break}if(!h)return}}function aB(e,t){let{realNodeRects:a,labelNodeRects:s}=gu(t.values()),l=e.filter(g=>!g.isLayoutOnly),u=o((g,y,v)=>Jr(g===y?v??[]:g.points??[]),"pointsFor"),h=o((g,y)=>{let v=0;for(let x=0;x{let y=jr(g);if(y.length!==3)return;let v=y[1];if(!(y[0].horizontal===v.horizontal||y[2].horizontal===v.horizontal))return{index:v.index,horizontal:v.horizontal,vertical:v.vertical,segment:v}},"middleRail"),f=o((g,y)=>{let v=[g.start,g.end].filter(x=>!!x);return a.filter(x=>{if(v.includes(x.id))return!1;let b=x.rect;return y.horizontal?ls(y.a.x,y.b.x,b.left,b.right)>=Ea&&y.a.y>=b.top-2&&y.a.y<=b.bottom+2:ls(y.a.y,y.b.y,b.top,b.bottom)>=Ea&&y.a.x>=b.left-2&&y.a.x<=b.right+2})},"blockingRectsFor"),p=o((g,y,v)=>{let x=g.map(T=>({...T}));if(y.horizontal)x[y.index].y=v,x[y.index+1].y=v;else if(y.vertical)x[y.index].x=v,x[y.index+1].x=v;else return;let b=Tl(Jr(x));return jr(b).length===b.length-1?b:void 0},"candidateByMovingRail"),m=o((g,y,v)=>{let x=[g.start,g.end].filter(T=>!!T),b=jr(y);if(b.length!==y.length-1)return!1;for(let T of b)if(Xn(T.a,T.b,a,x,-2)||Xn(T.a,T.b,s,[],-2))return!1;for(let T of l)if(T!==g){for(let k of b)for(let C of jr(u(T)))if(dc(k,C,.5)>=Ea)return!1}return h(g,y)<=v},"candidateIsSafe");for(let g=0;g<8;g++){let y=h(),v=!1;for(let x of l){let b=u(x),T=d(b);if(!T)continue;let k=f(x,T.segment);if(k.length===0)continue;let C=T.horizontal?[Math.min(...k.map(w=>w.rect.top))-20,Math.max(...k.map(w=>w.rect.bottom))+20]:[Math.min(...k.map(w=>w.rect.left))-20,Math.max(...k.map(w=>w.rect.right))+20];for(let w of C){let S=p(b,T.segment,w);if(!(!S||!m(x,S,y))){x.points=S,v=!0;break}}if(v)break}if(!v)return}}function sB(e,t){let n=o(u=>{let h=u.groupTitleRect;if(!(!h||typeof h.left!="number"||typeof h.right!="number"||typeof h.top!="number"||typeof h.bottom!="number"||!Number.isFinite(h.left)||!Number.isFinite(h.right)||!Number.isFinite(h.top)||!Number.isFinite(h.bottom)||h.right<=h.left||h.bottom<=h.top))return{left:h.left,right:h.right,top:h.top,bottom:h.bottom}},"validTitleRect"),i=o(u=>{if(!u.isGroup||u.parentId)return;let h=u.direction,d=typeof h=="string"?h.toUpperCase():"";if(d==="LR"||d==="RL"||d==="BT")return;let f=n(u),p=u.y,m=u.height;if(!f||typeof p!="number"||typeof m!="number"||!Number.isFinite(p)||!Number.isFinite(m)||m<=0)return;let g=f.right-f.left,y=f.bottom-f.top;if(!(y<=0||g{if(!u.horizontal)return!1;let d=u.a.y;return d<=h.top+rr||d>=h.bottom-rr?!1:ls(u.a.x,u.b.x,h.left,h.right)>=Ea},"horizontalSegmentIntersectsTitle"),s=[...t.values()].map(i).filter(u=>!!u);if(s.length===0)return;let l=0;for(let u of e){if(u.isLayoutOnly)continue;let h=Jr(u.points??[]);for(let d of jr(h))for(let f of s)a(d,f.rect)&&(l=Math.max(l,f.rect.bottom-d.a.y+4))}if(!(l<=rr))for(let u of s){let h=u.node.y,d=u.node.height;typeof h!="number"||typeof d!="number"||!Number.isFinite(h)||!Number.isFinite(d)||d<=0||(u.node.y=h-l/2,u.node.height=d+l,u.node.groupTitleRect={...u.rect,top:u.rect.top-l,bottom:u.rect.bottom-l})}}function oB(e,t){let n=o(h=>{let d=h.groupTitleRect;if(!(!d||typeof d.left!="number"||typeof d.right!="number"||typeof d.top!="number"||typeof d.bottom!="number"||!Number.isFinite(d.left)||!Number.isFinite(d.right)||!Number.isFinite(d.top)||!Number.isFinite(d.bottom)||d.right<=d.left||d.bottom<=d.top))return{left:d.left,right:d.right,top:d.top,bottom:d.bottom}},"validTitleRect"),i=o(h=>{if(!h.isGroup||h.parentId||h.direction!=="LR")return;let f=n(h),p=h.x,m=h.width;if(!f||typeof p!="number"||typeof m!="number"||!Number.isFinite(p)||!Number.isFinite(m)||m<=0)return;let g=f.right-f.left,y=f.bottom-f.top;if(!(g<=0||y{if(!h.vertical)return!1;let f=h.a.x;return f<=d.left+rr||f>=d.right-rr?!1:ls(h.a.y,h.b.y,d.top,d.bottom)>=Ea},"verticalSegmentIntersectsTitle"),s=o((h,d)=>{if(!h.horizontal)return!1;let f=h.a.y;return f<=d.top+rr||f>=d.bottom-rr?!1:ls(h.a.x,h.b.x,d.left,d.right)>=Ea},"horizontalSegmentIntersectsTitle"),l=[...t.values()].map(i).filter(h=>!!h);if(l.length===0)return;let u=0;for(let h of e){if(h.isLayoutOnly)continue;let d=Jr(h.points??[]);for(let f of jr(d))for(let p of l)if(a(f,p.rect))u=Math.max(u,p.rect.right-f.a.x+4);else if(s(f,p.rect)){let m=Math.min(f.a.x,f.b.x);u=Math.max(u,p.rect.right-m+4)}}if(!(u<=rr))for(let h of l){let d=h.node.x,f=h.node.width;typeof d!="number"||typeof f!="number"||!Number.isFinite(d)||!Number.isFinite(f)||f<=0||(h.node.x=d-u/2,h.node.width=f+u,h.node.groupTitleRect={...h.rect,left:h.rect.left-u,right:h.rect.right-u})}}function xye(e,t){let{realNodeRects:i}=gu(t.values()),a=e.filter(y=>!y.isLayoutOnly),s=o((y,v=new Map)=>Jr(v.get(y)??y.points??[]),"replacementPointsFor"),l=o((y=new Map)=>{let v=0;for(let x=0;xa.reduce((v,x)=>v+ho(s(x,y)),0),"totalBends"),h=o(y=>{let v=s(y);if(v.length<4)return;let x=v[v.length-2],b=v[v.length-1];if(!(!bi(x,b,rr)&&!Ti(x,b,rr)))return{tailStart:x,terminal:b}},"terminalTailFor"),d=o((y,v)=>{let x=s(y);if(x.length<3)return;let b=x[0],T=x[1],k;if(bi(b,T,rr))k={x:T.x,y:v.tailStart.y};else if(Ti(b,T,rr))k={x:v.tailStart.x,y:T.y};else return;let C=Tl(Jr([b,T,k,v.tailStart,v.terminal]));return jr(C).length===C.length-1?C:void 0},"candidateWithDestinationTail"),f=o((y,v)=>{let x=[y.start,y.end].filter(b=>!!b);for(let b of jr(v))if(Xn(b.a,b.b,i,x,-2))return!0;return!1},"pathHasNodeHit"),p=o((y,v,x)=>{for(let b of a)if(b!==y){for(let T of jr(v))for(let k of jr(s(b,x)))if(dc(T,k,.5)>=Ea)return!0}return!1},"pathHasSharedTrack"),m=o((y,v,x)=>!f(y,v)&&!p(y,v,x),"candidateIsSafe"),g=o(()=>{let y=new Map;for(let v of a){let x=v.end;if(!x||!t.has(x)||s(v).length<4)continue;let T=y.get(x)??[];T.push(v),y.set(x,T)}return y},"edgesByDestination");for(let y=0;y<4;y++){let v=l();if(v===0)return;let x=u(),b,T=v,k=x;for(let C of g().values())for(let w=0;w=v||D>T||D===T&&P>=k||(b=M,T=D,k=P)}if(!b)return;for(let[C,w]of b)C.points=w}}function bye(e,t){let{realNodeRects:s,labelNodeRects:l}=gu(t.values()),u=e.filter(C=>!C.isLayoutOnly),h=o((C,w=new Map)=>Jr(w.get(C)??C.points??[]),"replacementPointsFor"),d=o((C=new Map)=>{let w=0;for(let S=0;Su.reduce((w,S)=>w+ho(h(S,C)),0),"totalBends"),p=o(C=>{let w=C.start,S=C.end,R=w?t.get(w):void 0,L=S?t.get(S):void 0,N=R?Sa(R):void 0,I=L?Sa(L):void 0;return N&&I?{src:N,dst:I}:void 0},"endpointRectsFor"),m=o((C,w,S)=>{if(S.index<=0||S.index+1>=w.length-1)return;let R=p(C);if(R){if(S.vertical){let L=S.a.x,N=Math.min(R.src.left,R.dst.left),I=Math.max(R.src.right,R.dst.right),_=LI+rr?"right":void 0;return _?{edge:C,points:w,segmentIndex:S.index,axis:"vertical",side:_,coord:L,min:Math.min(S.a.y,S.b.y),max:Math.max(S.a.y,S.b.y)}:void 0}if(S.horizontal){let L=S.a.y,N=Math.min(R.src.top,R.dst.top),I=Math.max(R.src.bottom,R.dst.bottom),_=LI+rr?"bottom":void 0;return _?{edge:C,points:w,segmentIndex:S.index,axis:"horizontal",side:_,coord:L,min:Math.min(S.a.x,S.b.x),max:Math.max(S.a.x,S.b.x)}:void 0}}},"externalRailForSegment"),g=o(()=>{let C=[];for(let w of u){let S=h(w);for(let R of jr(S)){let L=m(w,S,R);L&&C.push(L)}}return C},"collectExternalRails"),y=o((C,w)=>C.edge!==w.edge&&C.axis===w.axis&&C.side===w.side&&ls(C.min,C.max,w.min,w.max)>=Ea,"railsInteract"),v=o(C=>{let w=[],S=new Set;for(let R of C){if(S.has(R))continue;let L=[R],N=[];for(S.add(R);L.length>0;){let I=L.pop();N.push(I);for(let _ of C)!S.has(_)&&y(I,_)&&(S.add(_),L.push(_))}N.length>1&&w.push(N)}return w},"connectedComponents"),x=o(C=>{let w=[];for(let S of C)w.some(R=>Math.abs(R-S.coord){let w=C.map(L=>L.coord),S=x(C),R=[];if(C.length<=6){let L=new Array(S.length).fill(!1),N=[],I=o(()=>{if(N.length===C.length){N.some((_,A)=>Math.abs(_-w[A])>=rr)&&R.push([...N]);return}for(let[_,A]of S.entries())L[_]||(L[_]=!0,N.push(A),I(),N.pop(),L[_]=!1)},"visit");return I(),R}for(let L=0;L{let S=new Map;for(let[L,N]of C.entries()){let I=w[L],_=S.get(N.edge)??N.points.map(A=>({x:A.x,y:A.y}));N.axis==="vertical"?(_[N.segmentIndex].x=I,_[N.segmentIndex+1].x=I):(_[N.segmentIndex].y=I,_[N.segmentIndex+1].y=I),S.set(N.edge,_)}let R=new Map;for(let[L,N]of S){let I=Tl(Jr(N));if(jr(I).length!==I.length-1)return;R.set(L,I)}return R},"replacementsForAssignment"),k=o(C=>{for(let[w,S]of C){let R=[w.start,w.end].filter(L=>!!L);for(let L of jr(S))if(Xn(L.a,L.b,s,R,-2)||Xn(L.a,L.b,l,[],-2))return!1}for(let w=0;w=Ea)return!1}}return!0},"candidateIsSafe");for(let C=0;C<4;C++){let w=d();if(w===0)return;let S,R=w,L=f(),N=Number.POSITIVE_INFINITY;for(let I of v(g()))for(let _ of b(I)){let A=T(I,_);if(!A||!k(A))continue;let M=d(A);if(M>=w)continue;let D=f(A),P=I.reduce((B,O,$)=>B+Math.abs(_[$]-O.coord),0);M>R||M===R&&(D>L||D===L&&P>=N)||(S=A,R=M,L=D,N=P)}if(!S)return;for(let[I,_]of S)I.points=_}}function Tye(e,t){let{realNodeRects:i,labelNodeRects:a}=gu(t.values()),s=e.filter(g=>!g.isLayoutOnly),l=o((g,y,v)=>Jr(g===y?v??[]:g.points??[]),"pointsFor"),u=o(g=>jr(g).reduce((y,v)=>{let x=v.a.x-v.b.x,b=v.a.y-v.b.y;return y+Math.hypot(x,b)},0),"pathLength"),h=o((g,y)=>{let v=0;for(let x=0;x{if(g.horizontal){let v=g.a.y;return(Math.abs(v-y.top)<1||Math.abs(v-y.bottom)<1)&&ls(g.a.x,g.b.x,y.left,y.right)>=Ea}if(g.vertical){let v=g.a.x;return(Math.abs(v-y.left)<1||Math.abs(v-y.right)<1)&&ls(g.a.y,g.b.y,y.top,y.bottom)>=Ea}return!1},"segmentRunsAlongRectBorder"),f=o(g=>{let y=[g.start,g.end].filter(x=>!!x),v=[];for(let x of y){let b=t.get(x),T=b?Sa(b):void 0;T&&v.push(T)}return v},"endpointRectsFor"),p=o((g,y)=>{if(y+3>=g.length)return[];let v=g[y],x=g[y+1],b=g[y+2],T=g[y+3],k=bi(v,x,rr)&&Ti(x,b,rr)&&bi(b,T,rr),C=Ti(v,x,rr)&&bi(x,b,rr)&&Ti(b,T,rr);if(!k&&!C)return[];if(!(k?Math.sign(x.x-v.x)!==Math.sign(T.x-b.x):Math.sign(x.y-v.y)!==Math.sign(T.y-b.y)))return[];let S=Qr(v,T,rr)||tn(v,T,rr)?[]:[{x:v.x,y:T.y},{x:T.x,y:v.y}],R=S.length===0?[[...g.slice(0,y+1),...g.slice(y+3)]]:S.map(N=>[...g.slice(0,y+1),N,...g.slice(y+3)]),L=new Set;return R.map(N=>Tl(Jr(N))).filter(N=>{if(jr(N).length!==N.length-1||!N.some(_=>uo(_,T,rr)))return!1;let I=N.map(_=>`${_.x.toFixed(3)},${_.y.toFixed(3)}`).join("|");return L.has(I)?!1:(L.add(I),!0)})},"shortcutCandidatesAt"),m=o((g,y,v)=>{let x=[g.start,g.end].filter(T=>!!T),b=f(g);for(let T of jr(y))if(Xn(T.a,T.b,i,x,-2)||Xn(T.a,T.b,a,[],-2)||b.some(k=>d(T,k)))return!1;for(let T of s)if(T!==g){for(let k of jr(y))for(let C of jr(l(T)))if(dc(k,C,.5)>=Ea)return!1}return h(g,y)<=v},"candidateIsSafe");for(let g=0;g<8;g++){let y=h(),v,x,b=y,T=Number.POSITIVE_INFINITY,k=Number.POSITIVE_INFINITY;for(let C of s){let w=l(C),S=ho(w,rr),R=u(w);for(let L=0;L<=w.length-4;L++)for(let N of p(w,L)){let I=ho(N,rr),_=u(N);if(!(Ib||M===b&&(I>T||I===T&&_>=k)||(v=C,x=N,b=M,T=I,k=_)}}if(!v||!x)return;v.points=x}}function Cye(e,t){let s=[];for(let ue of t.values()){if(ue.isGroup||ue.isEdgeLabel)continue;let ye=ue.x??0,ke=ue.y??0,ce=Sa(ue);ce&&s.push({id:String(ue.id??""),cx:ye,cy:ke,rect:ce})}if(s.length===0)return;let l=new Map(s.map(ue=>[ue.id,ue])),u=s.map(ue=>({id:ue.id,rect:ue.rect})),h=["top","bottom","left","right"],d={top:Math.min(...s.map(ue=>ue.rect.top))-20,bottom:Math.max(...s.map(ue=>ue.rect.bottom))+20,left:Math.min(...s.map(ue=>ue.rect.left))-20,right:Math.max(...s.map(ue=>ue.rect.right))+20},f=e.filter(ue=>!ue.isLayoutOnly),p=new Map(f.map((ue,ye)=>[ue,ye])),m=o(ue=>{let ye=ue==="left"||ue==="top"?-1:1,ke=[];for(let ce=0;ce<=2;ce++)ke.push(d[ue]+ye*20*ce);return ke},"outwardTracksForSide"),g=o((ue,ye=new Map)=>Jr(ye.get(ue)??ue.points??[]),"replacementPointsFor"),y=o((ue,ye)=>{let ke=0;for(let ce of ue)for(let re of ye)fc(ce.a,ce.b,re.a,re.b,rr)&&ke++;return ke},"crossingCountBetweenSegments"),v=o((ue,ye)=>y(jr(ue),jr(ye)),"crossingCountBetweenPaths"),x=o((ue=new Map)=>{let ye=0,ke=[],ce=new Set,re=[],J=o(se=>{ce.has(se)||(ce.add(se),re.push(se))},"addEdge");for(let se=0;se0&&(ye+=ve,ke.push({first:ge,second:Me,count:ve}),J(ge),J(Me))}}return re.sort((se,ge)=>(p.get(se)??0)-(p.get(ge)??0)),{count:ye,pairs:ke,edgeSet:ce,edges:re}},"crossingSnapshot"),b=o((ue,ye)=>{let ke=new Set(ye.keys());if(ke.size===0)return ue.count;let ce=0;for(let J of ue.pairs)(ke.has(J.first)||ke.has(J.second))&&(ce+=J.count);let re=0;for(let J=0;J{let ye=new Map;for(let re of ue.pairs){let J=ye.get(re.first)??new Set;J.add(re.second),ye.set(re.first,J);let se=ye.get(re.second)??new Set;se.add(re.first),ye.set(re.second,se)}let ke=[],ce=new Set;for(let re of ue.edges){if(ce.has(re))continue;let J=[re],se=[];for(ce.add(re);J.length>0;){let ge=J.pop();se.push(ge);for(let Te of ye.get(ge)??[])ce.has(Te)||(ce.add(Te),J.push(Te))}se.sort((ge,Te)=>(p.get(ge)??0)-(p.get(Te)??0)),se.length>1&&ke.push(se)}return ke},"crossingComponents"),k=o(ue=>[ue.start,ue.end].filter(ye=>!!ye),"endpointIdsFor"),C=o(ue=>{let ye=[];for(let ke of T(ue)){let ce=new Set(ke),re=new Set(ke.flatMap(se=>k(se))),J=[...ke];for(let se of f)ce.has(se)||k(se).some(ge=>re.has(ge))&&J.push(se);J.sort((se,ge)=>(p.get(se)??0)-(p.get(ge)??0)),ye.push(J)}return ye},"pairSearchGroups"),w=o((ue,ye,ke)=>b(ue,new Map([[ye,ke]])),"crossingCountWithSingleReplacement"),S=o(ue=>{let ye=new Map;for(let ke of ue.pairs)ye.set(ke.first,(ye.get(ke.first)??0)+ke.count),ye.set(ke.second,(ye.get(ke.second)??0)+ke.count);return ye},"currentCrossingsByEdge"),R=o(ue=>ue.slice(1).reduce((ye,ke,ce)=>{let re=ue[ce];return ye+Math.abs(ke.x-re.x)+Math.abs(ke.y-re.y)},0),"pathLength"),L=o((ue=new Map)=>f.reduce((ye,ke)=>ye+ho(g(ke,ue)),0),"totalBends"),N=o((ue=new Map)=>f.reduce((ye,ke)=>ye+R(g(ke,ue)),0),"totalLength"),I=o((ue,ye,ke=new Map)=>{let ce=jr(ye);for(let re of f)if(re!==ue){for(let J of ce)for(let se of jr(g(re,ke)))if(dc(J,se,.5)>=Ea)return!0}return!1},"pathHasSegmentConflict"),_=o((ue,ye)=>{let ke=[ue.start,ue.end].filter(ce=>!!ce);for(let ce of jr(ye))if(Xn(ce.a,ce.b,u,ke,-2))return!0;return!1},"pathHitsNode"),A=o((ue,ye)=>{let ke=Tl(Jr(ye));jr(ke).length===ke.length-1&&ue.push(ke)},"pushOrthogonalCandidate"),M=o(ue=>ue==="left"||ue==="right","sideIsHorizontal"),D=o((ue,ye,ke)=>{switch(ye){case"left":return Math.min(ue.x,ke.x)-20;case"right":return Math.max(ue.x,ke.x)+20;case"top":return Math.min(ue.y,ke.y)-20;case"bottom":return Math.max(ue.y,ke.y)+20}},"localTrackForSameSide"),P=o((ue,ye,ke,ce)=>{let re=ke==="left"||ke==="top"?-1:1,J=[D(ye,ke,ce),d[ke]];for(let se of J)for(let ge=0;ge<=2;ge++)A(ue,p5(ye,ke,ce,se+re*20*ge))},"addSameSideCandidates"),B=o((ue,ye,ke,ce,re)=>{for(let J of m(ke))for(let se of m(re))A(ue,[ye,{x:J,y:ye.y},{x:J,y:se},{x:ce.x,y:se},ce])},"addHorizontalToVerticalCandidates"),O=o((ue,ye,ke,ce,re)=>{for(let J of m(ke))for(let se of m(re))A(ue,[ye,{x:ye.x,y:J},{x:se,y:J},{x:se,y:ce.y},ce])},"addVerticalToHorizontalCandidates"),$=o((ue,ye,ke,ce,re)=>{let J=[...m("top"),...m("bottom")];for(let se of m(ke))for(let ge of m(re))for(let Te of J)A(ue,[ye,{x:se,y:ye.y},{x:se,y:Te},{x:ge,y:Te},{x:ge,y:ce.y},ce])},"addHorizontalPairCandidates"),V=o((ue,ye,ke,ce,re)=>{let J=[...m("left"),...m("right")];for(let se of m(ke))for(let ge of m(re))for(let Te of J)A(ue,[ye,{x:ye.x,y:se},{x:Te,y:se},{x:Te,y:ge},{x:ce.x,y:ge},ce])},"addVerticalPairCandidates"),G=o(ue=>{let ye=new Set;return ue.map(ke=>Jr(ke)).filter(ke=>{let ce=ke.map(re=>`${re.x.toFixed(3)},${re.y.toFixed(3)}`).join("|");return ye.has(ce)||ke.length<2?!1:(ye.add(ce),!0)})},"dedupeCandidatePaths"),z=o((ue,ye,ke,ce)=>{let re=[],J=f5(ue,ye,ke,ce,20,rr);J&&A(re,J),ye===ce&&P(re,ue,ye,ke);let se=M(ye),ge=M(ce);return se&&!ge?B(re,ue,ye,ke,ce):!se&&ge?O(re,ue,ye,ke,ce):se?$(re,ue,ye,ke,ce):V(re,ue,ye,ke,ce),G(re)},"buildCandidatesForSides"),W=o((ue,ye,ke,ce)=>{let re=[...m("left"),...m("right")],J=[...m("top"),...m("bottom")];for(let se of h){let ge=Lf(ce,se),Te=se==="top"||se==="bottom"?m(se):J;for(let we of re){A(ue,[ye,ke,{x:we,y:ke.y},{x:we,y:ge.y},ge]);for(let Me of Te)A(ue,[ye,ke,{x:we,y:ke.y},{x:we,y:Me},{x:ge.x,y:Me},ge])}}},"addVerticalDepartureOuterTrackCandidates"),H=o((ue,ye,ke,ce)=>{let re=[...m("left"),...m("right")],J=[...m("top"),...m("bottom")];for(let se of h){let ge=Lf(ce,se),Te=se==="left"||se==="right"?m(se):re;for(let we of J){A(ue,[ye,ke,{x:ke.x,y:we},{x:ge.x,y:we},ge]);for(let Me of Te)A(ue,[ye,ke,{x:ke.x,y:we},{x:Me,y:we},{x:Me,y:ge.y},ge])}}},"addHorizontalDepartureOuterTrackCandidates"),j=o(ue=>{let ye=ue.start,ke=ue.end,ce=ke?l.get(ke):void 0;if(!ye||!ce)return[];let re=Jr(ue.points??[]);if(re.length<4)return[];let J=re[0],se=re[1],ge=[];return Ti(J,se,rr)?W(ge,J,se,ce):bi(J,se,rr)&&H(ge,J,se,ce),ge},"terminalPreservingOuterTrackCandidates"),Q=o(ue=>{let ye=ue.start,ke=ue.end,ce=ye?l.get(ye):void 0,re=ke?l.get(ke):void 0;if(!ce||!re)return[];let J=[];for(let se of h){let ge=Lf(ce,se);for(let Te of h)J.push(...z(ge,se,Lf(re,Te),Te))}return J.push(...j(ue)),J},"candidatePathsFor"),U=o(()=>new Map(f.map(ue=>[ue,jr(g(ue))])),"currentSegmentsByEdge"),oe=o((ue,ye,ke)=>{let ce=new Set;for(let re of f){if(re===ue)continue;let J=ke.get(re)??jr(g(re));ye.some(se=>J.some(ge=>dc(se,ge,.5)>=Ea))&&ce.add(re)}return ce},"sharedTrackConflictsFor"),te=o((ue,ye,ke,ce)=>{let re=new Set;return Q(ue).map(se=>Tl(Jr(se))).filter(se=>{if(_(ue,se))return!1;let ge=se.map(Te=>`${Te.x.toFixed(3)},${Te.y.toFixed(3)}`).join("|");return re.has(ge)||se.length<2?!1:(re.add(ge),!0)}).map(se=>{let ge=jr(se),Te=0;for(let we of f)we!==ue&&(Te+=y(ge,ke.get(we)??jr(g(we))));return{candidate:se,candidateSegments:ge,crossings:ye.count-(ce.get(ue)??0)+Te,bends:ho(se,rr),totalBends:ho(se),length:R(se)}}).filter(({crossings:se})=>se<=ye.count).sort((se,ge)=>se.crossings-ge.crossings||se.bends-ge.bends||se.length-ge.length).slice(0,48).map(se=>({path:se.candidate,segments:se.candidateSegments,sharedTrackConflicts:oe(ue,se.candidateSegments,ke),totalBends:se.totalBends,length:se.length}))},"pairCandidatesFor"),le=o((ue,ye,ke,ce,re,J)=>{let se=0;for(let Te of ue.pairs)(Te.first===ye||Te.second===ye||Te.first===ce||Te.second===ce)&&(se+=Te.count);let ge=y(ke.segments,re.segments);for(let Te of f){if(Te===ye||Te===ce)continue;let we=J.get(Te)??jr(g(Te));ge+=y(ke.segments,we)+y(re.segments,we)}return ue.count-se+ge},"pairCrossingCount"),ie=o((ue,ye)=>{for(let ke of ue.sharedTrackConflicts)if(ke!==ye)return!1;return!0},"conflictsOnlyWith"),ae=o((ue,ye)=>ue.segments.some(ke=>ye.segments.some(ce=>dc(ke,ce,.5)>=Ea)),"candidatesShareTrack"),Re=o((ue,ye,ke,ce)=>ie(ye,ke.edge)&&ie(ce,ue.edge)&&!ae(ye,ce),"pairCandidatesAreCompatible"),be=o((ue,ye,ke,ce,re)=>{let J=le(ue.current,ye.edge,ke,ce.edge,re,ue.baseSegments);if(!(J>=ue.current.count))return{replacements:new Map([[ye.edge,ke.path],[ce.edge,re.path]]),crossings:J,bends:ue.currentBends-(ue.baseBendsByEdge.get(ye.edge)??0)-(ue.baseBendsByEdge.get(ce.edge)??0)+ke.totalBends+re.totalBends,length:ue.currentLength-(ue.baseLengthByEdge.get(ye.edge)??0)-(ue.baseLengthByEdge.get(ce.edge)??0)+ke.length+re.length}},"scorePairReplacement"),Pe=o((ue,ye)=>ue.crossings{let re=ce;for(let J of ye.candidates)for(let se of ke.candidates){if(!Re(ye,J,ke,se))continue;let ge=be(ue,ye,J,ke,se);ge&&Pe(ge,re)&&(re=ge)}return re},"bestScoreForOptionPair"),Oe=o(ue=>{let ye=L(),ke=N(),ce=U(),re=S(ue),J=new Map(f.map(ve=>[ve,ho(g(ve))])),se=new Map(f.map(ve=>[ve,R(g(ve))])),ge=new Map,Te=C(ue);for(let ve of Te)for(let ne of ve){if(ge.has(ne))continue;let q=te(ne,ue,ce,re);q.length>0&&ge.set(ne,{edge:ne,candidates:q})}let we={replacements:new Map,crossings:ue.count,bends:ye,length:ke},Me={current:ue,currentBends:ye,currentLength:ke,baseBendsByEdge:J,baseLengthByEdge:se,baseSegments:ce};for(let ve of Te){let ne=new Set(ve.filter(he=>ue.edgeSet.has(he))),q=ve.map(he=>ge.get(he)).filter(he=>!!he);for(let he=0;he0?we.replacements:void 0},"bestPairedReplacement");for(let ue=0;ue<4;ue++){let ye=x(),ke=ye.count;if(ke===0)return;let ce,re,J=ke,se=Number.POSITIVE_INFINITY;for(let Te of ye.edges){let we=ho(g(Te),rr);for(let Me of Q(Te)){let ve=_(Te,Me),ne=!ve&&I(Te,Me),q=w(ye,Te,Me),he=ho(Me,rr);ve||ne||!(qJ||q===J&&he>=se||(ce=Te,re=Me,J=q,se=he)}}if(ce&&re){ce.points=re;continue}let ge=Oe(ye);if(!ge)return;for(let[Te,we]of ge)Te.points=we}}var rr,Ea,jr,iB,wye=F(()=>{"use strict";pc();rr=.001,Ea=8,jr=_f,iB=o((e,t)=>Qr(e,t,rr)||tn(e,t,rr),"orthogonallyAligned");o(yye,"separateSharedRenderedTerminalLanes");o(vye,"collapseRedundantRectangularDoglegs");o(aB,"liftObstacleHuggingSameSideRails");o(sB,"liftTopLaneTitleBandsAboveRails");o(oB,"shiftLeftLaneTitleBandsLeftOfRails");o(xye,"swapDestinationTerminalTailsToReduceCrossings");o(bye,"reassignCrossingExternalRailChannels");o(Tye,"shortcutRedundantOrthogonalJogs");o(Cye,"resolveRenderedOrthogonalCrossings")});function kye(e,t){let{nodeInfoById:r,realNodeRects:n}=b1(t),i=["top","bottom","left","right"],a=20,s={top:Math.min(...n.map(y=>y.rect.top))-a,bottom:Math.max(...n.map(y=>y.rect.bottom))+a,left:Math.min(...n.map(y=>y.rect.left))-a,right:Math.max(...n.map(y=>y.rect.right))+a},l=o((y,v,x,b)=>{let T=[],k=f5(y,v,x,b,a,Df);return k&&T.push(k),v===b&&T.push(p5(y,v,x,s[v])),T},"buildOrthogonalPathCandidates"),u=o((y,v)=>{for(let x=0;x{let b=0,T=_f(y,Df),k=v.start,C=v.end;for(let w of e){if(w===v||w.isLayoutOnly)continue;let S=w.start,R=w.end;if(!x&&k&&C&&(S===k||S===C||R===k||R===C))continue;let L=w.points;if(!(!L||L.length<2))for(let N of T)for(let I of _f(L,Df)){if(Q9(N.a,N.b,I.a,I.b,Df,Df)){b++;continue}dc(N,I,Df)>=zct&&b++}}return b},"pathConflictCount"),d=4,f=o((y,v)=>{let x=Math.abs(y.y-v.rect.top),b=Math.abs(y.y-v.rect.bottom),T=Math.abs(y.x-v.rect.left),k=Math.abs(y.x-v.rect.right),C="top",w=x;return b{let b=p.get(y)??[];b.push({side:v,edgeId:x}),p.set(y,b)},"addFaceClaim");for(let y of e){if(y.isLayoutOnly)continue;let v=y.points??[];if(v.length<1)continue;let x=y.id??"",b=y.start,T=y.end;if(b){let k=r.get(b);k&&m(b,f(v[0],k),x)}if(T){let k=r.get(T);k&&m(T,f(v[v.length-1],k),x)}}let g=o((y,v,x)=>p.get(y)?.some(b=>b.edgeId!==x&&b.side===v)??!1,"faceIsClaimed");for(let y of e){if(y.isLayoutOnly)continue;let v=y.points;if(!v||v.length<2)continue;let x=ho(v,Df);if(x0){let O=h(P,y,!0);if(O>N||O===N&&B>=I)continue;N=O,I=B,L=P;continue}h(P,y)>R||BM.edgeId!==w));let A=p.get(T);A&&p.set(T,A.filter(M=>M.edgeId!==w)),m(b,f(L[0],k),w),m(T,f(L[L.length-1],C),w)}}}var Df,zct,Sye=F(()=>{"use strict";pc();Df=.001,zct=8;o(kye,"simplifyDetouredEdges")});function Aye(e,t){let r=t?0:e.length-1,n=t?1:-1,i=e[r],a=e[r+n];if(!i||!a)return;let s=a.x-i.x,l=a.y-i.y;if(!(Math.abs(s)+Math.abs(l)a&&d5(e,Gct(a)))}function x5(e,t){let r=[];for(let g of e){if(g.isLayoutOnly)continue;let y=g.points;if(!(!y||y.length<2))for(let v=0;v{let v=Z9(y,a);for(let{nodeId:x,rect:b}of n)if(x!==g&&d5(v,b))return!0;return!1},"labelOverlapsForeignNode"),h=o((g,y)=>{let v=Z9(y,a);for(let x of r)if(x.edgeId!==g&&vT(x.p1,x.p2,v))return!0;return!1},"labelOverlapsForeignEdge"),d=o((g,y,v)=>u(g,v)||h(y,v),"labelOverlapsAnything"),f=[],p=o(g=>{for(let{id:y,rect:v}of i)if(H0e(v,g))return y},"findContainingLane"),m=o((g,y)=>f.some(v=>v.labelId!==g&&d5(y,v.rect)),"overlapsPlacedLabel");for(let g of e){if(g.isLayoutOnly)continue;let y=g.labelNodeId;if(!y)continue;let v=t.get(y);if(!v)continue;let x=g.points;if(!x||x.length<2)continue;let b=v.width??0,T=v.height??0;if(b<=0||T<=0)continue;let k=[];for(let G=0;G=fo&&j>=fo||k.push({idx:G,length:H+j,orientation:H>=fo?"horizontal":"vertical",midX:(z.x+W.x)/2,midY:(z.y+W.y)/2})}if(k.length===0)continue;let C=k.length>=3?k.filter(G=>G.idx>0&&G.idx0?C:k,S=b>=T?"horizontal":"vertical",R=o(G=>[...G].sort((z,W)=>{let H=z.orientation===S,j=W.orientation===S;if(H!==j)return H?-1:1;let Q=z.length>=(z.orientation==="horizontal"?b:T)+2,U=W.length>=(W.orientation==="horizontal"?b:T)+2;return Q!==U?Q?-1:1:W.length-z.length}),"rankSegments"),L=k[0],N=k[k.length-1],I=[.5,.25,.75,.05,.95,.15,.85,.1,.9],_=o((G,z)=>{let W=x[G.idx],H=x[G.idx+1];return{midX:W.x+(H.x-W.x)*z,midY:W.y+(H.y-W.y)*z}},"anchorAtT"),A=o((G,z,W)=>Math.min(W,Math.max(z,G)),"clamp"),M=o((G,z)=>G.midX>=z.left-fo&&G.midX<=z.right+fo&&G.midY>=z.top-fo&&G.midY<=z.bottom+fo,"pointInsideRectInclusive"),D=o(G=>{let z=x1(G.midX,G.midY,b,T),W=p(z);if(W)return{laneId:W,anchor:G,rect:z};let H=i.find(({rect:ie})=>M(G,ie));if(!H)return;let j=H.rect.left+b/2+s,Q=H.rect.right-b/2-s,U=H.rect.top+T/2+s,oe=H.rect.bottom-T/2-s;if(j>Q||U>oe)return;let te={midX:A(G.midX,j,Q),midY:A(G.midY,U,oe)},le=x1(te.midX,te.midY,b,T);return M(G,le)?{laneId:H.id,anchor:te,rect:le}:void 0},"placementForAnchor"),P=o((G,z,W)=>G.orientation==="horizontal"?Math.abs(z.midX-W.x):Math.abs(z.midY-W.y),"distanceAlongSegment"),B=o((G,z)=>{let H=(G.orientation==="horizontal"?b/2:T/2)+l;if(G===L){let j=x[G.idx];if(P(G,z,j)+fo{let z=R(G);for(let W of z)for(let H of I){let j=_(W,H);if(!B(W,j))continue;let Q=D(j);if(Q&&!Rye(Q.rect,x)&&!m(y,Q.rect)&&!d(y,g.id,Q.rect))return{laneId:Q.laneId,anchor:Q.anchor}}},"tryPool"),$=o((G,z,W=!1)=>{let H=R(G);for(let j of H){let Q={midX:j.midX,midY:j.midY};if(z&&!B(j,Q))continue;let U=D(Q);if(U&&!Rye(U.rect,x)&&!m(y,U.rect)&&!u(y,U.rect)&&(W||!h(g.id,U.rect)))return{laneId:U.laneId,anchor:U.anchor}}},"findLaneContainingFallback"),V=O(w)??(w.lengthW.labelId===y);z>=0?f[z]={labelId:y,rect:G}:f.push({labelId:y,rect:G})}}}var fo,Eye,v5,_ye=F(()=>{"use strict";pc();fo=.001,Eye=10,v5=7;o(Aye,"markerClearanceRectFor");o(Gct,"normalizeRect");o(Rye,"labelOverlapsOwnMarker");o(x5,"anchorLabelsToPolyline")});function Dye(e,t){return e{let d=Dye(l,u),f=0,p=o(m=>{if(!m)return;let g=i.get(m);if(!g)return;let y=h==="x"?g.w/2:g.h/2;y>f&&(f=y)},"consider");p(s.labelNodeId);for(let m of e){if(m===s||m.isLayoutOnly)continue;let g=m.start,y=m.end;!g||!y||Dye(g,y)===d&&p(m.labelNodeId)}return f>0?f+Wct:0},"labelClearanceFor");for(let s of e){if(s.isLayoutOnly)continue;let l=s.points;if(!u5(l,lB))continue;let u=m5(s,r,lB);if(!u)continue;let{srcId:h,dstId:d,srcInfo:f,dstInfo:p,collinearX:m,collinearY:g}=u;if(m===g)continue;let y,v;if(m){let C=p.cy>f.cy;y={x:f.cx,y:C?f.rect.bottom:f.rect.top},v={x:p.cx,y:C?p.rect.top:p.rect.bottom}}else{let C=p.cx>f.cx;y={x:C?f.rect.right:f.rect.left,y:f.cy},v={x:C?p.rect.left:p.rect.right,y:p.cy}}if(Xn(y,v,n,[h,d],1))continue;let b=a(s,h,d,m?"x":"y"),T=b>Lye?b:Lye,k=[0,T,-T];for(let C of k){let w={...y},S={...v};if(m){if(w.x+=C,S.x+=C,w.x<=f.rect.left||w.x>=f.rect.right||S.x<=p.rect.left||S.x>=p.rect.right)continue}else if(w.y+=C,S.y+=C,w.y<=f.rect.top||w.y>=f.rect.bottom||S.y<=p.rect.top||S.y>=p.rect.bottom)continue;if(!Xn(w,S,n,[h,d],1)&&!xT(w,S,e,s,{epsilon:lB})){s.points=[w,S];break}}}}var lB,Vct,Lye,Wct,Mye=F(()=>{"use strict";pc();lB=1e-6,Vct=8,Lye=Vct/2,Wct=3;o(Dye,"pairKey");o(Iye,"straightenCollinearSiblingDetours")});function cB(e,t){let{realNodeRects:h,labelNodeRects:d}=gu(t.values()),f=o((w,S)=>_f(S,.001).map(R=>({...R,edge:w,interior:R.index>=1&&R.index<=S.length-3})),"segmentsFor"),p=o(()=>{let w=[];for(let S of e){if(S.isLayoutOnly)continue;let R=S.points;!R||R.length<2||w.push(...f(S,Jr(R)))}return w},"allSegments"),m=o((w,S)=>w.horizontal&&S.horizontal?ls(w.a.x,w.b.x,S.a.x,S.b.x)>=8&&Math.abs(w.a.y-S.a.y)<7:w.vertical&&S.vertical?ls(w.a.y,w.b.y,S.a.y,S.b.y)>=8&&Math.abs(w.a.x-S.a.x)<7:!1,"hasCrowdedParallelTrack"),g=o((w,S)=>{let R=w.start,L=w.end,N=f(w,S);if(N.length!==S.length-1)return!1;let I=[R,L].filter(A=>!!A),_=w.labelNodeId?[w.labelNodeId]:[];for(let A of N)if(Xn(A.a,A.b,h,I,-2)||Xn(A.a,A.b,d,_,-2))return!1;for(let A of e){if(A===w||A.isLayoutOnly)continue;let M=A.points;if(!(!M||M.length<2)){for(let D of N)for(let P of f(A,Jr(M)))if(m(D,P)||fc(D.a,D.b,P.a,P.b,.001))return!1}}return!0},"candidateIsSafe"),y=o((w,S)=>{let R=Jr(w.edge.points??[]);if(R.length<4||w.index>=R.length-1)return;let L=R.map(N=>({...N}));if(w.horizontal)L[w.index].y+=S,L[w.index+1].y+=S;else if(w.vertical)L[w.index].x+=S,L[w.index+1].x+=S;else return;return f(w.edge,L).length===L.length-1?L:void 0},"shiftedCandidate"),v=o((w,S)=>({x:w.x??(S.left+S.right)/2,y:w.y??(S.top+S.bottom)/2}),"nodeCenter"),x=o(w=>{let S=w.edge,R=Jr(S.points??[]);if(R.length!==4||w.index!==1)return;let L=S.start?t.get(S.start):void 0,N=S.end?t.get(S.end):void 0,I=L?Sa(L):void 0,_=N?Sa(N):void 0,A=R.slice(w.index+2);if(!(!L||!N||!I||!_||A.length===0))return{sourceCenter:v(L,I),targetCenter:v(N,_),sourceRect:I,tail:A}},"sourceDetourContextFor"),b=o((w,S,R,L,N,I)=>{let _=L.y>=R.y,A=_?N.bottom:N.top,M=A+(_?20:-20);if(_&&w.b.y<=M+.001||!_&&w.b.y>=M-.001)return;let D=w.a.x+S;return Jr([{x:R.x,y:A},{x:R.x,y:M},{x:D,y:M},{x:D,y:w.b.y},...I],.001)},"verticalSourceDetour"),T=o((w,S,R,L,N,I)=>{let _=L.x>=R.x,A=_?N.right:N.left,M=A+(_?20:-20);if(_&&w.b.x<=M+.001||!_&&w.b.x>=M-.001)return;let D=w.a.y+S;return Jr([{x:A,y:R.y},{x:M,y:R.y},{x:M,y:D},{x:w.b.x,y:D},...I],.001)},"horizontalSourceDetour"),k=o((w,S)=>{let R=x(w);if(R){if(w.vertical)return b(w,S,R.sourceCenter,R.targetCenter,R.sourceRect,R.tail);if(w.horizontal)return T(w,S,R.sourceCenter,R.targetCenter,R.sourceRect,R.tail)}},"sourceDetourCandidate"),C=[-7,7,-14,14,-21,21];for(let w=0;w<12;w++){let S=p(),R=!1;for(let L=0;LM.interior);for(let M of A){for(let D of C){let P=y(M,D);if(P&&g(M.edge,P)){M.edge.points=P,R=!0;break}let B=k(M,D);if(B&&g(M.edge,B)){M.edge.points=B,R=!0;break}}if(R)break}}if(!R)return}}var Nye=F(()=>{"use strict";pc();o(cB,"nudgeSharedInteriorSubpaths")});function qct(e,t,r,n){let i=t.x-e.x,a=t.y-e.y,s=n.x-r.x,l=n.y-r.y,u=i*l-a*s;if(Math.abs(u)<1e-10)return!1;let h=r.x-e.x,d=r.y-e.y,f=(h*l-d*s)/u,p=(h*a-d*i)/u,m=.01;return f>m&&f<1-m&&p>m&&p<1-m}function uB(e){let t=e.nodes??[],r=e.edges??[],n=[];if(!r.length||!t.length)return n;let i=U0e(t),a=1,s=[];for(let u of r){if(u.isLayoutOnly)continue;let h=u.points;if(!h||h.length<2)continue;let d=u.start,f=u.end,p=u.labelNodeId,m=u.id??`${d}->${f}`;for(let g of i)if(!(g.nodeId===d||g.nodeId===f)&&!(p&&g.nodeId===p)){for(let y=0;y0){let u=n.filter(d=>d.type==="edge-node-overlap").length,h=n.filter(d=>d.type==="edge-edge-crossing").length;Z.warn(`[SWIMLANE_VALIDATE] ${n.length} issue(s) detected: ${u} edge-node overlap(s), ${h} edge crossing(s)`);for(let d of n)Z.warn(`[SWIMLANE_VALIDATE] ${d.type}: ${d.detail}`)}return n}var Pye=F(()=>{"use strict";vt();pc();o(qct,"segmentsIntersect");o(uB,"validateSwimlanesLayout")});function Oye(e,t){let r=e.nodes??[],n=e.edges??[],i=r.filter(l=>!l.isGroup);if((t==="LR"||t==="RL")&&i.length>0&&!hye(e,t)||t==="BT"&&i.length>0&&!uye(e))return;for(let l of n){if(l.isLayoutOnly)continue;let u=l.points;!u||u.length<2||(l.points=Tl(bT(u)))}kye(n,r),Iye(n,r),fye(n,r);let a=new Map;for(let l of r)a.set(String(l.id),l);x5(n,a),iye(n,a),mye(n,a),cB(n,a),yye(n,a),vye(n,a),aB(n,a),xye(n,a);let s=o(()=>{Cye(n,a),bye(n,a),Tye(n,a),x5(n,a),rB(n,a),aB(n,a),x5(n,a),rB(n,a)},"finalizeRenderedEdges");s(),cB(n,a),s(),sB(n,a),oB(n,a),sB(n,a),oB(n,a)}var Bye=F(()=>{"use strict";sye();pc();dye();pye();gye();wye();Sye();_ye();Mye();Nye();Pye();o(Oye,"postProcessSwimlaneLayout")});function po(e){let t=new Map(e.nodeById),r=new Set,n=[];for(let a of e.edges){if(!t.has(a.src)||!t.has(a.dst))continue;let s=`${a.id}:${a.src}->${a.dst}`;r.has(s)||(r.add(s),n.push(a))}return{nodes:[...t.keys()],edges:n,layout:e.layout,nodeById:t}}function b5(e,t){return e.edges.filter(r=>r.dst===t)}function Hct(e){let t=new Map;for(let r of e.nodes)t.set(r,[]);for(let r of e.edges)t.get(r.src).push(r.dst);return t}function hB(e){let t=Hct(e);for(let r of t.values())r.sort((n,i)=>n.localeCompare(i));return t}function dB(e){let t=new Map;for(let r of e.nodes)t.set(r,0);for(let r of e.edges)t.set(r.dst,(t.get(r.dst)??0)+1);return t}function fB(e){return[...e.entries()].filter(([,t])=>t===0).map(([t])=>t).sort((t,r)=>t.localeCompare(r))}function T1(e,t=()=>!0){let r=new Map,n=new Map;for(let i of e.nodes)r.set(i,[]),n.set(i,[]);for(let i of e.edges)t(i)&&(n.get(i.src).push(i.dst),r.get(i.dst).push(i.src));return{preds:r,succs:n}}function T5(e,t,r,n){let i=0;for(let s of e.nodes)n?.skipGroups&&e.nodeById.get(s)?.isGroup||(i=Math.max(i,r[s]??0));let a=Array.from({length:i+1},()=>[]);for(let s of t)n?.skipGroups&&e.nodeById.get(s)?.isGroup||a[Math.max(0,r[s]??0)].push(s);return a}function If(e){let t=dB(e),r=fB(t),n=[],i=hB(e);for(;r.length;){let a=r.shift();n.push(a);for(let s of i.get(a)??[])if(t.set(s,(t.get(s)??0)-1),(t.get(s)??0)===0){let l=0;for(;l{if(i-n<=1)return 0;let a=n+i>>1,s=r(n,a)+r(a,i),l=n,u=a,h=n;for(;l=i||l{"use strict";o(po,"normalizeGraph");o(b5,"incoming");o(Hct,"buildSuccessorMap");o(hB,"buildSortedSuccessorMap");o(dB,"buildInDegreeMap");o(fB,"sortedZeroInDegreeNodes");o(T1,"buildPredecessorSuccessorMaps");o(T5,"buildLayersFromRanks");o(If,"topoSortIfAcyclic");o(Hm,"buildLayerIndex");o(C5,"countInversions")});function $ye(e){let t=po(e),r=new Map;for(let d of t.nodes)r.set(d,[]);for(let d of t.edges)r.get(d.src).push(d);for(let d of r.values())d.sort((f,p)=>f.dst===p.dst?f.id.localeCompare(p.id):f.dst.localeCompare(p.dst));let n=Object.create(null);for(let d of t.nodes)n[d]=0;let i=[],a=o(d=>{n[d]=1;for(let f of r.get(d)??[]){let p=f.dst;n[p]===0?a(p):n[p]===1&&i.push(f)}n[d]=2},"dfs"),s=[...t.nodes].sort((d,f)=>d.localeCompare(f));for(let d of s)n[d]===0&&a(d);let l=new Set(i.map(d=>`${d.id}:${d.src}->${d.dst}`)),u=t.edges.map(d=>l.has(`${d.id}:${d.src}->${d.dst}`)?{id:d.id,src:d.dst,dst:d.src,weight:d.weight,ref:d.ref}:d);return{acyclic:{nodes:[...t.nodes],edges:u,layout:t.layout,nodeById:new Map(t.nodeById)},reversed:i}}var Fye=F(()=>{"use strict";yu();o($ye,"removeCycles_DFS")});function Uct(e){let t=new Map,r=o(n=>{if(t.has(n))return t.get(n);let i=e.nodeById.get(n);if(!i)return t.set(n,null),null;let a=i.parentId;if(!a)return t.set(n,null),null;let l=r(a)??a;return t.set(n,l),l},"resolve");for(let n of e.nodes)r(n);return t}function cs(e){let t=Uct(e);return r=>t.get(r)??null}function w5(e){let t=[];for(let r of e.layout.nodes??[])r.isGroup&&!r.parentId&&t.push(r.id);return[...new Set(t)].reverse()}function k5(e,t){let r=w5(e);if(!t||t.length===0)return r;let n=new Set(r),i=new Set,a=[];for(let s of t)!n.has(s)||i.has(s)||(i.add(s),a.push(s));for(let s of r)i.has(s)||a.push(s);return a}var Dh=F(()=>{"use strict";o(Uct,"buildTopLaneMap");o(cs,"createTopLaneResolver");o(w5,"buildTopLaneOrder");o(k5,"resolveTopLaneOrder")});var zye,Um,pB,C1=F(()=>{"use strict";zye={EPSILON:1e-6},Um={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},pB={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40}});function Gye(e,t){let r=po(e),n=t?.laneOf??(()=>null),i=t?.rankHint,{preds:a}=T1(r);for(let C of a.values())C.sort((w,S)=>w.localeCompare(S));let s=If(r)??[...r.nodes].sort((C,w)=>C.localeCompare(w)),l=new Map;for(let[C,w]of s.entries())l.set(w,C);let u=new Map,h=new Map;for(let C of r.nodes)h.set(C,[]);for(let C of s){let w=(a.get(C)??[]).filter(S=>u.has(S));if(w.length>0){let S=Yct(C,w,{laneOf:n,rankHint:i,topoIndex:l});u.set(C,S),h.get(S).push(C)}else u.has(C)||u.set(C,null)}for(let C of r.nodes)u.has(C)||u.set(C,null);let d=new Set;for(let C of r.nodes)(u.get(C)??null)===null&&d.add(C);let f=[...d].sort((C,w)=>{let S=l.get(C)??0,R=l.get(w)??0;return S===R?C.localeCompare(w):S-R}),p=jct(r),m=new Map;for(let[C,w]of p.entries())m.set(C,[...w].sort((S,R)=>S.localeCompare(R)));let g=Xct(m),y=Kct(m),v=new Map;for(let C of r.nodes)v.set(C,[]);for(let C of y)for(let w of C.nodes){let S=v.get(w);S?S.push(C.id):v.set(w,[C.id])}let x=[],b=[],T=new Set,k=o(C=>{if(!T.has(C)){T.add(C),x.push(C);for(let w of h.get(C)??[])k(w);b.push(C)}},"walk");for(let C of f)k(C);for(let C of s)k(C);return{parent:u,children:h,roots:f,componentOf:g,blocks:y,nodeBlocks:v,adjacency:m,preorder:x,postorder:b,topologicalOrder:s}}function Yct(e,t,r){let n=r.laneOf(e);return[...t].sort((a,s)=>{let l=r.laneOf(a),u=r.laneOf(s),h=l!=null&&l===n,d=u!=null&&u===n;if(h!==d)return h?-1:1;let f=r.rankHint?.[a],p=r.rankHint?.[s];if(f!=null&&p!=null&&f!==p)return p-f;let m=r.topoIndex.get(a)??0,g=r.topoIndex.get(s)??0;return m!==g?m-g:a.localeCompare(s)})[0]}function jct(e){let t=new Map;for(let r of e.nodes)t.set(r,new Set);for(let r of e.edges)t.get(r.src).add(r.dst),t.get(r.dst).add(r.src);return t}function Xct(e){let t=new Map,r=0;for(let n of e.keys()){if(t.has(n))continue;let i=[n];for(;i.length>0;){let a=i.pop();if(!t.has(a)){t.set(a,r);for(let s of e.get(a)??[])t.has(s)||i.push(s)}}r++}return t}function Kct(e){let t=new Map,r=new Map,n=[],i=[],a=0,s=o((l,u)=>{t.set(l,++a),r.set(l,a);for(let h of e.get(l)??[])h!==u&&(t.has(h)?(t.get(h)??0)<(t.get(l)??0)&&(n.push([l,h]),r.set(l,Math.min(r.get(l)??a,t.get(h)??a))):(n.push([l,h]),s(h,l),r.set(l,Math.min(r.get(l)??a,r.get(h)??a)),(r.get(h)??0)>=(t.get(l)??0)&&i.push(Zct(l,h,n,i.length))))},"visit");for(let l of e.keys())t.has(l)||s(l,null);return i}function Zct(e,t,r,n){let i=[],a=new Set;for(;r.length>0;){let s=r.pop();if(i.push(s),a.add(s[0]),a.add(s[1]),s[0]===e&&s[1]===t||s[0]===t&&s[1]===e)break}return{id:n,edges:i,nodes:[...a]}}var Vye=F(()=>{"use strict";yu();o(Gye,"buildDrivingTree");o(Yct,"chooseParent");o(jct,"buildAdjacency");o(Xct,"assignComponents");o(Kct,"computeBlocks");o(Zct,"popBlock")});function Wye(e,t,r){let n=[...e.nodes],i=new Map;for(let[b,T]of n.entries())i.set(T,b);let a=n.length,s=new Array(a).fill(-1),l=new Array(a).fill(0),u=[],h=new Set;for(let b of n){let T=r.parent.get(b)??null,k=i.get(b);k!=null&&T==null&&(s[k]=-1,l[k]=0,h.has(b)||(h.add(b),u.push(b)))}for(;u.length>0;){let b=u.shift(),T=i.get(b);if(T==null)continue;let k=r.children.get(b)??[];for(let C of k){if(h.has(C))continue;let w=i.get(C);w!=null&&(s[w]=T,l[w]=l[T]+1,h.add(C),u.push(C))}}for(let b of n){if(h.has(b))continue;let T=i.get(b);T!=null&&(s[T]=-1,l[T]=0,h.add(b))}let d=Math.max(1,Math.ceil(Math.log2(Math.max(1,a)))+1),f=Array.from({length:d},()=>new Array(a).fill(-1));for(let b=0;b{if(b===-1||T===-1)return-1;l[b]>C&1&&(b=f[C][b],b===-1))return-1;if(b===T)return b;for(let C=d-1;C>=0;C--){let w=f[C][b],S=f[C][T];w===-1||S===-1||w!==S&&(b=w,T=S)}return f[0][b]},"lcaIndex"),m=Array.from({length:a},()=>new Map);for(let b of e.edges){let T=b.src,k=b.dst,C=t[T],w=t[k];if(C==null||w==null||(C>w&&([T,k]=[k,T],[C,w]=[w,C]),C==null||w==null||C===w))continue;let S=i.get(T),R=i.get(k);if(S==null||R==null)continue;let L=p(S,R);if(L===-1)continue;let N=m[L];for(let I=C;I{if(T.size!==0)for(let[k,C]of T)b.set(k,(b.get(k)??0)+C)},"mergeInto"),v=new Set,x=o(b=>{let T=i.get(b);v.add(b);let k=T==null?void 0:m[T],C=k?new Map(k):new Map,w=r.children.get(b)??[];for(let S of w){let R=x(S),L=t[b];if(L!=null){let N=g.get(b);N||(N=new Map,g.set(b,N));let I=R.get(L)??0,_=t[S];_!=null&&_>L&&(I+=1),N.set(S,I)}y(C,R)}return C},"dfs");for(let b of r.roots)v.has(b)||x(b);for(let b of n)v.has(b)||x(b);return g}var qye=F(()=>{"use strict";o(Wye,"computeSubtreeCrossCounts")});function Hye(e,t,r){let n=new Map,i=o(a=>{let s=r[a]??0,l=[...t.get(a)??[]];l.sort(mB(r));for(let u of l){i(u);let h=n.get(u);h!=null&&(s=Math.min(s,h))}n.set(a,s)},"annotate");for(let a of e)i(a);return n}function mB(e){return(t,r)=>{let n=e[t]??0,i=e[r]??0;return n===i?t.localeCompare(r):n-i}}function Uye(e,t,r,n){let i=0;for(let u of t){let h=r[u]??0;h>i&&(i=h)}let a=Array.from({length:i+1},()=>[]),s=new Set,l=o(u=>{if(s.has(u))return;s.add(u);let h=r[u]??0;a[h]||(a[h]=[]),a[h].push(u);for(let d of n(u))l(d)},"emit");for(let u of e)l(u);for(let u of t)if(!s.has(u)){let h=r[u]??0;a[h]||(a[h]=[]),a[h].push(u),s.add(u)}return a}function Yye(e){let t=[];for(let r of e){let n=new Set,i=[];for(let a of r)n.has(a)||(n.add(a),i.push(a));t.push(i)}return t}var jye=F(()=>{"use strict";o(Hye,"annotateMinimumLayers");o(mB,"compareByRankThenId");o(Uye,"emitNodesInTreeOrder");o(Yye,"deduplicateLayers")});function Qct(e,t,r,n){return i=>{let a=e.get(i)??[];if(a.length===0)return[];let s=t[i]??0,l=[],u=[],h=r.get(i);for(let d of a){let f=n.get(d)??s;f>s?l.push({child:d,min:f}):u.push(d)}return l.sort((d,f)=>d.min===f.min?d.child.localeCompare(f.child):d.min-f.min),u.sort((d,f)=>{let p=h?.get(d)??0,m=h?.get(f)??0;if(p!==m)return p-m;let g=n.get(d)??s,y=n.get(f)??s;return g!==y?g-y:d.localeCompare(f)}),[...l.map(d=>d.child),...u]}}function TT(e,t,r){let n=Gye(e,{rankHint:t,laneOf:r}),{children:i,roots:a}=n;for(let f of e.nodes)i.has(f)||i.set(f,[]);let s=Wye(e,t,n),l=[...a].sort(mB(t)),u=Hye(l,i,t),h=Qct(i,t,s,u),d=Uye(l,e.nodes,t,h);return d=Yye(d),d}var gB=F(()=>{"use strict";Vye();qye();jye();o(Qct,"createChildOrderer");o(TT,"buildMultitreeLayerOrder")});function Jct(e,t,r){let n=new Set(e),i=new Set(t),a=Hm(t),s=[];for(let l of r)n.has(l.src)&&i.has(l.dst)&&s.push(a.get(l.dst));return C5(s)}function Xye(e,t,r){let n=[];for(let a of t){let s=r[a.src],l=r[a.dst];if(s==null||l==null||s===l)continue;let u=a.src,h=a.dst,d=s,f=l;s>l&&(u=a.dst,h=a.src,d=l,f=s);for(let p=d;p(r[p]??0)-(r[f]??0));for(let f of d){let p=r[f]??0;if(p===0)continue;let m=0;for(let x of n.get(f)??[])m=Math.max(m,(r[x]??0)+1);if(m>=p)continue;let g=p;r[f]=m;let y=TT(e,r,i),v=Xye(y,e.edges,r);v{"use strict";yu();C1();Dh();gB();o(Jct,"countCrossingsBetweenAdjacent");o(Xye,"totalCrossings");o(Kye,"optimizeRanksByCrossings")});function Qye(e,t){let r=cs(e),n=[...e.nodes].sort((i,a)=>(t[i]??0)-(t[a]??0)||i.localeCompare(a));for(let i of n){let a=r(i);if(!a)continue;let s=e.edges.filter(y=>y.src===i);if(s.length===0)continue;let l=!1,u=0;for(let y of s){let v=r(y.dst);v==null||v===a?l=!0:u++}if(u===0||l)continue;let h=0,d=!1;for(let y of e.edges){if(y.dst!==i)continue;let v=r(y.src);v&&(v===a?d=!0:h++)}if(h>0||!d)continue;let f=t[i]??0,p=f+u,m=0;for(let y of e.edges)y.dst===i&&(m=Math.max(m,(t[y.src]??0)+1));let g=Math.max(f,m,p);g!==f&&(t[i]=g)}}var Jye=F(()=>{"use strict";Dh();o(Qye,"adjustCrossLaneSources")});function e1e(e,t){let r=po(e),n=If(r)??[...r.nodes].sort(),i=t?.compactSingleInput??!1,a=cs(r),s=Object.create(null);for(let u of n){let h=b5(r,u),d=t?.ignoreCrossLaneEdges?h.filter(f=>{let p=a(f.src),m=a(u);return!p||!m?!0:p===m}):h;if(d.length===0)s[u]=0;else if(i&&d.length===1){let f=d[0].src,p=a(f),m=a(u);p!==m?s[u]=s[f]??0:s[u]=(s[f]??0)+1}else{let f=-1/0;for(let p of d)f=Math.max(f,(s[p.src]??0)+1);s[u]=f===-1/0?0:f}}return(t?.optimizeRanksByCrossings??!1)&&(s=Kye(r,s)),t?.ignoreCrossLaneEdges&&Qye(r,s),{layers:TT(r,s,a),rankOf:s,dummy:new Set}}var t1e=F(()=>{"use strict";yu();Dh();Zye();Jye();gB();o(e1e,"assignLayers_LongestPath")});function r1e(e,t){let r=po(e),i={...e1e(r,{compactSingleInput:t?.compactSingleInput,ignoreCrossLaneEdges:t?.ignoreCrossLaneEdges,optimizeRanksByCrossings:t?.optimizeRanksByCrossings}).rankOf},a=cs(r),{preds:s,succs:l}=T1(r,g=>{if(t?.ignoreCrossLaneEdges){let y=a(g.src),v=a(g.dst);if(y&&v&&y!==v)return!1}return!0}),u=If(r)??[...r.nodes],h=[...u].reverse(),d=o((g,y)=>{let v=0;for(let T of s.get(g)??[])v=Math.max(v,(i[T]??0)+1);let x=Number.POSITIVE_INFINITY,b=l.get(g)??[];return b.length>0&&(x=Math.min(...b.map(T=>(i[T]??0)-1))),Number.isFinite(x)||(x=Math.max(v,y)),Math.min(Math.max(y,v),x)},"clampFeasible"),f=Um.GRAVITY_ITERATIONS,p=o(g=>{let y=!1;for(let v of g){let x=s.get(v)??[],b=l.get(v)??[];if(x.length===0&&b.length===0)continue;let T=x.length>0?x.reduce((S,R)=>S+(i[R]??0)+1,0)/x.length:i[v]??0,k=b.length>0?b.reduce((S,R)=>S+(i[R]??0)-1,0)/b.length:i[v]??0,C=Math.round((T+k)/2),w=d(v,C);w!==i[v]&&(i[v]=w,y=!0)}return y},"relaxOrder");for(let g=0;g0){let v=Math.min(...y.map(x=>(i[x]??0)-1));(i[g]??0)>v&&(i[g]=v)}}return{layers:T5(r,u,i),rankOf:i,dummy:new Set}}var n1e=F(()=>{"use strict";yu();Dh();C1();t1e();o(r1e,"assignLayers_Gravity")});function eut(e){let t=dB(e),r=hB(e),n=fB(t),i=[];for(;n.length>0;){let a=[];for(let s of n){i.push(s);for(let l of r.get(s)??[])t.set(l,(t.get(l)??0)-1),(t.get(l)??0)===0&&a.push(l)}n=a.sort((s,l)=>s.localeCompare(l))}return i.length===e.nodes.length?i:null}function i1e(e,t){let r=po(e),n=t?.direction==="LR"?eut(r)??[...r.nodes].sort():If(r)??[...r.nodes].sort(),i=cs(r),a=o(d=>i(d)??d,"laneOf"),s=Object.create(null),l=new Map,u=o((d,f)=>t?.ignoreCrossLaneEdges??!0?a(d)===a(f)?1:0:1,"edgeWeight");for(let d of n){if(r.nodeById.get(d)?.isGroup)continue;let p=b5(r,d),m=0;if(p.length>0)for(let x of p){let b=x.src,T=s[b]??0;m=Math.max(m,T+u(b,d))}let g=a(d),y=l.get(g)??0,v=Math.max(m,y);s[d]=v,l.set(g,v+1)}return{layers:T5(r,n,s,{skipGroups:!0}),rankOf:s,dummy:new Set}}var a1e=F(()=>{"use strict";yu();Dh();o(eut,"topoSortByGenerationIfAcyclic");o(i1e,"assignLayers_LaneAwareCompact")});function s1e(e,t){let r=po(t),{rankOf:n}=e,i=e.layers.map(m=>[...m]),a=new Set(e.dummy?[...e.dummy]:[]),s=0,l=new Map(r.nodeById),u=o(m=>{let g=`placeholder-${s++}`,y={id:g,isGroup:!1,isDummy:!0,width:0,height:0};for(l.set(g,y),a.add(g);i.length<=m;)i.push([]);return i[m].push(g),n[g]=m,g},"addDummyAt"),h=[...r.edges].sort((m,g)=>m.id===g.id?m.src===g.src?m.dst.localeCompare(g.dst):m.src.localeCompare(g.src):m.id.localeCompare(g.id)),d=[];for(let m of h){let g=n[m.src]??0,y=n[m.dst]??0;if(y-g<=1){d.push(m);continue}let v=m.src;for(let b=g+1,T=0;b!r.nodes.includes(m))],edges:d,layout:r.layout,nodeById:l};return{layering:{layers:i,rankOf:n,dummy:a},graphWithDummies:p}}var o1e=F(()=>{"use strict";yu();o(s1e,"makeProperLayering")});function l1e(e){let t=e.length;if(t===0)return Number.POSITIVE_INFINITY;let r=[...e].sort((n,i)=>n-i);return t%2===1?r[(t-1)/2]:.5*(r[t/2-1]+r[t/2])}function c1e(e){return e.length===0?Number.POSITIVE_INFINITY:e.reduce((r,n)=>r+n,0)/e.length}function tut(e,t,r,n){let i=new Map;for(let a of e)i.set(a,[]);for(let a of r)n==="down"?t.has(a.src)&&i.has(a.dst)&&i.get(a.dst).push(t.get(a.src)):t.has(a.dst)&&i.has(a.src)&&i.get(a.src).push(t.get(a.dst));return i}function rut(e,t,r){let n=r.get(e)??0,i=r.get(t)??0;return n!==i?n-i:e.localeCompare(t)}function u1e(e,t,r){let n=new Set(e),i=new Set(t),a=Hm(e),s=Hm(t),l=[];for(let h of r)n.has(h.src)&&i.has(h.dst)&&l.push({u:a.get(h.src),v:s.get(h.dst)});l.sort((h,d)=>h.u===d.u?h.v-d.v:h.u-d.u);let u=l.map(h=>h.v);return C5(u)}function yB(e,t,r){return[...e].sort((n,i)=>{let a=l1e(t.get(n)??[]),s=l1e(t.get(i)??[]);return a===s?rut(n,i,r):isFinite(a)?isFinite(s)?a-s:-1:1})}function h1e(e,t,r,n,i,a){let s=Hm(e),l=Hm(t),u=tut(t,s,r,n);if(!i||!a||a.length===0)return yB(t,u,l);let h=new Map;for(let p of t){let m=i(p),g=h.get(m)??[];g.push(p),h.set(m,g)}let d=[];for(let p of a){let m=h.get(p);if(!m||m.length===0)continue;let g=yB(m,u,l);d.push(...g)}let f=h.get(null);if(f&&f.length>0){let p=yB(f,u,l);for(let m of p){let g=c1e(u.get(m)??[]),y=d.length;if(isFinite(g))for(let[v,x]of d.entries()){let b=c1e(u.get(x)??[]);if(gs.has(y.src)&&l.has(y.dst)),d=u?r.filter(y=>l.has(y.src)&&u.has(y.dst)):void 0,f=o(y=>{let v=u1e(e,y,h);return d&&n&&(v+=u1e(y,n,d)),v},"crossingScore"),p=i?new Map:null;if(i&&p)for(let y of t)p.set(y,i(y));let m=!0,g=f(a);for(;m;){m=!1;for(let y=0;y+1[...l]),i=t.edges,a=cs(t),s=k5(t,r?.laneOrder);for(let l=0;l<3;l++){for(let u=1;u=0;u--)n[u]=h1e(n[u+1],n[u],i,"up",a,s),n[u]=d1e(n[u+1],n[u],i,n[u-1],a)}return{layers:n}}var p1e=F(()=>{"use strict";yu();Dh();o(l1e,"median");o(c1e,"barycenter");o(tut,"neighborPositionsFor");o(rut,"currentOrderTieBreak");o(u1e,"countCrossingsBetweenAdjacent");o(yB,"sortByHeuristic");o(h1e,"reorderLayer");o(d1e,"transposeImprove");o(f1e,"orderLayers")});function m1e(e,t,r){let n=r?.layerGap??pB.DEFAULT_LAYER_GAP,i=r?.nodeGap??pB.DEFAULT_NODE_GAP,a=r?.laneGap??i*2,s=r?.direction??"TB",l=s==="LR"||s==="RL",u=e.layers,h=Object.create(null),d=Object.create(null),f=o(N=>t.nodeById.get(N),"getNode"),p=o(N=>f(N)?.width??0,"getWidth"),m=o(N=>f(N)?.height??0,"getHeight"),g=cs(t),y=k5(t,r?.laneOrder),v=u.map(N=>N.reduce((I,_)=>Math.max(I,m(_)),0)),x=[];if(l)for(let N=0;N+1Math.max(O,p($)),0),_=u[N+1].reduce((O,$)=>Math.max(O,p($)),0),A=v[N],M=v[N+1],D=A/2+M/2,P=(I+_)/2,B=Math.max(0,P-D-n);x.push(B)}let b=new Set;for(let N of u)for(let I of N)b.add(g(I));let T=b.has(null),k=y.filter(N=>b.has(N)),C=[...T?[null]:[],...k],w=Object.create(null);for(let N of k)w[N]=0;T&&(w.null=0);for(let N of u){let I=Object.create(null),_=[];for(let A of N){let M=g(A);M===null?_.push(A):(I[M]||=[]).push(A)}for(let[A,M]of Object.entries(I)){let D=M.reduce((P,B)=>P+p(B),0)+i*Math.max(0,M.length-1);w[A]=Math.max(w[A]??0,D)}if(T&&_.length){let A=_.reduce((M,D)=>M+p(D),0)+i*Math.max(0,_.length-1);w.null=Math.max(w.null??0,A)}}let S=new Map;{let N=C.map(A=>(A===null?w.null:w[A])??0),_=-(N.reduce((A,M)=>A+M,0)+a*Math.max(0,C.length-1))/2;for(let A=0;Ap(G)),$=O.reduce((G,z)=>G+z,0)+i*(P.length-1),V=B-$/2;for(let[G,z]of P.entries()){let W=O[G];h[z]=V+W/2,d[z]=R+_/2,V+=W+i}}}let M=x[N]??0;R+=_+n+M}let L=new Map;for(let N of t.edges){let I=N.ref.id;L.has(I)||L.set(I,[]),L.get(I).push(N)}for(let[,N]of L){if(N.length===0)continue;let I=N[0].ref,_=I.start,A=I.end;if(_==null||A==null)continue;let M=Math.round(((h[_]??0)+(h[A]??0))/2),D=new Set;for(let P of N)D.add(P.src),D.add(P.dst);for(let P of D){if(P===_||P===A)continue;t.nodeById.get(P)?.isDummy&&(h[P]=M)}}return{x:h,y:d}}var g1e=F(()=>{"use strict";C1();Dh();o(m1e,"assignCoordinates")});function nut(e){let t=2166136261;for(let r=0;r>>0}function iut(e){let t=e>>>0;return()=>{t+=1831565813;let r=t;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}}function aut(e,t){let r=[...e],n=iut(t);for(let i=r.length-1;i>0;i--){let a=Math.floor(n()*(i+1));[r[i],r[a]]=[r[a],r[i]]}return r}function sut(e,t){let r=0;for(let[n,i]of e.entries())r+=Math.abs(n-(t.get(i)??n));return r}function y1e(e,t){let r=new Map;for(let[i,a]of e.entries())r.set(a,i);let n=0;for(let{a:i,b:a,weight:s}of t){let l=r.get(i),u=r.get(a);l==null||u==null||(n+=s*Math.abs(l-u))}return n}function out(e){let t=w5(e);if(t.length<2)return[];let r=new Map(t.map((a,s)=>[a,s])),n=cs(e),i=new Map;for(let a of e.layout.edges??[]){if(a.isLayoutOnly)continue;let s=typeof a.start=="string"?a.start:void 0,l=typeof a.end=="string"?a.end:void 0;if(!s||!l||!e.nodeById.has(s)||!e.nodeById.has(l))continue;let u=n(s),h=n(l);if(!u||!h||u===h)continue;let d=r.get(u),f=r.get(h);if(d==null||f==null)continue;let[p,m]=d<=f?[u,h]:[h,u],g=`${p}\0${m}`,y=i.get(g);y?y.weight++:i.set(g,{a:p,b:m,weight:1})}return[...i.values()]}function v1e(e,t,r){let n=[...e],i=y1e(n,t),a=!0,s=0,l=Math.max(1,n.length);for(;a&&si.a===a.a?i.b.localeCompare(a.b):i.a.localeCompare(a.a)).map(({a:i,b:a,weight:s})=>`${i}:${a}:${s}`).join("|");return nut(`${e.join("|")}#${n}#${r}`)}function x1e(e,t={}){let r=w5(e);if(r.length<2)return r;let n=out(e);if(n.length===0)return r;let i=new Map(r.map((l,u)=>[l,u])),a=v1e(r,n,i),s=Math.max(0,t.restarts??vB);for(let l=0;l{"use strict";Dh();vB=8;o(nut,"hashString");o(iut,"mulberry32");o(aut,"deterministicShuffle");o(sut,"sourceDistance");o(y1e,"laneArrangementCost");o(out,"buildWeightedLaneEdges");o(v1e,"greedySwitch");o(lut,"isBetterCandidate");o(cut,"seedForRestart");o(x1e,"optimizeTopLaneOrder")});function T1e(e,t){let r=t?.ignoreCrossLaneEdges??!0,n=t?.optimizeRanksByCrossings??!0,i=po(e),a=t?.automaticLaneOrdering?x1e(i,{restarts:vB}):void 0,s=$ye(i),l=s.acyclic,u=r?i1e(l,{compactSingleInput:t?.compactSingleInput??Um.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:t?.direction}):r1e(l,{compactSingleInput:t?.compactSingleInput??Um.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:n}),{layering:h,graphWithDummies:d}=s1e(u,l),f=f1e(h,d,{laneOrder:a}),p=m1e(f,d,{layerGap:t?.layerGap,nodeGap:t?.nodeGap,direction:t?.direction,laneOrder:a});return{acyclic:l,reversed:s.reversed,layering:h,ordered:f,coordinates:p}}var C1e=F(()=>{"use strict";yu();Fye();n1e();a1e();o1e();p1e();g1e();C1();b1e();o(T1e,"sugiyamaLayout")});function w1e(e,t,r){let n=e.x??0,i=e.y??0,a=t.x-n,s=t.y-i,l=Math.abs(a),u=Math.abs(s);return lXr&&u*3>=l?s>0?"bottom":"top":l>Xr?a>0?"right":"left":r}function k1e(e,t){return Math.abs(e.to-t.from)re.isGroup&&!re.parentId);for(let re of h){let J={id:re.id},se=o(ge=>{s.set(ge.id,J),r.filter(Te=>Te.parentId===ge.id).forEach(se)},"assignLane");se(re)}let d=r.filter(re=>!re.isGroup&&!re.isEdgeLabel).map(re=>{let J=re.width??10,se=re.height??10,ge=re.x??0,Te=re.y??0,we=uut;return{nodeId:re.id,minX:ge-J/2-we,maxX:ge+J/2+we,minY:Te-se/2-we,maxY:Te+se/2+we,visualXHalfExtent:u?se/2+we:J/2+we}}),f=o((re,J,se,ge)=>{let Te=l.find(we=>we.orientation===re&&Math.abs(we.coord-J)<1);return Te||(Te={id:`pipe-${re}-${J.toFixed(0)}`,orientation:re,coord:J,spanMin:se,spanMax:ge,tracks:[]},l.push(Te)),Te.spanMin=Math.min(Te.spanMin,se),Te.spanMax=Math.max(Te.spanMax,ge),Te},"getOrAddPipe"),p=o((re,J)=>{let se=re.width??10,ge=re.height??10,Te=re.x??0,we=re.y??0;switch(J){case"top":return{x:Te,y:we-ge/2};case"bottom":return{x:Te,y:we+ge/2};case"left":return{x:Te-se/2,y:we};case"right":return{x:Te+se/2,y:we}}},"portForSide"),m=o((re,J,se)=>p(re,w1e(re,J,se?"bottom":"top")),"getOrthogonalPort"),g=[],y=[],v=new Set,x=1e3,b=o((re,J,se)=>{if(g.length===0)return 0;let ge=Math.abs(J.y-se.y)ne||q.from-Xr<=Me&&q.to+Xr>=Me&&(we+=x)}else if(Te){let Me=J.x,ve=Math.min(J.y,se.y)-Xr,ne=Math.max(J.y,se.y)+Xr;if(ne<=ve)return 0;for(let q of g)q.edgeIndex===re||q.orientation!=="horizontal"||q.pipe.coordne||q.from-Xr<=Me&&q.to+Xr>=Me&&(we+=x)}return we},"crossingPenalty"),T=i.map((re,J)=>{if(!re.start||!re.end)return{idx:J,crossLane:0,dx:0,dy:0};let se=a.get(re.start),ge=a.get(re.end),Te=s.get(re.start),we=s.get(re.end),Me=Te&&we&&Te.id!==we.id?1:0,ve=se&&ge?Math.abs((ge.x??0)-(se.x??0)):0,ne=se&&ge?Math.abs((ge.y??0)-(se.y??0)):0;return{idx:J,crossLane:Me,dx:ve,dy:ne}}).sort((re,J)=>{if(re.crossLane!==J.crossLane)return J.crossLane-re.crossLane;let se=re.dx+re.dy,ge=J.dx+J.dy;return Math.abs(se-ge)>1?se-ge:re.idx-J.idx}).map(re=>re.idx),k=o((re,J,se,ge)=>{let Te=Math.min(re.x,J.x),we=Math.max(re.x,J.x),Me=Math.min(re.y,J.y),ve=Math.max(re.y,J.y);return!!d.find(q=>se&&q.nodeId===se||ge&&q.nodeId===ge?!1:Math.abs(re.x-J.x)>Xr?q.minYre.y&&q.maxX>Te&&q.minXre.x&&q.maxY>Me&&q.minYw1e(re,J,"bottom"),"determineSide"),R=new Map;for(let[re,J]of i.entries()){if(!J.start||!J.end||J.start===J.end||J.points&&J.points.length>0)continue;let se=a.get(J.start),ge=a.get(J.end);if(!se||!ge)continue;let Te=(ge.x??0)-(se.x??0),we=(ge.y??0)-(se.y??0);R.set(re,{edgeIdx:re,srcId:J.start,dstId:J.end,srcSide:S(se,{x:ge.x??0,y:ge.y??0}),dstSide:S(ge,{x:se.x??0,y:se.y??0}),absDx:Math.abs(Te),absDy:Math.abs(we),dxSign:Math.sign(Te),dySign:Math.sign(we)})}let L=o(re=>re.srcSide==="top"||re.srcSide==="bottom"?re.absDx===0?1/0:re.absDy/re.absDx:re.absDy===0?1/0:re.absDx/re.absDy,"preferenceStrength"),N=o(re=>re.srcSide==="top"||re.srcSide==="bottom"?re.dxSign>=0?"right":"left":re.dySign>=0?"bottom":"top","secondarySide"),I=new Map;for(let re of R.values()){let J=`${re.srcId}:${re.srcSide}`;I.has(J)||I.set(J,[]),I.get(J).push(re)}let _=new Map,A=o((re,J)=>`${re}:${J}`,"loadKey");for(let re of R.values())_.set(A(re.srcId,re.srcSide),(_.get(A(re.srcId,re.srcSide))??0)+1),_.set(A(re.dstId,re.dstSide),(_.get(A(re.dstId,re.dstSide))??0)+1);for(let re of I.values())if(!(re.length<2)){re.sort((J,se)=>{let ge=L(J),Te=L(se);return Math.abs(ge-Te)>1e-9?Te-ge:J.edgeIdx-se.edgeIdx});for(let J=1;J=Te||(_.set(A(se.srcId,se.srcSide),Te-1),_.set(A(se.srcId,ge),we+1),se.srcSide=ge)}}let M=o(re=>{let J=re?.shape;return J==="question"||J==="diamond"},"isDiamondNode"),D=new Map;for(let re of R.values())D.has(re.dstId)||D.set(re.dstId,new Set),D.get(re.dstId).add(re.dstSide);for(let re of R.values()){if(!M(a.get(re.srcId)))continue;let J=D.get(re.srcId);if(!J?.has(re.srcSide))continue;let se=N(re);if(J.has(se)||(_.get(A(re.srcId,se))??0)>0)continue;let ge=_.get(A(re.srcId,re.srcSide))??0;_.set(A(re.srcId,re.srcSide),Math.max(0,ge-1)),_.set(A(re.srcId,se),1),re.srcSide=se}for(let re of R.values()){let{edgeIdx:J,srcId:se,dstId:ge,srcSide:Te,dstSide:we}=re,Me=a.get(se),ve=a.get(ge),ne=`${se}:${Te}:src`,q=Te==="top"||Te==="bottom"?ve.x??0:ve.y??0;C.has(ne)||C.set(ne,[]),C.get(ne).push({edgeIdx:J,oppositeCoord:q});let he=`${ge}:${we}:dst`,X=we==="top"||we==="bottom"?Me.x??0:Me.y??0;C.has(he)||C.set(he,[]),C.get(he).push({edgeIdx:J,oppositeCoord:X})}let P=new Map,B=8;for(let[re,J]of C){if(J.length<2)continue;J.sort((Be,Ne)=>Be.oppositeCoord-Ne.oppositeCoord);let se=re.split(":"),ge=se.slice(0,-2).join(":"),Te=se[se.length-2],we=se[se.length-1],Me=a.get(ge);if(!Me)continue;let ne=Te==="left"||Te==="right"?Me.height??10:Me.width??10,q=Me.shape,X=q==="question"||q==="diamond"?ne*.3:ne,K=Math.min(20,Math.max(B,X/(J.length+1))),_e=-(K*(J.length-1))/2;for(let[Be,Ne]of J.entries()){let He=_e+Be*K,$e=`${Ne.edgeIdx}:${we}`;P.set($e,He)}}let O=o(re=>!!i[re]?.labelNodeId,"edgeHasLabelNode"),$=o((re,J)=>re?(C.get(`${re}:${J}:src`)??[]).some(({edgeIdx:se})=>O(se))||(C.get(`${re}:${J}:dst`)??[]).some(({edgeIdx:se})=>O(se)):!1,"faceHasLabelNode"),V=o((re,J,se)=>J==="top"||J==="bottom"?{x:re.x+se,y:re.y}:{x:re.x,y:re.y+se},"applyPortOffset"),G=o((re,J,se)=>{let ge=R.get(re),Te={x:se.x??0,y:se.y??0},we={x:J.x??0,y:J.y??0},Me=ge?.srcSide??S(J,Te),ve=ge?.dstSide??S(se,we),ne=ge?p(J,ge.srcSide):m(J,Te,!0),q=ge?p(se,ge.dstSide):m(se,we,!1),he=P.get(`${re}:src`),X=P.get(`${re}:dst`);return he!==void 0&&(ne=V(ne,Me,he)),X!==void 0&&(q=V(q,ve,X)),{pSrcPort:ne,pDstPort:q,srcSide:Me,dstSide:ve}},"portsForEdge");for(let re of T){let J=i[re];if(y[re]=[],!J.start||!J.end||J.points&&J.points.length>0||J.start===J.end)continue;let se=a.get(J.start),ge=a.get(J.end);if(!se||!ge)continue;let{pSrcPort:Te,pDstPort:we,srcSide:Me,dstSide:ve}=G(re,se,ge),ne={...Te},q={...we},he=Me==="top"||Me==="bottom",X=ve==="top"||ve==="bottom";if(he){let We=Te.y>(se.y??0);ne.y=We?Te.y+Cl:Te.y-Cl}else{let We=Te.x>(se.x??0);ne.x=We?Te.x+Cl:Te.x-Cl}if(X){let We=we.y>(ge.y??0);q.y=We?we.y+Cl:we.y-Cl}else{let We=we.x>(ge.x??0);q.x=We?we.x+Cl:we.x-Cl}let fe=o((We,rt)=>{for(let yt of d)if(!rt.includes(yt.nodeId)&&We.x>yt.minX&&We.xyt.minY&&We.y{if(Ht){let Er=We.y>(rt.y??0);return{x:(yt.x??0)>=We.x?Yt.maxX+Ym:Yt.minX-Ym,y:Er?Yt.maxY+w1:Yt.minY-w1,leavesPositiveSide:Er}}let pr=We.x>(rt.x??0),Hr=(yt.y??0)>=We.y;return{x:pr?Yt.maxX+Ym:Yt.minX-Ym,y:Hr?Yt.maxY+w1:Yt.minY-w1,leavesPositiveSide:pr}},"obstacleDetour"),qe=[],_e=[J.start,J.end],Be=fe(ne,_e);if(Be.inside&&Be.obstacle){let We=Be.obstacle;if(he){let rt=K(Te,se,ge,We,!0);ne.x=rt.x,ne.y=rt.y;let yt=rt.leavesPositiveSide?Math.min(We.minY-2,Te.y+Cl):Math.max(We.maxY+2,Te.y-Cl);qe=[{x:Te.x,y:yt},{x:rt.x,y:yt},{x:rt.x,y:rt.y}]}else{let rt=K(Te,se,ge,We,!1),yt=rt.leavesPositiveSide?Math.min(We.minX-2,Te.x+Cl):Math.max(We.maxX+2,Te.x-Cl);ne.x=rt.x,ne.y=rt.y,qe=[{x:yt,y:Te.y},{x:yt,y:rt.y},{x:rt.x,y:rt.y}]}}let Ne=[],He=fe(q,_e);if(He.inside&&He.obstacle){let We=He.obstacle;if(X){let rt=K(we,ge,se,We,!0);q.x=rt.x,q.y=rt.y,Ne=[{x:rt.x,y:rt.y},{x:we.x,y:rt.y}]}else{let rt=K(we,ge,se,We,!1);q.x=rt.x,q.y=rt.y,Ne=[{x:rt.x,y:rt.y},{x:rt.x,y:we.y}]}}if(qe.length===0&&Ne.length===0){let We=Ym,rt=Math.abs(ne.x-q.x)1||pr>1,Er=w.get(J.start??"")??0,kt=w.get(J.end??"")??0,Ct=Ht>1&&$(J.start,Me)||pr>1&&$(J.end,ve),Ot=Ht<=1||Er<=2,Ft=pr<=1||kt<=2;if((rt||yt)&&!Yt&&(!Hr||Hr&&!Ct&&Ot&&Ft)&&!k(Te,we,J.start,J.end)){J.points=[{...Te},{...ne},{...q},{...we}],v.add(re);let Se=yt?"horizontal":"vertical",ri=yt?Te.y:Te.x,Ie=yt?Math.min(Te.x,we.x):Math.min(Te.y,we.y),Nr=yt?Math.max(Te.x,we.x):Math.max(Te.y,we.y),Pa={id:`fast-path-${Se}-${ri.toFixed(0)}-${re}`,orientation:Se,coord:ri,spanMin:Ie,spanMax:Nr,tracks:[]};g.push({edgeIndex:re,segmentIndex:0,orientation:Se,pipe:Pa,trackIndex:0,from:Ie,to:Nr});continue}}let $e=f("vertical",ne.x,ne.y,ne.y);ne.x=$e.coord;let Xe=f("vertical",q.x,q.y,q.y);q.x=Xe.coord;let Fe=Math.min(ne.x,q.x)-50,Ke=Math.max(ne.x,q.x)+50,xe=Math.min(ne.y,q.y)-50,mt=Math.max(ne.y,q.y)+50;for(let We of d){let rt=Math.min(ne.x,q.x),yt=Math.max(ne.x,q.x),Yt=Math.min(ne.y,q.y),Ht=Math.max(ne.y,q.y);We.minXrt&&We.minYYt&&(Fe=Math.min(Fe,We.minX-S5),Ke=Math.max(Ke,We.maxX+S5),xe=Math.min(xe,We.minY-S5),mt=Math.max(mt,We.maxY+S5))}for(let We of d){if(We.maxXKe||We.maxYmt)continue;let rt=Ym;f("horizontal",We.minY-rt,Fe,Ke),f("horizontal",We.maxY+rt,Fe,Ke);let yt=w1;f("vertical",We.minX-yt,xe,mt),f("vertical",We.maxX+yt,xe,mt)}f("horizontal",ne.y,Fe,Ke),f("horizontal",q.y,Fe,Ke);let Le=l.filter(We=>We.orientation==="horizontal"&&We.coord>=xe&&We.coord<=mt),ft=l.filter(We=>We.orientation==="vertical"&&We.coord>=Fe&&We.coord<=Ke),wt=o((We,rt)=>`${We.toFixed(1)},${rt.toFixed(1)}`,"getKey"),zt=wt(ne.x,ne.y),St=wt(q.x,q.y),At=new Map,bt=new Map,me=new Map,lt=new Set,gt=[];At.set(zt,0),me.set(zt,"n"),gt.push({key:zt,f:Math.hypot(q.x-ne.x,q.y-ne.y),pt:ne}),lt.add(zt);let Ze=[],Ee=o((We,rt)=>k(We,rt,J.start,J.end),"checkSegmentBlocked"),tt={x:q.x,y:ne.y},at=Ee(ne,tt),ot=Ee(tt,q),Wt=at||ot,Bt={x:ne.x,y:q.y},qt=Ee(ne,Bt),vr=Ee(Bt,q);if(Wt?qt||vr||(Math.abs(ne.x-q.x)0;){gt.sort((kt,Ct)=>kt.f-Ct.f);let We=gt.shift();if(lt.delete(We.key),We.key===St){let kt=St,Ct=q;for(Ze=[Ct];bt.has(kt);){let Ot=bt.get(kt);Ze.unshift(Ot),Ct=Ot,kt=wt(Ot.x,Ot.y)}break}let rt=We.pt.x,yt=We.pt.y,Yt=ft.sort((kt,Ct)=>kt.coord-Ct.coord),Ht=Yt.findIndex(kt=>Math.abs(kt.coord-rt)<1),pr=Le.sort((kt,Ct)=>kt.coord-Ct.coord),Hr=pr.findIndex(kt=>Math.abs(kt.coord-yt)<1),Er=[];Ht>0&&Er.push({x:Yt[Ht-1].coord,y:yt}),Ht>=0&&Ht0&&Er.push({x:rt,y:pr[Hr-1].coord}),Hr>=0&&Hrjs.nodeId===J.start||js.nodeId===J.end?!1:Ct!==Ot?js.minYyt&&js.maxX>Ct&&js.minXrt&&js.maxY>Ft&&js.minY10&&$0<-5||Xu<-10&&$0>5)&&(Nr=Math.abs($0)*100),(Pa>10&&B0<-5||Pa<-10&&B0>5)&&(Nr+=Math.abs(B0)*50);let dk=0,Pi=me.get(We.key)??"n",Mc=Math.abs(B0)>Xr?"h":"v";Pi!=="n"&&Pi!==Mc&&(dk=50);let Px=ri+Ie+Nr+dk,bd=(At.get(We.key)??1/0)+Px,fk=Math.abs(q.x-kt.x)+Math.abs(q.y-kt.y);if(bd<(At.get(Se)??1/0))if(bt.set(Se,We.pt),At.set(Se,bd),me.set(Se,Mc),!lt.has(Se))gt.push({key:Se,f:bd+fk,pt:kt}),lt.add(Se);else{let js=gt.findIndex(RD=>RD.key===Se);js!==-1&&(gt[js].f=bd+fk)}}}if(Ze.length===0&&(Ze=[ne,{x:ne.x,y:q.y},q]),Ze.length>4){let We=Ze[0],rt=Ze[Ze.length-1],yt=Math.min(We.x,rt.x),Yt=Math.max(We.x,rt.x),Ht=Math.min(We.y,rt.y),pr=Math.max(We.y,rt.y);for(let Ft of Ze)yt=Math.min(yt,Ft.x),Yt=Math.max(Yt,Ft.x),Ht=Math.min(Ht,Ft.y),pr=Math.max(pr,Ft.y);let Hr=Yt>Math.max(We.x,rt.x),Er=ytIe.minXRt&&Ie.minYgr);if(ri.length>0){let Ie=Math.max(We.x,rt.x);for(let Nr of ri){let Pa=(Nr.minX+Nr.maxX)/2;if(Nr.visualXHalfExtent===void 0||isNaN(Nr.visualXHalfExtent))continue;let Xu=Pa+Nr.visualXHalfExtent+Ft;Ie=Math.max(Ie,Xu)}isNaN(Ie)||(Yt=Ie)}}if(Er){let Rt=d.filter(gr=>gr.minXMath.min(We.y,rt.y));if(Rt.length>0){let gr=Math.min(We.x,rt.x);for(let Se of Rt){let Ie=(Se.minX+Se.maxX)/2-Se.visualXHalfExtent-Ft;gr=Math.min(gr,Ie)}yt=gr}}}let kt=o(Ft=>{let Rt=rt.y>We.y,gr=d.filter(Ie=>{let Nr=Math.min(We.x,rt.x)Ie.minX,Pa=Math.min(We.y,rt.y)Ie.minY;return Nr&&Pa}),Se=gr;if(u&&gr.length>0){let Ie=gr.filter(Nr=>Nr.minXFt);Ie.length>0&&(Se=Ie)}if(Se.length===0)return rt.y;let ri=Ym;if(Rt){let Nr=Math.max(...Se.map(Pa=>Pa.maxY))+ri;if(NrPa.minY))-ri;if(Nr>rt.y+Xr)return Nr}return rt.y},"findBestReturnY"),Ct=o(Ft=>{let Rt=kt(Ft),gr={x:Ft,y:We.y},Se={x:Ft,y:Rt},ri={x:rt.x,y:Rt},Ie=Ee(We,gr),Nr=Ee(gr,Se),Pa=Ee(Se,ri),Xu=Rt!==rt.y?Ee(ri,rt):!1;return!Ie&&!Nr&&!Pa&&!Xu?Math.abs(Rt-rt.y)=3){let We=De[De.length-1],rt=De[De.length-2],yt=De[De.length-3],Yt=Math.abs(yt.y-rt.y)Math.abs(We.x-yt.x)&&De.splice(-2,1)}else if(Ht){let pr=Math.sign(rt.y-yt.y),Hr=Math.sign(We.y-yt.y);pr!==0&&pr===Hr&&Math.abs(rt.y-yt.y)>Math.abs(We.y-yt.y)&&De.splice(-2,1)}}let it=[De[0]];for(let We=1;Wert.x,pr=Yt.x>yt.x;if(Ht!==pr){it.push(yt);continue}continue}if(Math.abs(rt.x-yt.x)rt.y,pr=Yt.y>yt.y;if(Ht!==pr){it.push(yt);continue}continue}it.push(yt)}it.push(De[De.length-1]);for(let We=0;Were.from{let Te=!ge.segments.some(Me=>(Me.edgeIndex!==J.edgeIndex||Me.segmentIndex!==J.segmentIndex)&&z(Me,re)),we=!se.segments.some(Me=>(Me.edgeIndex!==re.edgeIndex||Me.segmentIndex!==re.segmentIndex)&&z(Me,J));return Te&&we?(re.trackIndex=ge.index,J.trackIndex=se.index,se.segments=[...se.segments.filter(Me=>Me.edgeIndex!==re.edgeIndex||Me.segmentIndex!==re.segmentIndex),{edgeIndex:J.edgeIndex,segmentIndex:J.segmentIndex,from:J.from,to:J.to}],ge.segments=[...ge.segments.filter(Me=>Me.edgeIndex!==J.edgeIndex||Me.segmentIndex!==J.segmentIndex),{edgeIndex:re.edgeIndex,segmentIndex:re.segmentIndex,from:re.from,to:re.to}],!0):!1},"trySwapSegmentsAcrossTracks"),H=o(re=>{let J=re.tracks.length;return re.tracks[J]={index:J,coord:re.coord,segments:[]},J},"createNewTrack"),j=o((re,J)=>{let se=re.pipe.tracks[re.trackIndex];se.segments=se.segments.filter(Te=>Te.edgeIndex!==re.edgeIndex||Te.segmentIndex!==re.segmentIndex),re.trackIndex=J,re.pipe.tracks[J].segments.push({edgeIndex:re.edgeIndex,segmentIndex:re.segmentIndex,from:re.from,to:re.to})},"moveSegmentToTrack"),Q=o((re,J)=>{let se=y[re.edgeIndex];for(let ge of se){let Te=g[ge];Te.pipe===re.pipe&&j(Te,J)}},"moveSegmentChainToTrack"),U=o(re=>{let J=y[re.edgeIndex],se=J.indexOf(g.indexOf(re)),ge=[];return se>0&&ge.push(g[J[se-1]]),se{if(re.orientation===J.orientation)return!1;let se=re.orientation==="horizontal"?re:J,ge=re.orientation==="horizontal"?J:re;return ge.pipe.coord>se.from&&ge.pipe.coordge.from&&se.pipe.coord{for(let se of re.tracks)if(!se.segments.some(Te=>(Te.edgeIndex!==J.edgeIndex||Te.segmentIndex!==J.segmentIndex)&&z(Te,J)))return se.index;return-1},"findAvailableTrack"),le=o((re,J)=>{if(re.trackIndex===J.trackIndex)return z(re,J);let se=U(re),ge=U(J);return se.some(Te=>ge.some(we=>oe(Te,we)))},"segmentsConflict"),ie=o((re,J,se)=>{if(W(re,J,re.pipe.tracks[re.trackIndex],J.pipe.tracks[J.trackIndex]))return;let ge=te(re.pipe,J);se(J,ge!==-1?ge:H(re.pipe))},"resolveTrackConflict"),ae=o(re=>{let J=0;for(let se=0;se{if(Re.has(re))return Re.get(re);let J=y[re];if(J.length===0){let ve={dest:0,deviation:0,base:0,delta:0};return Re.set(re,ve),ve}let ge=g[J[0]].pipe.coord,Te=ge;for(let ve=1;veMath.abs(he-ge)?q:he;break}}let we=Math.abs(Te-ge),Me={dest:Te,deviation:we,base:ge,delta:Te-ge};return Re.set(re,Me),Me},"getDestInfo"),Pe=o(()=>{let re=0,J=new Map;for(let[ge,Te]of i.entries())y[ge].length!==0&&Te.start&&(J.has(Te.start)||J.set(Te.start,[]),J.get(Te.start).push(ge));let se=o(ge=>{let Te=i[ge];if(!Te.start||!Te.end)return 0;let we=a.get(Te.start),Me=a.get(Te.end);if(!we||!Me)return 0;let ve=(Me.x??0)-(we.x??0),ne=(Me.y??0)-(we.y??0);return Math.abs(ve)+Math.abs(ne)},"getEdgeDistance");for(let ge of J.values()){ge.sort((we,Me)=>{let ve=be(we),ne=be(Me);if(Math.abs(ve.deviation-ne.deviation)>1)return ve.deviation-ne.deviation;if(Math.abs(ve.dest-ne.dest)>1)return ve.dest-ne.dest;let q=se(we),he=se(Me);if(Math.abs(q-he)>1)return he-q;let X=y[we].length,fe=y[Me].length;if(X!==fe)return X-fe;if(X===1){let K=y[we][0],qe=y[Me][0];if(g[K]&&g[qe]){let _e=g[K],Be=g[qe],Ne=Math.abs(_e.to-_e.from),He=Math.abs(Be.to-Be.from);if(Math.abs(Ne-He)>1)return Ne-He}}return 0});let Te=ge.map(we=>g[y[we][0]]);re+=ae(Te)}return re},"fixSourceHandleCrossings"),Ge=o(()=>{let re=0,J=new Map;for(let[se,ge]of i.entries())y[se].length!==0&&ge.end&&(J.has(ge.end)||J.set(ge.end,[]),J.get(ge.end).push(se));for(let se of J.values()){se.sort((Te,we)=>{let Me=o(q=>{let he=y[q];if(he.length<2)return 0;let X=g[he[he.length-2]];return Math.abs(X.to-X.from)},"getDist"),ve=Me(Te),ne=Me(we);return Math.abs(ve-ne)>.1?ve-ne:Te-we});let ge=se.map(Te=>g[y[Te][y[Te].length-1]]);re+=ae(ge)}return re},"fixTargetHandleCrossings"),Oe=o(()=>{let re=0;for(let J of l){let se=[];for(let ge of J.tracks)for(let Te of ge.segments){let we=y[Te.edgeIndex].find(Me=>g[Me].segmentIndex===Te.segmentIndex);we!==void 0&&se.push(g[we])}se.sort((ge,Te)=>ge.edgeIndex-Te.edgeIndex||ge.segmentIndex-Te.segmentIndex);for(let ge=0;ge{ge.segments.forEach(Te=>{J.push({edgeIndex:Te.edgeIndex,segmentIndex:Te.segmentIndex,trackIndex:ge.index,from:Te.from,to:Te.to})})}),J.sort((ge,Te)=>ge.from-Te.from);let se=[];if(J.length>0){let ge=[J[0]],Te=J[0].to;for(let we=1;weTe.add(K.trackIndex));let we=new Map;ge.forEach(K=>{let qe=be(K.edgeIndex);we.set(K.trackIndex,(we.get(K.trackIndex)??0)+qe.delta)});let Me=[...Te].filter(K=>(we.get(K)??0)<-1),ve=[...Te].filter(K=>(we.get(K)??0)>1),ne=[...Te].filter(K=>Math.abs(we.get(K)??0)<=1);Me.sort((K,qe)=>(we.get(qe)??0)-(we.get(K)??0)),ve.sort((K,qe)=>(we.get(K)??0)-(we.get(qe)??0));let q=o((K,qe)=>{ge.filter(_e=>_e.trackIndex===K).forEach(_e=>{let Be=v.has(_e.edgeIndex)?re.coord:qe;ke.set(`${_e.edgeIndex}-${_e.segmentIndex}`,Be)})},"assignCoord"),he=0;for(let K of Me)he++,q(K,re.coord-he*xB);if(ne.length===0&&Te.size>0){let K=[...Te].sort((Be,Ne)=>Math.abs(we.get(Be)??0)-Math.abs(we.get(Ne)??0))[0],qe=Me.indexOf(K);qe!==-1&&Me.splice(qe,1);let _e=ve.indexOf(K);_e!==-1&&ve.splice(_e,1),ne.push(K)}let X=0;for(let K of ne){if(X===0)q(K,re.coord);else{let qe=X%2===1?1:-1,_e=Math.ceil(X/2);q(K,re.coord+qe*_e*xB*.5)}X++}let fe=0;for(let K of ve)fe++,q(K,re.coord+fe*xB)}}for(let[re,J]of i.entries()){let se=y[re]??[];if(se.length===0)continue;let ge=[],Te=a.get(J.start),we=a.get(J.end),{pSrcPort:Me,pDstPort:ve}=G(re,Te,we),ne=se.map(X=>{let fe=g[X],K=ke.get(`${fe.edgeIndex}-${fe.segmentIndex}`)??fe.pipe.coord;return{orient:fe.orientation,coord:K,from:fe.from,to:fe.to}});ge.push(Me);for(let X=0;XXr&&ge.push(k1(fe,qe)),Ne&&Be.orient===fe.orient)if(Math.abs(fe.coord-Be.coord)>Xr){let He=fe.orient==="vertical"?(qe+Be.from)/2:k1e(fe,Be);ge.push(k1(fe,He),k1(Be,He))}else(X===0||X===ne.length-2)&&ge.push(k1(fe,k1e(fe,Be)));else if(Ne)ge.push(k1(fe,Be.coord));else{let He=Math.abs(fe.from-qe)Xr||Math.abs(q.y-ve.y)>Xr)&&ge.push(ve);let he=[];ge.length>0&&he.push(ge[0]);for(let X=1;XXr||Math.abs(fe.y-K.y)>Xr)&&he.push(fe)}J.points=he}for(let re of i){let J=re.__originalEdge;J&&re.points&&(J.points=re.points)}e.edges=(e.edges??[]).filter(re=>!re.isLayoutOnly);let ce=o((re,J)=>{let se=J.x??0,ge=J.y??0,Te=J.width??0,we=J.height??0;if(Te<=0||we<=0)return re;let Me=se-Te/2,ve=se+Te/2,ne=ge-we/2,q=ge+we/2;if(re.xve||re.yq)return re;let he=re.x-Me,X=ve-re.x,fe=re.y-ne,K=q-re.y,qe=Math.min(he,X,fe,K);return qe===he?{x:Me,y:re.y}:qe===X?{x:ve,y:re.y}:qe===fe?{x:re.x,y:ne}:{x:re.x,y:q}},"nodeBoundaryClamp");for(let re of e.edges){let J=re.points;if(!J||J.length<2)continue;let se=re.start,ge=re.end,Te=se?a.get(se):void 0,we=ge?a.get(ge):void 0;Te&&(J[0]=ce(J[0],Te)),we&&(J[J.length-1]=ce(J[J.length-1],we))}return e}var Xr,uut,Ym,w1,S5,Cl,xB,E1e=F(()=>{"use strict";C1();Xr=zye.EPSILON,uut=8,Ym=15,w1=15,S5=25,Cl=20,xB=10;o(w1e,"chooseOrthogonalSide");o(k1e,"sharedLineEndpointCoord");o(k1,"pointOnLine");o(S1e,"routeEdgesOrthogonal")});function hut(e){return e.direction??"TB"}function A1e(e){let t=$0e(e),r=e.config.flowchart?.nodeSpacing??40,n=e.config.flowchart?.rankSpacing??100,i=e.config.swimlane?.ignoreCrossLaneEdges??!0,a=e.config.swimlane?.optimizeRanksByCrossings??!0,s=e.config.swimlane?.automaticLaneOrdering??!1,l=hut(e),{ordered:u,coordinates:h}=T1e(t,{nodeGap:r,layerGap:n,ignoreCrossLaneEdges:i,optimizeRanksByCrossings:a,automaticLaneOrdering:s,direction:l});F0e(t,u,h,{nodeGap:r,layerGap:n});for(let d of e.edges??[])delete d.points;S1e(e,l);for(let d of e.edges??[])(!d.curve||d.curve==="basis")&&(d.curve="rounded");return Oye(e,l),uB(e),l}var R1e=F(()=>{"use strict";Bye();K9();C1e();E1e();o(hut,"getSwimlaneDirection");o(A1e,"runSwimlaneLayoutCore")});var _1e={};ir(_1e,{render:()=>dut});async function dut(e,t){let r=t.select("g");Uy(r,e.markers,e.type,e.diagramId),J4(),X4(),q4(),o5(),B0e(e);let n=z0e(e);e.nodes=n.nodes,e.edges=n.edges;let{groups:i}=await A0e(r,e);A1e(e),await N0e(e,i)}var L1e=F(()=>{"use strict";R0e();Z4();Y9();Lm();Wy();G2();P0e();K9();G0e();R1e();o(dut,"render")});function K$(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,s=!0,l=!1;return{s:o(function(){r=r.call(e)},"s"),n:o(function(){var u=r.next();return s=u.done,u},"n"),e:o(function(u){l=!0,a=u},"e"),f:o(function(){try{s||r.return==null||r.return()}finally{if(l)throw a}},"f")}}function abe(e,t,r){return(t=sbe(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function gut(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function yut(e,t){var r=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,s,l=[],u=!0,h=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);u=!0);}catch(d){h=!0,i=d}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(h)throw i}}return l}}function vut(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function xut(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ki(e,t){return fut(e)||yut(e,t)||gF(e,t)||vut()}function K5(e){return put(e)||gut(e)||gF(e)||xut()}function but(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function sbe(e){var t=but(e,"string");return typeof t=="symbol"?t:t+""}function ca(e){"@babel/helpers - typeof";return ca=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ca(e)}function gF(e,t){if(e){if(typeof e=="string")return K$(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?K$(e,t):void 0}}function YT(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jT(){if(M1e)return bB;M1e=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return o(e,"isObject"),bB=e,bB}function Wut(){if(N1e)return TB;N1e=1;var e=typeof E5=="object"&&E5&&E5.Object===Object&&E5;return TB=e,TB}function hA(){if(P1e)return CB;P1e=1;var e=Wut(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return CB=r,CB}function qut(){if(O1e)return wB;O1e=1;var e=hA(),t=o(function(){return e.Date.now()},"now");return wB=t,wB}function Hut(){if(B1e)return kB;B1e=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return o(t,"trimmedEndIndex"),kB=t,kB}function Uut(){if($1e)return SB;$1e=1;var e=Hut(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return o(r,"baseTrim"),SB=r,SB}function xF(){if(F1e)return EB;F1e=1;var e=hA(),t=e.Symbol;return EB=t,EB}function Yut(){if(z1e)return AB;z1e=1;var e=xF(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;function a(s){var l=r.call(s,i),u=s[i];try{s[i]=void 0;var h=!0}catch{}var d=n.call(s);return h&&(l?s[i]=u:delete s[i]),d}return o(a,"getRawTag"),AB=a,AB}function jut(){if(G1e)return RB;G1e=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return o(r,"objectToString"),RB=r,RB}function mbe(){if(V1e)return _B;V1e=1;var e=xF(),t=Yut(),r=jut(),n="[object Null]",i="[object Undefined]",a=e?e.toStringTag:void 0;function s(l){return l==null?l===void 0?i:n:a&&a in Object(l)?t(l):r(l)}return o(s,"baseGetTag"),_B=s,_B}function Xut(){if(W1e)return LB;W1e=1;function e(t){return t!=null&&typeof t=="object"}return o(e,"isObjectLike"),LB=e,LB}function XT(){if(q1e)return DB;q1e=1;var e=mbe(),t=Xut(),r="[object Symbol]";function n(i){return typeof i=="symbol"||t(i)&&e(i)==r}return o(n,"isSymbol"),DB=n,DB}function Kut(){if(H1e)return IB;H1e=1;var e=Uut(),t=jT(),r=XT(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;function u(h){if(typeof h=="number")return h;if(r(h))return n;if(t(h)){var d=typeof h.valueOf=="function"?h.valueOf():h;h=t(d)?d+"":d}if(typeof h!="string")return h===0?h:+h;h=e(h);var f=a.test(h);return f||s.test(h)?l(h.slice(2),f?2:8):i.test(h)?n:+h}return o(u,"toNumber"),IB=u,IB}function Zut(){if(U1e)return MB;U1e=1;var e=jT(),t=qut(),r=Kut(),n="Expected a function",i=Math.max,a=Math.min;function s(l,u,h){var d,f,p,m,g,y,v=0,x=!1,b=!1,T=!0;if(typeof l!="function")throw new TypeError(n);u=r(u)||0,e(h)&&(x=!!h.leading,b="maxWait"in h,p=b?i(r(h.maxWait)||0,u):p,T="trailing"in h?!!h.trailing:T);function k(A){var M=d,D=f;return d=f=void 0,v=A,m=l.apply(D,M),m}o(k,"invokeFunc");function C(A){return v=A,g=setTimeout(R,u),x?k(A):m}o(C,"leadingEdge");function w(A){var M=A-y,D=A-v,P=u-M;return b?a(P,p-D):P}o(w,"remainingWait");function S(A){var M=A-y,D=A-v;return y===void 0||M>=u||M<0||b&&D>=p}o(S,"shouldInvoke");function R(){var A=t();if(S(A))return L(A);g=setTimeout(R,w(A))}o(R,"timerExpired");function L(A){return g=void 0,T&&d?k(A):(d=f=void 0,m)}o(L,"trailingEdge");function N(){g!==void 0&&clearTimeout(g),v=0,d=y=f=g=void 0}o(N,"cancel");function I(){return g===void 0?m:L(t())}o(I,"flush");function _(){var A=t(),M=S(A);if(d=arguments,f=this,y=A,M){if(g===void 0)return C(y);if(b)return clearTimeout(g),g=setTimeout(R,u),k(y)}return g===void 0&&(g=setTimeout(R,u)),m}return o(_,"debounced"),_.cancel=N,_.flush=I,_}return o(s,"debounce"),MB=s,MB}function rht(e,t,r,n,i){var a=i*Math.PI/180,s=Math.cos(a)*(e-r)-Math.sin(a)*(t-n)+r,l=Math.sin(a)*(e-r)+Math.cos(a)*(t-n)+n;return{x:s,y:l}}function iht(e,t,r){if(r===0)return e;var n=(t.x1+t.x2)/2,i=(t.y1+t.y2)/2,a=t.w/t.h,s=1/a,l=rht(e.x,e.y,n,i,r),u=nht(l.x,l.y,n,i,a,s);return{x:u.x,y:u.y}}function mht(){return Z1e||(Z1e=1,(function(e,t){(function(){var r,n,i,a,s,l,u,h,d,f,p,m,g,y,v;i=Math.floor,f=Math.min,n=o(function(x,b){return xb?1:0},"defaultCmp"),d=o(function(x,b,T,k,C){var w;if(T==null&&(T=0),C==null&&(C=n),T<0)throw new Error("lo must be non-negative");for(k==null&&(k=x.length);TN;0<=N?L++:L--)R.push(L);return R}).apply(this).reverse(),S=[],k=0,C=w.length;kI;0<=I?++R:--R)_.push(s(x,T));return _},"nsmallest"),y=o(function(x,b,T,k){var C,w,S;for(k==null&&(k=n),C=x[T];T>b;){if(S=T-1>>1,w=x[S],k(C,w)<0){x[T]=w,T=S;continue}break}return x[T]=C},"_siftdown"),v=o(function(x,b,T){var k,C,w,S,R;for(T==null&&(T=n),C=x.length,R=b,w=x[b],k=2*b+1;k-1}return o(t,"listCacheHas"),l$=t,l$}function lft(){if($ve)return c$;$ve=1;var e=yA();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return o(t,"listCacheSet"),c$=t,c$}function cft(){if(Fve)return u$;Fve=1;var e=ift(),t=aft(),r=sft(),n=oft(),i=lft();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l-1&&n%1==0&&n0;){var d=i.shift();t(d),a.add(d.id()),l&&n(i,a,d)}return e}function Ube(e,t,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:xpt,t=arguments.length>1?arguments[1]:void 0,r=0;r0?_=M:I=M;while(Math.abs(A)>s&&++D=a?b(N,D):P===0?D:k(N,I,I+h)}o(C,"getTForX");var w=!1;function S(){w=!0,(e!==t||r!==n)&&T()}o(S,"precompute");var R=o(function(I){return w||S(),e===t&&r===n?I:I===0?0:I===1?1:v(C(I),t,n)},"f");R.getControlPoints=function(){return[{x:e,y:t},{x:r,y:n}]};var L="generateBezier("+[e,t,r,n]+")";return R.toString=function(){return L},R}function Rxe(e,t,r,n,i){if(n===1||t===r)return r;var a=i(t,r,n);return e==null||((e.roundValue||e.color)&&(a=Math.round(a)),e.min!==void 0&&(a=Math.max(a,e.min)),e.max!==void 0&&(a=Math.min(a,e.max))),a}function _xe(e,t){return e.pfValue!=null||e.value!=null?e.pfValue!=null&&(t==null||t.type.units!=="%")?e.pfValue:e.value:e}function A1(e,t,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=_xe(e,i),l=_xe(t,i);if(Gt(s)&&Gt(l))return Rxe(a,s,l,r,n);if(Hn(s)&&Hn(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=q5[m].apply(null,g)):s.easingImpl=q5[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!e.locked()){var T={};ST(x.x,b.x)&&(T.x=A1(x.x,b.x,v,y)),ST(x.y,b.y)&&(T.y=A1(x.y,b.y,v,y)),e.position(T)}var k=s.startPan,C=s.pan,w=a.pan,S=C!=null&&n;S&&(ST(k.x,C.x)&&(w.x=A1(k.x,C.x,v,y)),ST(k.y,C.y)&&(w.y=A1(k.y,C.y,v,y)),e.emit("pan"));var R=s.startZoom,L=s.zoom,N=L!=null&&n;N&&(ST(R,L)&&(a.zoom=$T(a.minZoom,A1(R,L,v,y),a.maxZoom)),e.emit("zoom")),(S||N)&&e.emit("viewport");var I=s.style;if(I&&I.length>0&&i){for(var _=0;_=0;S--){var R=w[S];R()}w.splice(0,w.length)},"callbacks"),b=m.length-1;b>=0;b--){var T=m[b],k=T._private;if(k.stopped){m.splice(b,1),k.hooked=!1,k.playing=!1,k.started=!1,x(k.frames);continue}!k.playing&&!k.applying||(k.playing&&k.applying&&(k.applying=!1),k.started||Mpt(d,T,e),Ipt(d,T,e,f),k.applying&&(k.applying=!1),x(k.frames),k.step!=null&&k.step(e),T.completed()&&(m.splice(b,1),k.hooked=!1,k.playing=!1,k.started=!1,x(k.completes)),y=!0)}return!f&&m.length===0&&g.length===0&&n.push(d),y}o(i,"stepOne");for(var a=!1,s=0;s0?t.notify("draw",r):t.notify("draw")),r.unmerge(n),t.emit("step")}function u2e(e){this.options=br({},Gpt,Vpt,e)}function h2e(e){this.options=br({},Wpt,e)}function d2e(e){this.options=br({},qpt,e)}function SA(e){this.options=br({},Hpt,e),this.options.layout=this;var t=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=t.some(function(h){return h.data("id")===a}),u=t.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function g2e(e){this.options=br({},smt,e)}function PF(e){this.options=br({},omt,e)}function y2e(e){this.options=br({},lmt,e)}function v2e(e){this.options=br({},cmt,e)}function x2e(e){this.options=e,this.notifications=0}function C2e(e,t){t.radius===0?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function BF(e,t,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||t.radius===0?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(dmt(e,t,r,n,i),{cx:oF,cy:lF,radius:Qm,startX:b2e,startY:T2e,stopX:cF,stopY:uF,startAngle:bu.ang+Math.PI/2*eg,endAngle:wl.ang-Math.PI/2*eg,counterClockwise:Y5})}function w2e(e){var t=[];if(e!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(a,n/2,i/2);e.beginPath(),e.moveTo(t+s,r),e.lineTo(t+n-s,r),e.quadraticCurveTo(t+n,r,t+n,r+s),e.lineTo(t+n,r+i-s),e.quadraticCurveTo(t+n,r+i,t+n-s,r+i),e.lineTo(t+s,r+i),e.quadraticCurveTo(t,r+i,t,r+i-s),e.lineTo(t,r+s),e.quadraticCurveTo(t,r,t+s,r),e.closePath()}function Kxe(e,t,r){var n=e.createShader(t);if(e.shaderSource(n,r),e.compileShader(n),!e.getShaderParameter(n,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(n));return n}function ngt(e,t,r){var n=Kxe(e,e.VERTEX_SHADER,t),i=Kxe(e,e.FRAGMENT_SHADER,r),a=e.createProgram();if(e.attachShader(a,n),e.attachShader(a,i),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function igt(e,t,r){r===void 0&&(r=t);var n=e.makeOffscreenCanvas(t,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function zF(e){var t=e.pixelRatio,r=e.cy.zoom(),n=e.cy.pan();return{zoom:r*t,pan:{x:n.x*t,y:n.y*t}}}function agt(e){var t=e.pixelRatio,r=e.cy.zoom();return r*t}function sgt(e,t,r,n,i){var a=n*r+t.x,s=i*r+t.y;return s=Math.round(e.canvasHeight-s),[a,s]}function ogt(e,t){return t.picking?!0:e.pstyle("background-fill").value!=="solid"||e.pstyle("background-image").strValue!=="none"?!1:e.pstyle("border-width").value===0||e.pstyle("border-opacity").value===0?!0:e.pstyle("border-style").value==="solid"}function lgt(e,t){if(e.length!==t.length)return!1;for(var r=0;r>0&255)/255,r[1]=(e>>8&255)/255,r[2]=(e>>16&255)/255,r[3]=(e>>24&255)/255,r}function cgt(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function ugt(e,t){var r=e.createTexture();return r.buffer=function(n){e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_NEAREST),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)},r.deleteTexture=function(){e.deleteTexture(r)},r}function B2e(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function $2e(e,t,r){switch(t){case e.FLOAT:return new Float32Array(r);case e.INT:return new Int32Array(r)}}function hgt(e,t,r,n,i,a){switch(t){case e.FLOAT:return new Float32Array(r.buffer,a*n,i);case e.INT:return new Int32Array(r.buffer,a*n,i)}}function dgt(e,t,r,n){var i=B2e(e,t),a=Ki(i,2),s=a[0],l=a[1],u=$2e(e,l,n),h=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,h),e.bufferData(e.ARRAY_BUFFER,u,e.STATIC_DRAW),l===e.FLOAT?e.vertexAttribPointer(r,s,l,!1,0,0):l===e.INT&&e.vertexAttribIPointer(r,s,l,0,0),e.enableVertexAttribArray(r),e.bindBuffer(e.ARRAY_BUFFER,null),h}function xu(e,t,r,n){var i=B2e(e,r),a=Ki(i,3),s=a[0],l=a[1],u=a[2],h=$2e(e,l,t*s),d=s*u,f=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,f),e.bufferData(e.ARRAY_BUFFER,t*d,e.DYNAMIC_DRAW),e.enableVertexAttribArray(n),l===e.FLOAT?e.vertexAttribPointer(n,s,l,!1,d,0):l===e.INT&&e.vertexAttribIPointer(n,s,l,d,0),e.vertexAttribDivisor(n,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var p=new Array(t),m=0;mI2e?(_gt(e),t.call(e,a)):(Lgt(e),V2e(e,a,NT.SCREEN)))}}{var r=e.matchCanvasSize;e.matchCanvasSize=function(a){r.call(e,a),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0}}e.findNearestElements=function(a,s,l,u){return Ogt(e,a,s)};{var n=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){n.call(e),e.pickingFrameBuffer.needsDraw=!0}}{var i=e.notify;e.notify=function(a,s){i.call(e,a,s),a==="viewport"||a==="bounds"?e.pickingFrameBuffer.needsDraw=!0:a==="background"&&e.drawing.invalidate(s,{type:"node-body"})}}}function _gt(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}function Lgt(e){var t=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,e.canvasWidth,e.canvasHeight),n.restore()},"clear");t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}function Dgt(e){var t=e.canvasWidth,r=e.canvasHeight,n=zF(e),i=n.pan,a=n.zoom,s=q$();X5(s,s,[i.x,i.y]),dF(s,s,[a,a]);var l=q$();ggt(l,t,r);var u=q$();return mgt(u,l,s),u}function G2e(e,t){var r=e.canvasWidth,n=e.canvasHeight,i=zF(e),a=i.pan,s=i.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,r,n),t.translate(a.x,a.y),t.scale(s,s)}function Igt(e,t){e.drawSelectionRectangle(t,function(r){return G2e(e,r)})}function Mgt(e){var t=e.data.contexts[e.NODE];t.save(),G2e(e,t),t.strokeStyle="rgba(0, 0, 0, 0.3)",t.beginPath(),t.moveTo(-1e3,0),t.lineTo(1e3,0),t.stroke(),t.beginPath(),t.moveTo(0,-1e3),t.lineTo(0,1e3),t.stroke(),t.restore()}function Ngt(e){var t=o(function(i,a,s){for(var l=i.atlasManager.getAtlasCollection(a),u=e.data.contexts[e.NODE],h=l.atlases,d=0;d=0&&k.add(S)}return k}function Ogt(e,t,r){var n=Pgt(e,t,r),i=e.getCachedZSortedEles(),a,s,l=yo(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,d=i[h];if(!a&&d.isNode()&&(a=d),!s&&d.isEdge()&&(s=d),a&&s)break}}catch(f){l.e(f)}finally{l.f()}return[a,s].filter(Boolean)}function X$(e,t,r){var n=e.drawing;t+=1,r.isNode()?(n.drawNode(r,t,"node-underlay"),n.drawNode(r,t,"node-body"),n.drawTexture(r,t,"label"),n.drawNode(r,t,"node-overlay")):(n.drawEdgeLine(r,t),n.drawEdgeArrow(r,t,"source"),n.drawEdgeArrow(r,t,"target"),n.drawTexture(r,t,"label"),n.drawTexture(r,t,"edge-source-label"),n.drawTexture(r,t,"edge-target-label"))}function V2e(e,t,r){var n;e.webglDebug&&(n=performance.now());var i=e.drawing,a=0;if(r.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&Igt(e,t),e.data.canvasNeedsRedraw[e.NODE]||r.picking){var s=e.data.contexts[e.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=Dgt(e),u=e.getCachedZSortedEles();if(a=u.length,i.startFrame(l,r),r.screen){for(var h=0;h{"use strict";o(K$,"_arrayLikeToArray");o(fut,"_arrayWithHoles");o(put,"_arrayWithoutHoles");o(Yf,"_classCallCheck");o(mut,"_defineProperties");o(jf,"_createClass");o(yo,"_createForOfIteratorHelper");o(abe,"_defineProperty$1");o(gut,"_iterableToArray");o(yut,"_iterableToArrayLimit");o(vut,"_nonIterableRest");o(xut,"_nonIterableSpread");o(Ki,"_slicedToArray");o(K5,"_toConsumableArray");o(but,"_toPrimitive");o(sbe,"_toPropertyKey");o(ca,"_typeof");o(gF,"_unsupportedIterableToArray");oa=typeof window>"u"?null:window,D1e=oa?oa.navigator:null;oa&&oa.document;Tut=ca(""),obe=ca({}),Cut=ca(function(){}),wut=typeof HTMLElement>"u"?"undefined":ca(HTMLElement),HT=o(function(t){return t&&t.instanceString&&Ci(t.instanceString)?t.instanceString():null},"instanceStr"),fr=o(function(t){return t!=null&&ca(t)==Tut},"string"),Ci=o(function(t){return t!=null&&ca(t)===Cut},"fn"),Hn=o(function(t){return!Ho(t)&&(Array.isArray?Array.isArray(t):t!=null&&t instanceof Array)},"array"),cn=o(function(t){return t!=null&&ca(t)===obe&&!Hn(t)&&t.constructor===Object},"plainObject"),kut=o(function(t){return t!=null&&ca(t)===obe},"object"),Gt=o(function(t){return t!=null&&ca(t)===ca(1)&&!isNaN(t)},"number"),Sut=o(function(t){return Gt(t)&&Math.floor(t)===t},"integer"),Z5=o(function(t){if(wut!=="undefined")return t!=null&&t instanceof HTMLElement},"htmlElement"),Ho=o(function(t){return UT(t)||lbe(t)},"elementOrCollection"),UT=o(function(t){return HT(t)==="collection"&&t._private.single},"element"),lbe=o(function(t){return HT(t)==="collection"&&!t._private.single},"collection"),yF=o(function(t){return HT(t)==="core"},"core"),cbe=o(function(t){return HT(t)==="stylesheet"},"stylesheet"),Eut=o(function(t){return HT(t)==="event"},"event"),Gf=o(function(t){return t==null?!0:!!(t===""||t.match(/^\s+$/))},"emptyString"),Aut=o(function(t){return typeof HTMLElement>"u"?!1:t instanceof HTMLElement},"domElement"),Rut=o(function(t){return cn(t)&&Gt(t.x1)&&Gt(t.x2)&&Gt(t.y1)&&Gt(t.y2)},"boundingBox"),_ut=o(function(t){return kut(t)&&Ci(t.then)},"promise"),Lut=o(function(){return D1e&&D1e.userAgent.match(/msie|trident|edge/i)},"ms"),z1=o(function(t,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),But=o(function(t,r){return-1*hbe(t,r)},"descending"),br=Object.assign!=null?Object.assign.bind(Object):function(e){for(var t=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(d,"hue2rgb");var f=new RegExp("^"+Mut+"$").exec(t);if(f){if(n=parseInt(f[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(f[2]),i<0||i>100||(i=i/100,a=parseFloat(f[3]),a<0||a>100)||(a=a/100,s=f[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*d(m,p,n+1/3)),u=Math.round(255*d(m,p,n)),h=Math.round(255*d(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),zut=o(function(t){var r,n=new RegExp("^"+Dut+"$").exec(t);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),Gut=o(function(t){return Vut[t.toLowerCase()]},"colorname2tuple"),dbe=o(function(t){return(Hn(t)?t:null)||Gut(t)||$ut(t)||zut(t)||Fut(t)},"color2tuple"),Vut={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},fbe=o(function(t){for(var r=t.map,n=t.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:Jm,n=r,i;i=t.next(),!i.done;)n=n*ybe+i.value|0;return n},"hashIterableInts"),PT=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jm;return r*ybe+t|0},"hashInt"),OT=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:I1;return(r<<5)+r+t|0},"hashIntAlt"),eht=o(function(t,r){return t*2097152+r},"combineHashes"),Mf=o(function(t){return t[0]*2097152+t[1]},"combineHashesArray"),A5=o(function(t,r){return[PT(t[0],r[0]),OT(t[1],r[1])]},"hashArrays"),Y1e=o(function(t,r){var n={value:0,done:!1},i=0,a=t.length,s={next:o(function(){return i=0;i--)t[i]===r&&t.splice(i,1)},"removeFromArray"),CF=o(function(t){t.splice(0,t.length)},"clearArray"),uht=o(function(t,r){for(var n=0;n"u"?"undefined":ca(Set))!==dht?Set:fht,dA=o(function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(t===void 0||r===void 0||!yF(t)){pi("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){pi("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:t,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new W1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=t.pan(),u=t.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];Hn(r.classes)?h=r.classes:fr(r.classes)&&(h=r.classes.split(/\s+/));for(var d=0,f=h.length;d0;){var w=b.pop(),S=v(w),R=w.id();if(p[R]=S,S!==1/0)for(var L=w.neighborhood().intersect(g),N=0;N0)for(O.unshift(B);f[V];){var G=f[V];O.unshift(G.edge),O.unshift(G.node),$=G.node,V=$.id()}return l.spawn(O)},"pathTo")}},"dijkstra")},bht={kruskal:o(function(t){t=t||function(T){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(k){for(var C=0;C0;){if(C(),S++,k===d){for(var R=[],L=a,N=d,I=x[N];R.unshift(L),I!=null&&R.unshift(I),L=v[N],L!=null;)N=L.id(),I=x[N];return{found:!0,distance:f[k],path:this.spawn(R),steps:S}}m[k]=!0;for(var _=T._private.edges,A=0;A<_.length;A++){var M=_[A];if(this.hasElementWithId(M.id())&&!(l&&M.data("source")!==k)){var D=M.source(),P=M.target(),B=D.id()!==k?D:P,O=B.id();if(this.hasElementWithId(O)&&!m[O]){var $=f[k]+u(M);if(!w(O)){f[O]=$,p[O]=$+s(B),b(B,O),v[O]=T,x[O]=M;continue}$I&&(g[N]=I,b[N]=L,T[N]=C),!a){var _=L*d+R;!a&&g[_]>I&&(g[_]=I,b[_]=R,T[_]=C)}}}for(var A=0;A1&&arguments[1]!==void 0?arguments[1]:s,ke=T(ue),ce=[],re=ke;;){if(re==null)return r.spawn();var J=b(re),se=J.edge,ge=J.pred;if(ce.unshift(re[0]),re.same(ye)&&ce.length>0)break;se!=null&&ce.unshift(se),re=ge}return u.spawn(ce)},"pathTo"),w=0;w=0;d--){var f=h[d],p=f[1],m=f[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(d,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Rht(a,t,r),n--}return r},"contractUntil"),_ht={kargerStein:o(function(){var t=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(O){return O.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/Aht);if(a<2){pi("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],d=0;d1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?t=t.slice(r,n):(n0&&t.splice(0,r));for(var l=0,u=t.length-1;u>=0;u--){var h=t[u];s?isFinite(h)||(t[u]=-1/0,l++):t.splice(u,1)}a&&t.sort(function(p,m){return p-m});var d=t.length,f=Math.floor(d/2);return d%2!==0?t[f+1+l]:(t[f-1+l]+t[f+l])/2},"median"),Pht=o(function(t){return Math.PI*t/180},"deg2rad"),R5=o(function(t,r){return Math.atan2(r,t)-Math.PI/2},"getAngleFromDisp"),wF=Math.log2||function(e){return Math.log(e)/Math.log(2)},kF=o(function(t){return t>0?1:t<0?-1:0},"signum"),ng=o(function(t,r){return Math.sqrt(Zm(t,r))},"dist"),Zm=o(function(t,r){var n=r.x-t.x,i=r.y-t.y;return n*n+i*i},"sqdist"),Oht=o(function(t){for(var r=t.length,n=0,i=0;i=t.x1&&t.y2>=t.y1)return{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,w:t.x2-t.x1,h:t.y2-t.y1};if(t.w!=null&&t.h!=null&&t.w>=0&&t.h>=0)return{x1:t.x1,y1:t.y1,x2:t.x1+t.w,y2:t.y1+t.h,w:t.w,h:t.h}}},"makeBoundingBox"),$ht=o(function(t){return{x1:t.x1,x2:t.x2,w:t.w,y1:t.y1,y2:t.y2,h:t.h}},"copyBoundingBox"),Fht=o(function(t){t.x1=1/0,t.y1=1/0,t.x2=-1/0,t.y2=-1/0,t.w=0,t.h=0},"clearBoundingBox"),zht=o(function(t,r){t.x1=Math.min(t.x1,r.x1),t.x2=Math.max(t.x2,r.x2),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,r.y1),t.y2=Math.max(t.y2,r.y2),t.h=t.y2-t.y1},"updateBoundingBox"),Sbe=o(function(t,r,n){t.x1=Math.min(t.x1,r),t.x2=Math.max(t.x2,r),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,n),t.y2=Math.max(t.y2,n),t.h=t.y2-t.y1},"expandBoundingBoxByPoint"),z5=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return t.x1-=r,t.x2+=r,t.y1-=r,t.y2+=r,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBox"),G5=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=Ki(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return t.x1-=s,t.x2+=i,t.y1-=n,t.y2+=a,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBoxSides"),J1e=o(function(t,r){t.x1=r.x1,t.y1=r.y1,t.x2=r.x2,t.y2=r.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1},"assignBoundingBox"),SF=o(function(t,r){return!(t.x1>r.x2||r.x1>t.x2||t.x2r.y2||r.y1>t.y2)},"boundingBoxesIntersect"),Bf=o(function(t,r,n){return t.x1<=r&&r<=t.x2&&t.y1<=n&&n<=t.y2},"inBoundingBox"),eve=o(function(t,r){return Bf(t,r.x,r.y)},"pointInBoundingBox"),Ebe=o(function(t,r){return Bf(t,r.x1,r.y1)&&Bf(t,r.x2,r.y2)},"boundingBoxInBoundingBox"),Ght=(BB=Math.hypot)!==null&&BB!==void 0?BB:function(e,t){return Math.sqrt(e*e+t*t)};o(Vht,"inflatePolygon");o(Wht,"miterBox");Abe=o(function(t,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?Wf(a,s):u,d=a/2,f=s/2;h=Math.min(h,d,f);var p=h!==d,m=h!==f,g;if(p){var y=n-d+h-l,v=i-f-l,x=n+d-h+l,b=v;if(g=$f(t,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var T=n+d+l,k=i-f+h-l,C=T,w=i+f-h+l;if(g=$f(t,r,n,i,T,k,C,w,!1),g.length>0)return g}if(p){var S=n-d+h-l,R=i+f+l,L=n+d-h+l,N=R;if(g=$f(t,r,n,i,S,R,L,N,!1),g.length>0)return g}if(m){var I=n-d-l,_=i-f+h-l,A=I,M=i+f-h+l;if(g=$f(t,r,n,i,I,_,A,M,!1),g.length>0)return g}var D;{var P=n-d+h,B=i-f+h;if(D=_T(t,r,n,i,P,B,h+l),D.length>0&&D[0]<=P&&D[1]<=B)return[D[0],D[1]]}{var O=n+d-h,$=i-f+h;if(D=_T(t,r,n,i,O,$,h+l),D.length>0&&D[0]>=O&&D[1]<=$)return[D[0],D[1]]}{var V=n+d-h,G=i+f-h;if(D=_T(t,r,n,i,V,G,h+l),D.length>0&&D[0]>=V&&D[1]>=G)return[D[0],D[1]]}{var z=n-d+h,W=i+f-h;if(D=_T(t,r,n,i,z,W,h+l),D.length>0&&D[0]<=z&&D[1]>=W)return[D[0],D[1]]}return[]},"roundRectangleIntersectLine"),qht=o(function(t,r,n,i,a,s,l){var u=l,h=Math.min(n,a),d=Math.max(n,a),f=Math.min(i,s),p=Math.max(i,s);return h-u<=t&&t<=d+u&&f-u<=r&&r<=p+u},"inLineVicinity"),Hht=o(function(t,r,n,i,a,s,l,u,h){var d={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(td.x2||rd.y2)},"inBezierVicinity"),Uht=o(function(t,r,n,i){n-=i;var a=r*r-4*t*n;if(a<0)return[];var s=Math.sqrt(a),l=2*t,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Yht=o(function(t,r,n,i,a){var s=1e-5;t===0&&(t=s),r/=t,n/=t,i/=t;var l,u,h,d,f,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){f=h+Math.sqrt(l),f=f<0?-Math.pow(-f,1/3):Math.pow(f,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+f+p,m+=(f+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+f)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,d=u*u*u,d=Math.acos(h/Math.sqrt(d)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(d/3),a[2]=-m+g*Math.cos((d+2*Math.PI)/3),a[4]=-m+g*Math.cos((d+4*Math.PI)/3)},"solveCubic"),jht=o(function(t,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,d=9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,f=3*n*n-6*n*a+n*l-n*t+2*a*a+2*a*t-l*t+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*t-a*t+i*s-i*i+i*r-s*r,m=[];Yht(h,d,f,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,T,k,C=0;C=0?kh?(t-a)*(t-a)+(r-s)*(r-s):d-p},"sqdistToFiniteLine"),go=o(function(t,r,n){for(var i,a,s,l,u,h=0,d=0;d=t&&t>=s||i<=t&&t<=s)u=(t-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Oh=o(function(t,r,n,i,a,s,l,u,h){var d=new Array(n.length),f;u[0]!=null?(f=Math.atan(u[1]/u[0]),u[0]<0?f=f+Math.PI/2:f=-f-Math.PI/2):f=u;for(var p=Math.cos(-f),m=Math.sin(-f),g=0;g0){var v=tA(d,-h);y=eA(v)}else y=d;return go(t,r,y)},"pointInsidePolygon"),Kht=o(function(t,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),d=0;d=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var T=b[0]*u[0]+t,k=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[T,k];var C=b[1]*u[0]+t,w=b[1]*u[1]+r;return[T,k,C,w]}else return[T,k]},"intersectLineCircle"),$B=o(function(t,r,n){return r<=t&&t<=n||n<=t&&t<=r?t:t<=r&&r<=n||n<=r&&r<=t?r:n},"midOfThree"),$f=o(function(t,r,n,i,a,s,l,u,h){var d=t-a,f=n-t,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*d,x=f*m-g*d,b=y*f-p*g;if(b!==0){var T=v/b,k=x/b,C=.001,w=0-C,S=1+C;return w<=T&&T<=S&&w<=k&&k<=S?[t+T*f,r+T*g]:h?[t+T*f,r+T*g]:[]}else return v===0||x===0?$B(t,n,l)===l?[l,u]:$B(t,n,a)===a?[a,s]:$B(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Qht=o(function(t,r,n,i,a){var s=[],l=i/2,u=a/2,h=r,d=n;s.push({x:h+l*t[0],y:d+u*t[1]});for(var f=1;f0){var y=tA(f,-u);m=eA(y)}else m=f}else m=n;for(var v,x,b,T,k=0;k2){for(var g=[d[0],d[1]],y=Math.pow(g[0]-t,2)+Math.pow(g[1]-r,2),v=1;vd&&(d=k)},"set"),get:o(function(T){return h[T]},"get")},p=0;p0?D=M.edgesTo(A)[0]:D=A.edgesTo(M)[0];var P=i(D);A=A.id(),S[A]>S[I]+P&&(S[A]=S[I]+P,R.nodes.indexOf(A)<0?R.push(A):R.updateItem(A),w[A]=0,C[A]=[]),S[A]==S[I]+P&&(w[A]=w[A]+w[I],C[A].push(I))}else for(var B=0;B0;){for(var G=k.pop(),z=0;z0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),fdt=o(function(t,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:gdt,l=i,u,h,d=0;d=2?CT(t,r,n,0,ave,ydt):CT(t,r,n,0,ive)},"euclidean"),squaredEuclidean:o(function(t,r,n){return CT(t,r,n,0,ave)},"squaredEuclidean"),manhattan:o(function(t,r,n){return CT(t,r,n,0,ive)},"manhattan"),max:o(function(t,r,n){return CT(t,r,n,-1/0,vdt)},"max")};G1["squared-euclidean"]=G1.squaredEuclidean;G1.squaredeuclidean=G1.squaredEuclidean;o(pA,"clusteringDistance");xdt=Va({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),AF=o(function(t){return xdt(t)},"setOptions"),rA=o(function(t,r,n,i,a){var s=a!=="kMedoids",l=s?function(f){return n[f]}:function(f){return i[f](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,d=r;return pA(t,i.length,l,u,h,d)},"getDist"),zB=o(function(t,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),Cdt=o(function(t,r,n){for(var i=0;il&&(l=r[h][d],u=d);a[u].push(t[h])}for(var f=0;f=a.threshold||a.mode==="dendrogram"&&t.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},t[g.index]=v,t.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),hve=o(function(t,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*t+h])}s>0&&i.push(s)}for(var d=0;dh&&(u=d,h=f)}n[a]=s[u]}return i=hve(t,r,n),i},"assign"),dve=o(function(t){for(var r=this.cy(),n=this.nodes(),i=Ndt(t),a={},s=0;s=I?(_=I,I=M,A=D):M>_&&(_=M);for(var P=0;P0?1:0;S[L%i.minIterations*l+z]=W,G+=W}if(G>0&&(L>=i.minIterations-1||L==i.maxIterations-1)){for(var H=0,j=0;j1||w>1)&&(l=!0),f[T]=[],b.outgoers().forEach(function(R){R.isEdge()&&f[T].push(R.id())})}else p[T]=[void 0,b.target().id()]}):s.forEach(function(b){var T=b.id();if(b.isNode()){var k=b.degree(!0);k%2&&(u?h?l=!0:h=T:u=T),f[T]=[],b.connectedEdges().forEach(function(C){return f[T].push(C.id())})}else p[T]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(d&&h!=d)return m;d=h}else{if(d&&h!=d&&u!=d)return m;d||(d=h)}else d||(d=s[0].id());var g=o(function(T){for(var k=T,C=[T],w,S,R;f[k].length;)w=f[k].shift(),S=p[w][0],R=p[w][1],k!=R?(f[R]=f[R].filter(function(L){return L!=w}),k=R):!a&&k!=S&&(f[S]=f[S].filter(function(L){return L!=w}),k=S),C.unshift(w),C.unshift(k);return C},"walk"),y=[],v=[];for(v=g(d);v.length!=1;)f[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in f)if(f[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},L5=o(function(){var t=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=t.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(t);v.merge(x),b.forEach(function(T){var k=T.id(),C=T.connectedEdges().intersection(t);v.merge(T),r[k].cutVertex?v.merge(C.filter(function(w){return w.isLoop()})):v.merge(C)})}),a.push(v)},"buildComponent"),h=o(function(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=t.getElementById(m).connectedEdges().intersection(t);if(y.size()===0)a.push(t.spawn(t.getElementById(m)));else{var v,x,b,T;y.forEach(function(k){v=k.source().id(),x=k.target().id(),b=v===m?x:v,b!==g&&(T=k.id(),l[T]||(l[T]=!0,s.push({x:m,y:b,edge:k})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(h(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");t.forEach(function(f){if(f.isNode()){var p=f.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var d=Object.keys(r).filter(function(f){return r[f].cutVertex}).map(function(f){return t.getElementById(f)});return{cut:t.spawn(d),components:a}},"hopcroftTarjanBiconnected"),Vdt={hopcroftTarjanBiconnected:L5,htbc:L5,htb:L5,hopcroftTarjanBiconnectedComponents:L5},D5=o(function(){var t=this,r={},n=0,i=[],a=[],s=t.spawn(t),l=o(function(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var d=t.getElementById(h).connectedEdges().intersection(t);if(d.forEach(function(y){var v=y.target().id();v!==h&&(v in r||l(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var f=t.spawn();;){var p=a.pop();if(f.merge(t.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=f.edgesWith(f),g=f.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return t.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),Wdt={tarjanStronglyConnected:D5,tsc:D5,tscc:D5,tarjanStronglyConnectedComponents:D5},Nbe={};[BT,xht,bht,Cht,kht,Eht,_ht,rdt,B1,$1,J$,mdt,Rdt,Idt,Fdt,Gdt,Vdt,Wdt].forEach(function(e){br(Nbe,e)});Pbe=0,Obe=1,Bbe=2,vc=o(function(t){if(!(this instanceof vc))return new vc(t);this.id="Thenable/1.0.7",this.state=Pbe,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof t=="function"&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");vc.prototype={fulfill:o(function(t){return fve(this,Obe,"fulfillValue",t)},"fulfill"),reject:o(function(t){return fve(this,Bbe,"rejectReason",t)},"reject"),then:o(function(t,r){var n=this,i=new vc;return n.onFulfilled.push(mve(t,i,"fulfill")),n.onRejected.push(mve(r,i,"reject")),$be(n),i.proxy},"then")};fve=o(function(t,r,n,i){return t.state===Pbe&&(t.state=r,t[n]=i,$be(t)),t},"deliver"),$be=o(function(t){t.state===Obe?pve(t,"onFulfilled",t.fulfillValue):t.state===Bbe&&pve(t,"onRejected",t.rejectReason)},"execute"),pve=o(function(t,r,n){if(t[r].length!==0){var i=t[r];t[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(t){return this.toggleClass(t,!0)},"addClass"),hasClass:o(function(t){var r=this[0];return r!=null&&r._private.classes.has(t)},"hasClass"),toggleClass:o(function(t,r){Hn(t)||(t=t.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(t){return this.toggleClass(t,!1)},"removeClass"),flashClass:o(function(t,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(t),setTimeout(function(){n.removeClass(t)},r),n},"flashClass")};V5.className=V5.classNames=V5.classes;ln={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:la,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};ln.variable="(?:[\\w-.]|(?:\\\\"+ln.metaChar+"))+";ln.className="(?:[\\w-]|(?:\\\\"+ln.metaChar+"))+";ln.value=ln.string+"|"+ln.number;ln.id=ln.variable;(function(){var e,t,r;for(e=ln.comparatorOp.split("|"),r=0;r=0)&&t!=="="&&(ln.comparatorOp+="|\\!"+t)})();zn=o(function(){return{checks:[]}},"newQuery"),er={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},nF=[{selector:":selected",matches:o(function(t){return t.selected()},"matches")},{selector:":unselected",matches:o(function(t){return!t.selected()},"matches")},{selector:":selectable",matches:o(function(t){return t.selectable()},"matches")},{selector:":unselectable",matches:o(function(t){return!t.selectable()},"matches")},{selector:":locked",matches:o(function(t){return t.locked()},"matches")},{selector:":unlocked",matches:o(function(t){return!t.locked()},"matches")},{selector:":visible",matches:o(function(t){return t.visible()},"matches")},{selector:":hidden",matches:o(function(t){return!t.visible()},"matches")},{selector:":transparent",matches:o(function(t){return t.transparent()},"matches")},{selector:":grabbed",matches:o(function(t){return t.grabbed()},"matches")},{selector:":free",matches:o(function(t){return!t.grabbed()},"matches")},{selector:":removed",matches:o(function(t){return t.removed()},"matches")},{selector:":inside",matches:o(function(t){return!t.removed()},"matches")},{selector:":grabbable",matches:o(function(t){return t.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(t){return!t.grabbable()},"matches")},{selector:":animated",matches:o(function(t){return t.animated()},"matches")},{selector:":unanimated",matches:o(function(t){return!t.animated()},"matches")},{selector:":parent",matches:o(function(t){return t.isParent()},"matches")},{selector:":childless",matches:o(function(t){return t.isChildless()},"matches")},{selector:":child",matches:o(function(t){return t.isChild()},"matches")},{selector:":orphan",matches:o(function(t){return t.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(t){return t.isChild()},"matches")},{selector:":compound",matches:o(function(t){return t.isNode()?t.isParent():t.source().isParent()||t.target().isParent()},"matches")},{selector:":loop",matches:o(function(t){return t.isLoop()},"matches")},{selector:":simple",matches:o(function(t){return t.isSimple()},"matches")},{selector:":active",matches:o(function(t){return t.active()},"matches")},{selector:":inactive",matches:o(function(t){return!t.active()},"matches")},{selector:":backgrounding",matches:o(function(t){return t.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(t){return!t.backgrounding()},"matches")}].sort(function(e,t){return But(e.selector,t.selector)}),zft=(function(){for(var e={},t,r=0;r0&&d.edgeCount>0)return In("The selector `"+t+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(d.edgeCount>1)return In("The selector `"+t+"` is invalid because it uses multiple edge selectors"),!1;d.edgeCount===1&&In("The selector `"+t+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),Uft=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var t=o(function(d){return d??""},"clean"),r=o(function(d){return fr(d)?'"'+d+'"':t(d)},"cleanVal"),n=o(function(d){return" "+d+" "},"space"),i=o(function(d,f){var p=d.type,m=d.value;switch(p){case er.GROUP:{var g=t(m);return g.substring(0,g.length-1)}case er.DATA_COMPARE:{var y=d.field,v=d.operator;return"["+y+n(t(v))+r(m)+"]"}case er.DATA_BOOL:{var x=d.operator,b=d.field;return"["+t(x)+b+"]"}case er.DATA_EXIST:{var T=d.field;return"["+T+"]"}case er.META_COMPARE:{var k=d.operator,C=d.field;return"[["+C+n(t(k))+r(m)+"]]"}case er.STATE:return m;case er.ID:return"#"+m;case er.CLASS:return"."+m;case er.PARENT:case er.CHILD:return a(d.parent,f)+n(">")+a(d.child,f);case er.ANCESTOR:case er.DESCENDANT:return a(d.ancestor,f)+" "+a(d.descendant,f);case er.COMPOUND_SPLIT:{var w=a(d.left,f),S=a(d.subject,f),R=a(d.right,f);return w+(w.length>0?" ":"")+S+R}case er.TRUE:return""}},"checkToString"),a=o(function(d,f){return d.checks.reduce(function(p,m,g){return p+(f===d&&g===0?"$":"")+i(m,f)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),f=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),d=!0),(a||l||d)&&(u=!a&&!s?"":""+t,h=""+n),d&&(t=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=t===n;break;case">":p=!0,i=t>n;break;case">=":p=!0,i=t>=n;break;case"<":p=!0,i=t1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,Ube)};o(Ybe,"addParent");V1.forEachUp=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,Ybe)};o(ept,"addParentAndChildren");V1.forEachUpAndDown=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,ept)};V1.ancestors=V1.parents;zT=jbe={data:Dn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Dn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Dn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Dn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Dn.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Dn.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var t=this[0];if(t)return t._private.data.id},"id")};zT.attr=zT.data;zT.removeAttr=zT.removeData;tpt=jbe,xA={};o($$,"defineDegreeFunction");br(xA,{degree:$$(function(e,t){return t.source().same(t.target())?2:1}),indegree:$$(function(e,t){return t.target().same(e)?1:0}),outdegree:$$(function(e,t){return t.source().same(e)?1:0})});o(E1,"defineDegreeBoundsFunction");br(xA,{minDegree:E1("degree",function(e,t){return et}),minIndegree:E1("indegree",function(e,t){return et}),minOutdegree:E1("outdegree",function(e,t){return et})});br(xA,{totalDegree:o(function(t){for(var r=0,n=this.nodes(),i=0;i0,p=f;f&&(d=d[0]);var m=p?d.position():{x:0,y:0};r!==void 0?h.position(t,r+m[t]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},t===void 0?a:a[t]}else if(!s)return;return this},"relativePosition")};yc.modelPosition=yc.point=yc.position;yc.modelPositions=yc.points=yc.positions;yc.renderedPoint=yc.renderedPosition;yc.relativePoint=yc.relativePosition;rpt=Xbe;F1=Xf={};Xf.renderedBoundingBox=function(e){var t=this.boundingBox(e),r=this.cy(),n=r.zoom(),i=r.pan(),a=t.x1*n+i.x,s=t.x2*n+i.x,l=t.y1*n+i.y,u=t.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Xf.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();return!t.styleEnabled()||!t.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,e||r.emitAndNotify("bounds")}}),this)};Xf.updateCompoundBounds=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",d={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},f=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(f.w===0||f.h===0)&&(f={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},f.x1=p.x-f.w/2,f.x2=p.x+f.w/2,f.y1=p.y-f.h/2,f.y2=p.y+f.h/2);function m(L,N,I){var _=0,A=0,M=N+I;return L>0&&M>0&&(_=N/M*L,A=I/M*L),{biasDiff:_,biasComplementDiff:A}}o(m,"computeBiasValues");function g(L,N,I,_){if(I.units==="%")switch(_){case"width":return L>0?I.pfValue*L:0;case"height":return N>0?I.pfValue*N:0;case"average":return L>0&&N>0?I.pfValue*(L+N)/2:0;case"min":return L>0&&N>0?L>N?I.pfValue*N:I.pfValue*L:0;case"max":return L>0&&N>0?L>N?I.pfValue*L:I.pfValue*N:0;default:return 0}else return I.units==="px"?I.pfValue:0}o(g,"computePaddingValues");var y=d.width.left.value;d.width.left.units==="px"&&d.width.val>0&&(y=y*100/d.width.val);var v=d.width.right.value;d.width.right.units==="px"&&d.width.val>0&&(v=v*100/d.width.val);var x=d.height.top.value;d.height.top.units==="px"&&d.height.val>0&&(x=x*100/d.height.val);var b=d.height.bottom.value;d.height.bottom.units==="px"&&d.height.val>0&&(b=b*100/d.height.val);var T=m(d.width.val-f.w,y,v),k=T.biasDiff,C=T.biasComplementDiff,w=m(d.height.val-f.h,x,b),S=w.biasDiff,R=w.biasComplementDiff;l.autoPadding=g(f.w,f.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(f.w,d.width.val),p.x=(-k+f.x1+f.x2+C)/2,l.autoHeight=Math.max(f.h,d.height.val),p.y=(-S+f.y1+f.y2+R)/2}o(r,"update");for(var n=0;nt.x2?i:t.x2,t.y1=nt.y2?a:t.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1)},"updateBounds"),Pf=o(function(t,r){return r==null?t:gc(t,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),wT=o(function(t,r,n){return mo(t,r,n)},"prefixedProperty"),I5=o(function(t,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var d=i.arrowBounds=i.arrowBounds||{},f=d[n]=d[n]||{};f.x1=u-s,f.y1=h-s,f.x2=u+s,f.y2=h+s,f.w=f.x2-f.x1,f.h=f.y2-f.y1,z5(f,1),gc(t,f.x1,f.y1,f.x2,f.y2)}}},"updateBoundsFromArrow"),F$=o(function(t,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),d=wT(s,"labelWidth",n),f=wT(s,"labelHeight",n),p=wT(s,"labelX",n),m=wT(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,T=r.pstyle("text-border-width").pfValue,k=T/2,C=r.pstyle("text-background-padding").pfValue,w=2,S=f,R=d,L=R/2,N=S/2,I,_,A,M;if(v)I=p-L,_=p+L,A=m-N,M=m+N;else{switch(u.value){case"left":I=p-R,_=p;break;case"center":I=p-L,_=p+L;break;case"right":I=p,_=p+R;break}switch(h.value){case"top":A=m-S,M=m;break;case"center":A=m-N,M=m+N;break;case"bottom":A=m,M=m+S;break}}var D=g-Math.max(b,k)-C-w,P=g+Math.max(b,k)+C+w,B=y-Math.max(b,k)-C-w,O=y+Math.max(b,k)+C+w;I+=D,_+=P,A+=B,M+=O;var $=n||"main",V=a.labelBounds,G=V[$]=V[$]||{};G.x1=I,G.y1=A,G.x2=_,G.y2=M,G.w=_-I,G.h=M-A,G.leftPad=D,G.rightPad=P,G.topPad=B,G.botPad=O;var z=v&&x.strValue==="autorotate",W=x.pfValue!=null&&x.pfValue!==0;if(z||W){var H=z?wT(a.rstyle,"labelAngle",n):x.pfValue,j=Math.cos(H),Q=Math.sin(H),U=(I+_)/2,oe=(A+M)/2;if(!v){switch(u.value){case"left":U=_;break;case"right":U=I;break}switch(h.value){case"top":oe=M;break;case"bottom":oe=A;break}}var te=o(function(Oe,ue){return Oe=Oe-U,ue=ue-oe,{x:Oe*j-ue*Q+U,y:Oe*Q+ue*j+oe}},"rotate"),le=te(I,A),ie=te(I,M),ae=te(_,A),Re=te(_,M);I=Math.min(le.x,ie.x,ae.x,Re.x),_=Math.max(le.x,ie.x,ae.x,Re.x),A=Math.min(le.y,ie.y,ae.y,Re.y),M=Math.max(le.y,ie.y,ae.y,Re.y)}var be=$+"Rot",Pe=V[be]=V[be]||{};Pe.x1=I,Pe.y1=A,Pe.x2=_,Pe.y2=M,Pe.w=_-I,Pe.h=M-A,gc(t,I,A,_,M),gc(a.labelBounds.all,I,A,_,M)}return t}},"updateBoundsFromLabel"),pxe=o(function(t,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value,a=r.pstyle("outline-offset").value,s=i+a;Zbe(t,r,n,s,"outside",s/2)}},"updateBoundsFromOutline"),Zbe=o(function(t,r,n,i,a,s){if(!(n===0||i<=0||a==="inside")){var l=r.cy(),u=l.renderer(),h=u.nodeShapes[u.getNodeShape(r)];if(h){var d=r.position(),f=d.x,p=d.y,m=r.width(),g=r.height();if(h.hasMiterBounds){a==="center"&&(i/=2);var y=h.miterBounds(f,p,m,g,i);Pf(t,y)}else s!=null&&s>0&&G5(t,[s,s,s,s])}}},"updateBoundsFromMiter"),npt=o(function(t,r){if(!r.cy().headless()){var n=r.pstyle("border-opacity").value,i=r.pstyle("border-width").pfValue,a=r.pstyle("border-position").value;Zbe(t,r,n,i,a)}},"updateBoundsFromMiterBorder"),ipt=o(function(t,r){var n=t._private.cy,i=n.styleEnabled(),a=n.headless(),s=Ns(),l=t._private,u=t.isNode(),h=t.isEdge(),d,f,p,m,g,y,v=l.rstyle,x=u&&i?t.pstyle("bounds-expansion").pfValue:[0],b=o(function(Ge){return Ge.pstyle("display").value!=="none"},"isDisplayed"),T=!i||b(t)&&(!h||b(t.source())&&b(t.target()));if(T){var k=0,C=0;i&&r.includeOverlays&&(k=t.pstyle("overlay-opacity").value,k!==0&&(C=t.pstyle("overlay-padding").value));var w=0,S=0;i&&r.includeUnderlays&&(w=t.pstyle("underlay-opacity").value,w!==0&&(S=t.pstyle("underlay-padding").value));var R=Math.max(C,S),L=0,N=0;if(i&&(L=t.pstyle("width").pfValue,N=L/2),u&&r.includeNodes){var I=t.position();g=I.x,y=I.y;var _=t.outerWidth(),A=_/2,M=t.outerHeight(),D=M/2;d=g-A,f=g+A,p=y-D,m=y+D,gc(s,d,p,f,m),i&&pxe(s,t),i&&r.includeOutlines&&!a&&pxe(s,t),i&&npt(s,t)}else if(h&&r.includeEdges)if(i&&!a){var P=t.pstyle("curve-style").strValue;if(d=Math.min(v.srcX,v.midX,v.tgtX),f=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),d-=N,f+=N,p-=N,m+=N,gc(s,d,p,f,m),P==="haystack"){var B=v.haystackPts;if(B&&B.length===2){if(d=B[0].x,p=B[0].y,f=B[1].x,m=B[1].y,d>f){var O=d;d=f,f=O}if(p>m){var $=p;p=m,m=$}gc(s,d-N,p-N,f+N,m+N)}}else if(P==="bezier"||P==="unbundled-bezier"||Of(P,"segments")||Of(P,"taxi")){var V;switch(P){case"bezier":case"unbundled-bezier":V=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":V=v.linePts;break}if(V!=null)for(var G=0;Gf){var U=d;d=f,f=U}if(p>m){var oe=p;p=m,m=oe}d-=N,f+=N,p-=N,m+=N,gc(s,d,p,f,m)}if(i&&r.includeEdges&&h&&(I5(s,t,"mid-source"),I5(s,t,"mid-target"),I5(s,t,"source"),I5(s,t,"target")),i){var te=t.pstyle("ghost").value==="yes";if(te){var le=t.pstyle("ghost-offset-x").pfValue,ie=t.pstyle("ghost-offset-y").pfValue;gc(s,s.x1+le,s.y1+ie,s.x2+le,s.y2+ie)}}var ae=l.bodyBounds=l.bodyBounds||{};J1e(ae,s),G5(ae,x),z5(ae,1),i&&(d=s.x1,f=s.x2,p=s.y1,m=s.y2,gc(s,d-R,p-R,f+R,m+R));var Re=l.overlayBounds=l.overlayBounds||{};J1e(Re,s),G5(Re,x),z5(Re,1);var be=l.labelBounds=l.labelBounds||{};be.all!=null?Fht(be.all):be.all=Ns(),i&&r.includeLabels&&(r.includeMainLabels&&F$(s,t,null),h&&(r.includeSourceLabels&&F$(s,t,"source"),r.includeTargetLabels&&F$(s,t,"target")))}return s.x1=kl(s.x1),s.y1=kl(s.y1),s.x2=kl(s.x2),s.y2=kl(s.y2),s.w=kl(s.x2-s.x1),s.h=kl(s.y2-s.y1),s.w>0&&s.h>0&&T&&(G5(s,x),z5(s,1)),s},"boundingBoxImpl"),Qbe=o(function(t){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Uf.removeAllListeners=function(){return this.removeListener("*")};Uf.emit=Uf.trigger=function(e,t,r){var n=this.listeners,i=n.length;return this.emitting++,Hn(t)||(t=[t]),bpt(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(){var d=n[u];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===vpt)&&a.eventMatches(a.context,d,s)){var f=[s];t!=null&&uht(f,t),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(g){return g!==d}));var p=a.callbackContext(a.context,d,s),m=d.callback.apply(p,f);a.afterEmit(a.context,d,s),m===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[t]=u,a.set(h,{ele:u,index:t})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(t){t=t[0];var r=this._private,n=t._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(t){var r=this._private.cy;if(!t)return this;if(t&&fr(t)){var n=t;t=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];t(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(t,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(t,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":ca(Symbol))!=t&&ca(Symbol.iterator)!=t;r&&(nA[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return abe({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[t];return a??(r?i.style().getDefaultProperty(t):null)}},"parsedStyle"),numericStyle:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(t);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(t).units},"numericStyleUnits"),renderedStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,t)},"renderedStyle"),style:o(function(t,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(cn(t)){var s=t;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(fr(t))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,t):void 0}else a.applyBypass(this,t,r,i),this.emitAndNotify("style");else if(t===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(t===void 0)for(var s=0;s0&&t.push(d[0]),t.push(l[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:o(function(t){return this.neighborhood().add(this).filter(t)},"closedNeighborhood"),openNeighborhood:o(function(t){return this.neighborhood(t)},"openNeighborhood")});us.neighbourhood=us.neighborhood;us.closedNeighbourhood=us.closedNeighborhood;us.openNeighbourhood=us.openNeighborhood;br(us,{source:Sl(o(function(t){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&t?n.filter(t):n},"sourceImpl"),"source"),target:Sl(o(function(t){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&t?n.filter(t):n},"targetImpl"),"target"),sources:Sxe({attr:"source"}),targets:Sxe({attr:"target"})});o(Sxe,"defineSourceFunction");br(us,{edgesWith:Sl(Exe(),"edgesWith"),edgesTo:Sl(Exe({thisIsSrc:!0}),"edgesTo")});o(Exe,"defineEdgesWithFunction");br(us,{connectedEdges:Sl(function(e){for(var t=[],r=this,n=0;n0);return s},"components"),component:o(function(){var t=this[0];return t.cy().mutableElements().components(t)[0]},"component")});us.componentsOf=us.components;Ga=o(function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(t===void 0){pi("A collection must have a reference to the core");return}var a=new Nh,s=!1;if(!r)r=[];else if(r.length>0&&cn(r[0])&&!UT(r[0])){s=!0;for(var l=[],u=new W1,h=0,d=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var $=l.length===r.length?r:new Ga(n,l),V=0;V<$.length;V++){var G=$[V];G.isNode()||(G.parallelEdges().clearTraversalCache(),G.source().clearTraversalCache(),G.target().clearTraversalCache())}var z;i.hasCompoundNodes?z=n.collection().merge($).merge($.connectedNodes()).merge($.parent()):z=$,z.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(e),e?$.emitAndNotify("add"):t&&$.emit("add")}return r};Zn.removed=function(){var e=this[0];return e&&e._private.removed};Zn.inside=function(){var e=this[0];return e&&!e._private.removed};Zn.remove=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(M){for(var D=M._private.edges,P=0;P0&&(e?I.emitAndNotify("remove"):t&&I.emit("remove"));for(var _=0;_d&&Math.abs(g.v)>d;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")})(),Kn=o(function(t,r,n,i){var a=Lpt(t,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),q5={linear:o(function(t,r,n){return t+(r-t)*n},"linear"),ease:Kn(.25,.1,.25,1),"ease-in":Kn(.42,0,1,1),"ease-out":Kn(0,0,.58,1),"ease-in-out":Kn(.42,0,.58,1),"ease-in-sine":Kn(.47,0,.745,.715),"ease-out-sine":Kn(.39,.575,.565,1),"ease-in-out-sine":Kn(.445,.05,.55,.95),"ease-in-quad":Kn(.55,.085,.68,.53),"ease-out-quad":Kn(.25,.46,.45,.94),"ease-in-out-quad":Kn(.455,.03,.515,.955),"ease-in-cubic":Kn(.55,.055,.675,.19),"ease-out-cubic":Kn(.215,.61,.355,1),"ease-in-out-cubic":Kn(.645,.045,.355,1),"ease-in-quart":Kn(.895,.03,.685,.22),"ease-out-quart":Kn(.165,.84,.44,1),"ease-in-out-quart":Kn(.77,0,.175,1),"ease-in-quint":Kn(.755,.05,.855,.06),"ease-out-quint":Kn(.23,1,.32,1),"ease-in-out-quint":Kn(.86,0,.07,1),"ease-in-expo":Kn(.95,.05,.795,.035),"ease-out-expo":Kn(.19,1,.22,1),"ease-in-out-expo":Kn(1,0,0,1),"ease-in-circ":Kn(.6,.04,.98,.335),"ease-out-circ":Kn(.075,.82,.165,1),"ease-in-out-circ":Kn(.785,.135,.15,.86),spring:o(function(t,r,n){if(n===0)return q5.linear;var i=Dpt(t,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":Kn};o(Rxe,"getEasedValue");o(_xe,"getValue");o(A1,"ease");o(Ipt,"step$1");o(ST,"valid");o(Mpt,"startAnimation");o(Lxe,"stepAll");Npt={animate:Dn.animate(),animation:Dn.animation(),animated:Dn.animated(),clearQueue:Dn.clearQueue(),delay:Dn.delay(),delayAnimation:Dn.delayAnimation(),stop:Dn.stop(),addToAnimationPool:o(function(t){var r=this;r.styleEnabled()&&r._private.aniEles.merge(t)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var t=this;if(t._private.animationsRunning=!0,!t.styleEnabled())return;function r(){t._private.animationsRunning&&Q5(o(function(a){Lxe(a,t),r()},"animationStep"))}o(r,"headlessStep");var n=t.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){Lxe(s,t)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},Ppt={qualifierCompare:o(function(t,r){return t==null||r==null?t==null&&r==null:t.sameText(r)},"qualifierCompare"),eventMatches:o(function(t,r,n){var i=r.qualifier;return i!=null?t!==n.target&&UT(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(t,r){r.cy=t,r.target=t},"addEventFields"),callbackContext:o(function(t,r,n){return r.qualifier!=null?n.target:t},"callbackContext")},P5=o(function(t){return fr(t)?new qf(t):t},"argSelector"),c2e={createEmitter:o(function(){var t=this._private;return t.emitter||(t.emitter=new bA(Ppt,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(t,r,n){return this.emitter().on(t,P5(r),n),this},"on"),removeListener:o(function(t,r,n){return this.emitter().removeListener(t,P5(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(t,r,n){return this.emitter().one(t,P5(r),n),this},"one"),once:o(function(t,r,n){return this.emitter().one(t,P5(r),n),this},"once"),emit:o(function(t,r){return this.emitter().emit(t,r),this},"emit"),emitAndNotify:o(function(t,r){return this.emit(t),this.notify(t,r),this},"emitAndNotify")};Dn.eventAliasesOn(c2e);aF={png:o(function(t){var r=this._private.renderer;return t=t||{},r.png(t)},"png"),jpg:o(function(t){var r=this._private.renderer;return t=t||{},t.bg=t.bg||"#fff",r.jpg(t)},"jpg")};aF.jpeg=aF.jpg;H5={layout:o(function(t){var r=this;if(t==null){pi("Layout options must be specified to make a layout");return}if(t.name==null){pi("A `name` must be specified to make a layout");return}var n=t.name,i=r.extension("layout",n);if(i==null){pi("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;fr(t.eles)?a=r.$(t.eles):a=t.eles!=null?t.eles:r.$();var s=new i(br({},t,{cy:r,eles:a}));return s},"layout")};H5.createLayout=H5.makeLayout=H5.layout;Opt={notify:o(function(t,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[t]=n.batchNotifications[t]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(t,r)}},"notify"),notifications:o(function(t){var r=this._private;return t===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!t,this)},"notifications"),noNotifications:o(function(t){this.notifications(!1),t(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var t=this._private;return t.batchCount==null&&(t.batchCount=0),t.batchCount===0&&(t.batchStyleEles=this.collection(),t.batchNotifications={}),t.batchCount++,this},"startBatch"),endBatch:o(function(){var t=this._private;if(t.batchCount===0)return this;if(t.batchCount--,t.batchCount===0){t.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(t.batchNotifications).forEach(function(n){var i=t.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(t){return this.startBatch(),t(),this.endBatch(),this},"batch"),batchData:o(function(t){var r=this;return this.batch(function(){for(var n=Object.keys(t),i=0;i0;)r.removeChild(r.childNodes[0]);t._private.renderer=null,t.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(t){return this.on("render",t)},"onRender"),offRender:o(function(t){return this.off("render",t)},"offRender")};sF.invalidateDimensions=sF.resize;U5={collection:o(function(t,r){return fr(t)?this.$(t):Ho(t)?t.collection():Hn(t)?(r||(r={}),new Ga(this,t,r.unique,r.removed)):new Ga(this)},"collection"),nodes:o(function(t){var r=this.$(function(n){return n.isNode()});return t?r.filter(t):r},"nodes"),edges:o(function(t){var r=this.$(function(n){return n.isEdge()});return t?r.filter(t):r},"edges"),$:o(function(t){var r=this._private.elements;return t?r.filter(t):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};U5.elements=U5.filter=U5.$;_a={},IT="t",$pt="f";_a.apply=function(e){for(var t=this,r=t._private,n=r.cy,i=n.collection(),a=0;a0;if(p||f&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(k=1),l.color){var w=n.valueMin[0],S=n.valueMax[0],R=n.valueMin[1],L=n.valueMax[1],N=n.valueMin[2],I=n.valueMax[2],_=n.valueMin[3]==null?1:n.valueMin[3],A=n.valueMax[3]==null?1:n.valueMax[3],M=[Math.round(w+(S-w)*k),Math.round(R+(L-R)*k),Math.round(N+(I-N)*k),Math.round(_+(A-_)*k)];a={bypass:n.bypass,name:n.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else if(l.number){var D=n.valueMin+(n.valueMax-n.valueMin)*k;a=this.parse(n.name,D,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var P=n.field.split("."),B=f.data,O=0;O0&&a>0){for(var l={},u=!1,h=0;h0?e.delayAnimation(s).play().promise().then(T):T()}).then(function(){return e.animation({style:l,duration:a,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(e,i),e.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(e,i),e.emitAndNotify("style"),n.transitioning=!1)};_a.checkTrigger=function(e,t,r,n,i,a){var s=this.properties[t],l=i(s);e.removed()||l!=null&&l(r,n,e)&&a(s)};_a.checkZOrderTrigger=function(e,t,r,n){var i=this;this.checkTrigger(e,t,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",e)})};_a.checkBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBounds},function(i){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})};_a.checkConnectedEdgesBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBoundsOfConnectedEdges},function(i){e.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};_a.checkParallelEdgesBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBoundsOfParallelEdges},function(i){e.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};_a.checkTriggers=function(e,t,r,n){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,r,n),this.checkBoundsTrigger(e,t,r,n),this.checkConnectedEdgesBoundsTrigger(e,t,r,n),this.checkParallelEdgesBoundsTrigger(e,t,r,n)};JT={};JT.applyBypass=function(e,t,r,n){var i=this,a=[],s=!0;if(t==="*"||t==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var d=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!d){In("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=d[0];var f=d[1];if(f!=="core"){var p=new qf(f);if(p.invalid){In("Skipping parsing of block: Invalid selector found in string stylesheet: "+f),l();continue}}var m=d[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){In("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],T=x[2],k=t.properties[b];if(!k){In("Skipping property: Invalid property name in: "+s),u();continue}var C=r.parse(b,T);if(!C){In("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:T}),u()}if(g){l();break}r.selector(f);for(var w=0;w=7&&t[0]==="d"&&(d=new RegExp(l.data.regex).exec(t))){if(r)return!1;var p=l.data;return{name:e,value:d,strValue:""+t,mapped:p,field:d[1],bypass:r}}else if(t.length>=10&&t[0]==="m"&&(f=new RegExp(l.mapData.regex).exec(t))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(e,f[4]);if(!g||g.mapped)return!1;var y=this.parse(e,f[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return In("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+g.strValue+"`"),this.parse(e,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:e,value:f,strValue:""+t,mapped:m,field:f[1],fieldMin:parseFloat(f[2]),fieldMax:parseFloat(f[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var T;if(u?T=t.split(/\s+/):Hn(t)?T=t:T=[t],h.evenMultiple&&T.length%2!==0)return null;for(var k=[],C=[],w=[],S="",R=!1,L=0;L0?" ":"")+N.strValue}return h.validate&&!h.validate(k,C)?null:h.singleEnum&&R?k.length===1&&fr(k[0])?{name:e,value:k[0],strValue:k[0],bypass:r}:null:{name:e,value:k,pfValue:w,strValue:S,bypass:r,units:C}}var I=o(function(){for(var te=0;teh.max||h.strictMax&&t===h.max))return null;var P={name:e,value:t,strValue:""+t+(_||""),units:_,bypass:r};return h.unitless||_!=="px"&&_!=="em"?P.pfValue=t:P.pfValue=_==="px"||!_?t:this.getEmSizeInPixels()*t,(_==="ms"||_==="s")&&(P.pfValue=_==="ms"?t:1e3*t),(_==="deg"||_==="rad")&&(P.pfValue=_==="rad"?t:Pht(t)),_==="%"&&(P.pfValue=t/100),P}else if(h.propList){var B=[],O=""+t;if(O!=="none"){for(var $=O.split(/\s*,\s*|\s+/),V=0;V<$.length;V++){var G=$[V].trim();i.properties[G]?B.push(G):In("`"+G+"` is not a valid property name")}if(B.length===0)return null}return{name:e,value:B,strValue:B.length===0?"none":B.join(" "),bypass:r}}else if(h.color){var z=dbe(t);return z?{name:e,value:z,pfValue:z,strValue:"rgb("+z[0]+","+z[1]+","+z[2]+")",bypass:r}:null}else if(h.regex||h.regexes){if(h.enums){var W=I();if(W)return W}for(var H=h.regexes?h.regexes:[h.regex],j=0;j0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(t){return t===void 0?this._private.minZoom:this.zoomRange({min:t})},"minZoom"),maxZoom:o(function(t){return t===void 0?this._private.maxZoom:this.zoomRange({max:t})},"maxZoom"),getZoomedViewport:o(function(t){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),Gt(t)?s=t:cn(t)&&(s=t.level,t.position!=null?a=fA(t.position,i,n):t.renderedPosition!=null&&(a=t.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!t.cancelOnFailedZoom)&&r.panningEnabled){var h=t.pan;Gt(h.x)&&(r.pan.x=h.x,l=!1),Gt(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(t){var r=this.getCenterPan(t);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(t,r){if(this._private.panningEnabled){if(fr(t)){var n=t;t=this.mutableElements().filter(n)}else Ho(t)||(t=this.mutableElements());if(t.length!==0){var i=t.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var t=this._private,r=t.container,n=this;return t.sizeCache=t.sizeCache||(r?(function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}})():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var t=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-t.x)/r,x2:(n.x2-t.x)/r,y1:(n.y1-t.y)/r,y2:(n.y2-t.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var t=this.width(),r=this.height();return{x1:0,y1:0,x2:t,y2:r,w:t,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(t){if(t)this._private.multiClickDebounceTime=t;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};ag.centre=ag.center;ag.autolockNodes=ag.autolock;ag.autoungrabifyNodes=ag.autoungrabify;VT={data:Dn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Dn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Dn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Dn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};VT.attr=VT.data;VT.removeAttr=VT.removeData;WT=o(function(t){var r=this;t=br({},t);var n=t.container;n&&!Z5(n)&&Z5(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=oa!==void 0&&n!==void 0&&!t.headless,l=t;l.layout=br({name:s?"grid":"null"},l.layout),l.renderer=br({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new Ga(this),listeners:[],aniEles:new Ga(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:Gt(l.zoom)?l.zoom:1,pan:{x:cn(l.pan)&&Gt(l.pan.x)?l.pan.x:0,y:cn(l.pan)&&Gt(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var d=o(function(g,y){var v=g.some(_ut);if(v)return q1.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var f=br({},l,l.renderer);r.initRenderer(f);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(cn(g)||Hn(g))&&r.add(g),r.one("layoutready",function(T){r.notifications(!0),r.emit(T),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=br({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");d([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,Ci(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!e.boundingBox,u=Ns(l?e.boundingBox:structuredClone(t.extent())),h;if(Ho(e.roots))h=e.roots;else if(Hn(e.roots)){for(var d=[],f=0;f0;){var M=A(),D=L(M,I);if(D)M.outgoers().filter(function(ye){return ye.isNode()&&r.has(ye)}).forEach(_);else if(D===null){In("Detected double maximal shift for node `"+M.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var P=0;if(e.avoidOverlap)for(var B=0;B0&&x[0].length<=3?se/2:0),Te=2*Math.PI/x[re].length*J;return re===0&&x[0].length===1&&(ge=1),{x:ae.x+ge*Math.cos(Te),y:ae.y+ge*Math.sin(Te)}}else{var we=x[re].length,Me=Math.max(we===1?0:l?(u.w-e.padding*2-Re.w)/((e.grid?Pe:we)-1):(u.w-e.padding*2-Re.w)/((e.grid?Pe:we)+1),P),ve={x:ae.x+(J+1-(we+1)/2)*Me,y:ae.y+(re+1-(j+1)/2)*be};return ve}},"getPositionTopBottom"),Oe={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Oe).indexOf(e.direction)===-1&&pi("Invalid direction '".concat(e.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Oe).join(", ")));var ue=o(function(ke){return iht(Ge(ke),u,Oe[e.direction])},"getPosition");return r.nodes().layoutPositions(this,e,ue),this};Wpt={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(h2e,"CircleLayout");h2e.prototype.run=function(){var e=this.options,t=e,r=e.cy,n=t.eles,i=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,a=n.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));for(var s=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=t.sweep===void 0?2*Math.PI-2*Math.PI/a.length:t.sweep,h=u/Math.max(1,a.length-1),d,f=0,p=0;p1&&t.avoidOverlap){f*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),T=Math.sqrt(f*f/(x*x+b*b));d=Math.max(T,d)}var k=o(function(w,S){var R=t.startAngle+S*h*(i?1:-1),L=d*Math.cos(R),N=d*Math.sin(R),I={x:l.x+L,y:l.y+N};return I},"getPos");return n.nodes().layoutPositions(this,t,k),this};qpt={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(t){return t.degree()},"concentric"),levelWidth:o(function(t){return t.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(d2e,"ConcentricLayout");d2e.prototype.run=function(){for(var e=this.options,t=e,r=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,n=e.cy,i=t.eles,a=i.nodes().not(":parent"),s=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,d=0;d0){var C=Math.abs(b[0].value-k.value);C>=v&&(b=[],x.push(b))}b.push(k)}var w=h+t.minNodeSpacing;if(!t.avoidOverlap){var S=x.length>0&&x[0].length>1,R=Math.min(s.w,s.h)/2-w,L=R/(x.length+S?1:0);w=Math.min(w,L)}for(var N=0,I=0;I1&&t.avoidOverlap){var D=Math.cos(M)-Math.cos(0),P=Math.sin(M)-Math.sin(0),B=Math.sqrt(w*w/(D*D+P*P));N=Math.max(B,N)}_.r=N,N+=w}if(t.equidistant){for(var O=0,$=0,V=0;V=e.numIter||(Zpt(n,e),n.temperature=n.temperature*e.coolingFactor,n.temperature=e.animationThreshold&&a(),Q5(d)}},"frame");d()}else{for(;h;)h=s(u),u++;Mxe(n,e),l()}return this};SA.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};SA.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};Upt=o(function(t,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=Ns(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),l={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},d=0;d0){l.graphSet.push(R);for(var d=0;di.count?0:i.graph},"findLCA"),f2e=o(function(t,r,n,i){var a=i.graphSet[n];if(-10)var f=i.nodeOverlap*d,p=Math.sqrt(l*l+u*u),m=f*l/p,g=f*u/p;else var y=aA(t,l,u),v=aA(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,T=x*x+b*b,p=Math.sqrt(T),f=(t.nodeRepulsion+r.nodeRepulsion)/T,m=f*x/p,g=f*b/p;t.isLocked||(t.offsetX-=m,t.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),emt=o(function(t,r,n,i){if(n>0)var a=t.maxX-r.minX;else var a=r.maxX-t.minX;if(i>0)var s=t.maxY-r.minY;else var s=r.maxY-t.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),aA=o(function(t,r,n){var i=t.positionX,a=t.positionY,s=t.height||1,l=t.width||1,u=n/r,h=s/l,d={};return r===0&&0n?(d.x=i,d.y=a+s/2,d):0r&&-1*h<=u&&u<=h?(d.x=i-l/2,d.y=a-l*n/2/r,d):0=h)?(d.x=i+s*r/2/n,d.y=a+s/2,d):(0>n&&(u<=-1*h||u>=h)&&(d.x=i-s*r/2/n,d.y=a-s/2),d)},"findClippingPoint"),tmt=o(function(t,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),nmt=o(function(t,r){var n=[],i=0,a=-1;for(n.push.apply(n,t.graphSet[0]),a+=t.graphSet[0].length;i<=a;){var s=n[i++],l=t.idToIndex[s],u=t.layoutNodes[l],h=u.children;if(0n)var a={x:n*t/i,y:n*r/i};else var a={x:t,y:r};return a},"limitForce"),m2e=o(function(t,r){var n=t.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(i.minX==null||t.minX-i.padLefti.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(i.minY==null||t.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),smt={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(t){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(g2e,"GridLayout");g2e.prototype.run=function(){var e=this.options,t=e,r=e.cy,n=t.eles,i=n.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));var a=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,t,function(W){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),d=o(function(H){if(H==null)return Math.min(u,h);var j=Math.min(u,h);j==u?u=H:h=H},"small"),f=o(function(H){if(H==null)return Math.max(u,h);var j=Math.max(u,h);j==u?u=H:h=H},"large"),p=t.rows,m=t.cols!=null?t.cols:t.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=d(),y=f();(g-1)*y>=s?d(g-1):(y-1)*g>=s&&f(y-1)}else for(;h*u=s?f(x+1):d(v+1)}var b=a.w/h,T=a.h/u;if(t.condense&&(b=0,T=0),t.avoidOverlap)for(var k=0;k=h&&(D=0,M++)},"moveToNextCell"),B={},O=0;O(D=Xht(e,t,P[B],P[B+1],P[B+2],P[B+3])))return v(S,D),!0}else if(L.edgeType==="bezier"||L.edgeType==="multibezier"||L.edgeType==="self"||L.edgeType==="compound"){for(var P=L.allpts,B=0;B+5(D=jht(e,t,P[B],P[B+1],P[B+2],P[B+3],P[B+4],P[B+5])))return v(S,D),!0}for(var O=O||R.source,$=$||R.target,V=i.getArrowWidth(N,I),G=[{name:"source",x:L.arrowStartX,y:L.arrowStartY,angle:L.srcArrowAngle},{name:"target",x:L.arrowEndX,y:L.arrowEndY,angle:L.tgtArrowAngle},{name:"mid-source",x:L.midX,y:L.midY,angle:L.midsrcArrowAngle},{name:"mid-target",x:L.midX,y:L.midY,angle:L.midtgtArrowAngle}],B=0;B0&&(x(O),x($))}o(b,"checkEdge");function T(S,R,L){return mo(S,R,L)}o(T,"preprop");function k(S,R){var L=S._private,N=p,I;R?I=R+"-":I="",S.boundingBox();var _=L.labelBounds[R||"main"],A=S.pstyle(I+"label").value,M=S.pstyle("text-events").strValue==="yes";if(!(!M||!A)){var D=T(L.rscratch,"labelX",R),P=T(L.rscratch,"labelY",R),B=T(L.rscratch,"labelAngle",R),O=S.pstyle(I+"text-margin-x").pfValue,$=S.pstyle(I+"text-margin-y").pfValue,V=_.x1-N-O,G=_.x2+N-O,z=_.y1-N-$,W=_.y2+N-$;if(B){var H=Math.cos(B),j=Math.sin(B),Q=o(function(Re,be){return Re=Re-D,be=be-P,{x:Re*H-be*j+D,y:Re*j+be*H+P}},"rotate"),U=Q(V,z),oe=Q(V,W),te=Q(G,z),le=Q(G,W),ie=[U.x+O,U.y+$,te.x+O,te.y+$,le.x+O,le.y+$,oe.x+O,oe.y+$];if(go(e,t,ie))return v(S),!0}else if(Bf(_,e,t))return v(S),!0}}o(k,"checkLabel");for(var C=s.length-1;C>=0;C--){var w=s[C];w.isNode()?x(w)||k(w):b(w)||k(w)||k(w,"source")||k(w,"target")}return l};og.getAllInBox=function(e,t,r,n){var i=this.getCachedZSortedEles().interactive,a=this.cy.zoom(),s=2/a,l=[],u=Math.min(e,r),h=Math.max(e,r),d=Math.min(t,n),f=Math.max(t,n);e=u,r=h,t=d,n=f;var p=Ns({x1:e,y1:t,x2:r,y2:n}),m=[{x:p.x1,y:p.y1},{x:p.x2,y:p.y1},{x:p.x2,y:p.y2},{x:p.x1,y:p.y2}],g=[[m[0],m[1]],[m[1],m[2]],[m[2],m[3]],[m[3],m[0]]];function y(Re,be,Pe){return mo(Re,be,Pe)}o(y,"preprop");function v(Re,be){var Pe=Re._private,Ge=s,Oe="";Re.boundingBox();var ue=Pe.labelBounds.main;if(!ue)return null;var ye=y(Pe.rscratch,"labelX",be),ke=y(Pe.rscratch,"labelY",be),ce=y(Pe.rscratch,"labelAngle",be),re=Re.pstyle(Oe+"text-margin-x").pfValue,J=Re.pstyle(Oe+"text-margin-y").pfValue,se=ue.x1-Ge-re,ge=ue.x2+Ge-re,Te=ue.y1-Ge-J,we=ue.y2+Ge-J;if(ce){var Me=Math.cos(ce),ve=Math.sin(ce),ne=o(function(he,X){return he=he-ye,X=X-ke,{x:he*Me-X*ve+ye,y:he*ve+X*Me+ke}},"rotate");return[ne(se,Te),ne(ge,Te),ne(ge,we),ne(se,we)]}else return[{x:se,y:Te},{x:ge,y:Te},{x:ge,y:we},{x:se,y:we}]}o(v,"getRotatedLabelBox");function x(Re,be,Pe,Ge){function Oe(ue,ye,ke){return(ke.y-ue.y)*(ye.x-ue.x)>(ye.y-ue.y)*(ke.x-ue.x)}return o(Oe,"ccw"),Oe(Re,Pe,Ge)!==Oe(be,Pe,Ge)&&Oe(Re,be,Pe)!==Oe(Re,be,Ge)}o(x,"doLinesIntersect");for(var b=0;b0?-(Math.PI-t.ang):Math.PI+t.ang},"invertVec"),dmt=o(function(t,r,n,i,a){if(t!==$xe?Fxe(r,t,bu):hmt(wl,bu),Fxe(r,n,wl),Oxe=bu.nx*wl.ny-bu.ny*wl.nx,Bxe=bu.nx*wl.nx-bu.ny*-wl.ny,Ih=Math.asin(Math.max(-1,Math.min(1,Oxe))),Math.abs(Ih)<1e-6){oF=r.x,lF=r.y,Qm=_1=0;return}eg=1,Y5=!1,Bxe<0?Ih<0?Ih=Math.PI+Ih:(Ih=Math.PI-Ih,eg=-1,Y5=!0):Ih>0&&(eg=-1,Y5=!0),r.radius!==void 0?_1=r.radius:_1=i,jm=Ih/2,O5=Math.min(bu.len/2,wl.len/2),a?(vu=Math.abs(Math.cos(jm)*_1/Math.sin(jm)),vu>O5?(vu=O5,Qm=Math.abs(vu*Math.sin(jm)/Math.cos(jm))):Qm=_1):(vu=Math.min(O5,_1),Qm=Math.abs(vu*Math.sin(jm)/Math.cos(jm))),cF=r.x+wl.nx*vu,uF=r.y+wl.ny*vu,oF=cF-wl.ny*Qm*eg,lF=uF+wl.nx*Qm*eg,b2e=r.x+bu.nx*vu,T2e=r.y+bu.ny*vu,$xe=r},"calcCornerArc");o(C2e,"drawPreparedRoundCorner");o(BF,"getRoundCorner");qT=.01,fmt=Math.sqrt(2*qT),ds={};ds.findMidptPtsEtc=function(e,t){var r=t.posPts,n=t.intersectionPts,i=t.vectorNormInverse,a,s=e.pstyle("source-endpoint"),l=e.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(C,w,S,R){var L=R-w,N=S-C,I=Math.sqrt(N*N+L*L);return{x:-L/I,y:N/I}},"recalcVectorNormInverse"),d=e.pstyle("edge-distances").value;switch(d){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var f=this.manualEndptToPx(e.source()[0],s),p=Ki(f,2),m=p[0],g=p[1],y=this.manualEndptToPx(e.target()[0],l),v=Ki(y,2),x=v[0],b=v[1],T={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=T}else In("Edge ".concat(e.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};ds.findHaystackPoints=function(e){for(var t=0;t0?Math.max(X-fe,0):Math.min(X+fe,0)},"subDWH"),A=_(N,R),M=_(I,L),D=!1;b===h?x=Math.abs(A)>Math.abs(M)?i:n:b===u||b===l?(x=n,D=!0):(b===a||b===s)&&(x=i,D=!0);var P=x===n,B=P?M:A,O=P?I:N,$=kF(O),V=!1;!(D&&(k||w))&&(b===l&&O<0||b===u&&O>0||b===a&&O>0||b===s&&O<0)&&($*=-1,B=$*Math.abs(B),V=!0);var G;if(k){var z=C<0?1+C:C;G=z*B}else{var W=C<0?B:0;G=W+C*$}var H=o(function(X){return Math.abs(X)=Math.abs(B)},"getIsTooClose"),j=H(G),Q=H(Math.abs(B)-Math.abs(G)),U=j||Q;if(U&&!V)if(P){var oe=Math.abs(O)<=p/2,te=Math.abs(N)<=m/2;if(oe){var le=(d.x1+d.x2)/2,ie=d.y1,ae=d.y2;r.segpts=[le,ie,le,ae]}else if(te){var Re=(d.y1+d.y2)/2,be=d.x1,Pe=d.x2;r.segpts=[be,Re,Pe,Re]}else r.segpts=[d.x1,d.y2]}else{var Ge=Math.abs(O)<=f/2,Oe=Math.abs(I)<=g/2;if(Ge){var ue=(d.y1+d.y2)/2,ye=d.x1,ke=d.x2;r.segpts=[ye,ue,ke,ue]}else if(Oe){var ce=(d.x1+d.x2)/2,re=d.y1,J=d.y2;r.segpts=[ce,re,ce,J]}else r.segpts=[d.x2,d.y1]}else if(P){var se=d.y1+G+(v?p/2*$:0),ge=d.x1,Te=d.x2;r.segpts=[ge,se,Te,se]}else{var we=d.x1+G+(v?f/2*$:0),Me=d.y1,ve=d.y2;r.segpts=[we,Me,we,ve]}if(r.isRound){var ne=e.pstyle("taxi-radius").value,q=e.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(ne),r.isArcRadius=new Array(r.segpts.length/2).fill(q)}};ds.tryToCorrectInvalidPoints=function(e,t){var r=e._private.rscratch;if(r.edgeType==="bezier"){var n=t.srcPos,i=t.tgtPos,a=t.srcW,s=t.srcH,l=t.tgtW,u=t.tgtH,h=t.srcShape,d=t.tgtShape,f=t.srcCornerRadius,p=t.tgtCornerRadius,m=t.srcRs,g=t.tgtRs,y=!Gt(r.startX)||!Gt(r.startY),v=!Gt(r.arrowStartX)||!Gt(r.arrowStartY),x=!Gt(r.endX)||!Gt(r.endY),b=!Gt(r.arrowEndX)||!Gt(r.arrowEndY),T=3,k=this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth,C=T*k,w=ng({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),S=wO.poolIndex()){var $=B;B=O,O=$}var V=A.srcPos=B.position(),G=A.tgtPos=O.position(),z=A.srcW=B.outerWidth(),W=A.srcH=B.outerHeight(),H=A.tgtW=O.outerWidth(),j=A.tgtH=O.outerHeight(),Q=A.srcShape=r.nodeShapes[t.getNodeShape(B)],U=A.tgtShape=r.nodeShapes[t.getNodeShape(O)],oe=A.srcCornerRadius=B.pstyle("corner-radius").value==="auto"?"auto":B.pstyle("corner-radius").pfValue,te=A.tgtCornerRadius=O.pstyle("corner-radius").value==="auto"?"auto":O.pstyle("corner-radius").pfValue,le=A.tgtRs=O._private.rscratch,ie=A.srcRs=B._private.rscratch;A.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var ae=0;ae=fmt||(Te=Math.sqrt(Math.max(ge*ge,qT)+Math.max(se*se,qT)));var we=A.vector={x:ge,y:se},Me=A.vectorNorm={x:we.x/Te,y:we.y/Te},ve={x:-Me.y,y:Me.x};A.nodesOverlap=!Gt(Te)||U.checkPoint(ue[0],ue[1],0,H,j,G.x,G.y,te,le)||Q.checkPoint(ke[0],ke[1],0,z,W,V.x,V.y,oe,ie),A.vectorNormInverse=ve,M={nodesOverlap:A.nodesOverlap,dirCounts:A.dirCounts,calculatedIntersection:!0,hasBezier:A.hasBezier,hasUnbundled:A.hasUnbundled,eles:A.eles,srcPos:G,srcRs:le,tgtPos:V,tgtRs:ie,srcW:H,srcH:j,tgtW:z,tgtH:W,srcIntn:ce,tgtIntn:ye,srcShape:U,tgtShape:Q,posPts:{x1:J.x2,y1:J.y2,x2:J.x1,y2:J.y1},intersectionPts:{x1:re.x2,y1:re.y2,x2:re.x1,y2:re.y1},vector:{x:-we.x,y:-we.y},vectorNorm:{x:-Me.x,y:-Me.y},vectorNormInverse:{x:-ve.x,y:-ve.y}}}var ne=Oe?M:A;be.nodesOverlap=ne.nodesOverlap,be.srcIntn=ne.srcIntn,be.tgtIntn=ne.tgtIntn,be.isRound=Pe.startsWith("round"),i&&(B.isParent()||B.isChild()||O.isParent()||O.isChild())&&(B.parents().anySame(O)||O.parents().anySame(B)||B.same(O)&&B.isParent())?t.findCompoundLoopPoints(Re,ne,ae,Ge):B===O?t.findLoopPoints(Re,ne,ae,Ge):Pe.endsWith("segments")?t.findSegmentsPoints(Re,ne):Pe.endsWith("taxi")?t.findTaxiPoints(Re,ne):Pe==="straight"||!Ge&&A.eles.length%2===1&&ae===Math.floor(A.eles.length/2)?t.findStraightEdgePoints(Re):t.findBezierPoints(Re,ne,ae,Ge,Oe),t.findEndpoints(Re),t.tryToCorrectInvalidPoints(Re,ne),t.checkForInvalidEdgeWarning(Re),t.storeAllpts(Re),t.storeEdgeProjections(Re),t.calculateArrowAngles(Re),t.recalculateEdgeLabelProjections(Re),t.calculateLabelAngles(Re)}},"_loop"),S=0;S0){var ue=h,ye=Zm(ue,M1(s)),ke=Zm(ue,M1(Oe)),ce=ye;if(ke2){var re=Zm(ue,{x:Oe[2],y:Oe[3]});re0){var K=d,qe=Zm(K,M1(s)),_e=Zm(K,M1(fe)),Be=qe;if(_e2){var Ne=Zm(K,{x:fe[2],y:fe[3]});Ne=g||S){v={cp:k,segment:w};break}}if(v)break}var R=v.cp,L=v.segment,N=(g-x)/L.length,I=L.t1-L.t0,_=m?L.t0+I*N:L.t1-I*N;_=$T(0,_,1),t=O1(R.p0,R.p1,R.p2,_),p=mmt(R.p0,R.p1,R.p2,_);break}case"straight":case"segments":case"haystack":{for(var A=0,M,D,P,B,O=n.allpts.length,$=0;$+3=g));$+=2);var V=g-D,G=V/M;G=$T(0,G,1),t=Bht(P,B,G),p=S2e(P,B);break}}s("labelX",f,t.x),s("labelY",f,t.y),s("labelAutoAngle",f,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(e)}};wu.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))};wu.applyPrefixedLabelDimensions=function(e,t){var r=e._private,n=this.getLabelText(e,t),i=rg(n,e._private.labelDimsKey);if(mo(r.rscratch,"prefixedLabelDimsKey",t)!==i){Mh(r.rscratch,"prefixedLabelDimsKey",t,i);var a=this.calculateLabelDimensions(e,n),s=e.pstyle("line-height").pfValue,l=e.pstyle("text-wrap").strValue,u=mo(r.rscratch,"labelWrapCachedLines",t)||[],h=l!=="wrap"?1:Math.max(u.length,1),d=a.height/h,f=d*s,p=a.width,m=a.height+(h-1)*(s-1)*d;Mh(r.rstyle,"labelWidth",t,p),Mh(r.rscratch,"labelWidth",t,p),Mh(r.rstyle,"labelHeight",t,m),Mh(r.rscratch,"labelHeight",t,m),Mh(r.rscratch,"labelLineHeight",t,f)}};wu.getLabelText=function(e,t){var r=e._private,n=t?t+"-":"",i=e.pstyle(n+"label").strValue,a=e.pstyle("text-transform").value,s=o(function(W,H){return H?(Mh(r.rscratch,W,t,H),H):mo(r.rscratch,W,t)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=e.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",d=i.split(` +`),f=e.pstyle("text-max-width").pfValue,p=e.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vf){var C=x.matchAll(y),w="",S=0,R=yo(C),L;try{for(R.s();!(L=R.n()).done;){var N=L.value,I=N[0],_=x.substring(S,N.index);S=N.index+I.length;var A=w.length===0?_:w+_+I,M=this.calculateLabelDimensions(e,A),D=M.width;D<=f?w+=_+I:(w&&g.push(w),w=_+I)}}catch(z){R.e(z)}finally{R.f()}w.match(/^[\s\u200b]+$/)||g.push(w)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` +`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var P=e.pstyle("text-max-width").pfValue,B="",O="\u2026",$=!1;if(this.calculateLabelDimensions(e,i).widthP)break;B+=i[V],V===i.length-1&&($=!0)}return $||(B+=O),B}return i};wu.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,r=e.pstyle("text-halign").strValue;if(t==="auto")if(e.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return t};wu.calculateLabelDimensions=function(e,t){var r=this,n=r.cy.window(),i=n.document,a=0,s=e.pstyle("font-style").strValue,l=e.pstyle("font-size").pfValue,u=e.pstyle("font-family").strValue,h=e.pstyle("font-weight").strValue,d=this.labelCalcCanvas,f=this.labelCalcCanvasContext;if(!d){d=this.labelCalcCanvas=i.createElement("canvas"),f=this.labelCalcCanvasContext=d.getContext("2d");var p=d.style;p.position="absolute",p.left="-9999px",p.top="-9999px",p.zIndex="-1",p.visibility="hidden",p.pointerEvents="none"}f.font="".concat(s," ").concat(h," ").concat(l,"px ").concat(u);for(var m=0,g=0,y=t.split(` +`),v=0;v1&&arguments[1]!==void 0?arguments[1]:!0;if(t.merge(s),l)for(var u=0;u=e.desktopTapThreshold2}var At=a(q);mt&&(e.hoverData.tapholdCancelled=!0);var bt=o(function(){var qt=e.hoverData.dragDelta=e.hoverData.dragDelta||[];qt.length===0?(qt.push(Ke[0]),qt.push(Ke[1])):(qt[0]+=Ke[0],qt[1]+=Ke[1])},"updateDragDelta");X=!0,i($e,["mousemove","vmousemove","tapdrag"],q,{x:_e[0],y:_e[1]});var me=o(function(qt){return{originalEvent:q,type:qt,position:{x:_e[0],y:_e[1]}}},"makeEvent"),lt=o(function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||fe.emit(me("boxstart")),He[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()},"goIntoBoxMode");if(e.hoverData.which===3){if(mt){var gt=me("cxtdrag");Fe?Fe.emit(gt):fe.emit(gt),e.hoverData.cxtDragged=!0,(!e.hoverData.cxtOver||$e!==e.hoverData.cxtOver)&&(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(me("cxtdragout")),e.hoverData.cxtOver=$e,$e&&$e.emit(me("cxtdragover")))}}else if(e.hoverData.dragging){if(X=!0,fe.panningEnabled()&&fe.userPanningEnabled()){var Ze;if(e.hoverData.justStartedPan){var Ee=e.hoverData.mdownPos;Ze={x:(_e[0]-Ee[0])*K,y:(_e[1]-Ee[1])*K},e.hoverData.justStartedPan=!1}else Ze={x:Ke[0]*K,y:Ke[1]*K};fe.panBy(Ze),fe.emit(me("dragpan")),e.hoverData.dragged=!0}_e=e.projectIntoViewport(q.clientX,q.clientY)}else if(He[4]==1&&(Fe==null||Fe.pannable())){if(mt){if(!e.hoverData.dragging&&fe.boxSelectionEnabled()&&(At||!fe.panningEnabled()||!fe.userPanningEnabled()))lt();else if(!e.hoverData.selecting&&fe.panningEnabled()&&fe.userPanningEnabled()){var tt=s(Fe,e.hoverData.downs);tt&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,He[4]=0,e.data.bgActivePosistion=M1(Be),e.redrawHint("select",!0),e.redraw())}Fe&&Fe.pannable()&&Fe.active()&&Fe.unactivate()}}else{if(Fe&&Fe.pannable()&&Fe.active()&&Fe.unactivate(),(!Fe||!Fe.grabbed())&&$e!=Xe&&(Xe&&i(Xe,["mouseout","tapdragout"],q,{x:_e[0],y:_e[1]}),$e&&i($e,["mouseover","tapdragover"],q,{x:_e[0],y:_e[1]}),e.hoverData.last=$e),Fe)if(mt){if(fe.boxSelectionEnabled()&&At)Fe&&Fe.grabbed()&&(y(xe),Fe.emit(me("freeon")),xe.emit(me("free")),e.dragData.didDrag&&(Fe.emit(me("dragfreeon")),xe.emit(me("dragfree")))),lt();else if(Fe&&Fe.grabbed()&&e.nodeIsDraggable(Fe)){var at=!e.dragData.didDrag;at&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||m(xe,{inDragLayer:!0});var ot={x:0,y:0};if(Gt(Ke[0])&&Gt(Ke[1])&&(ot.x+=Ke[0],ot.y+=Ke[1],at)){var Wt=e.hoverData.dragDelta;Wt&&Gt(Wt[0])&&Gt(Wt[1])&&(ot.x+=Wt[0],ot.y+=Wt[1])}e.hoverData.draggingEles=!0,xe.silentShift(ot).emit(me("position")).emit(me("drag")),e.redrawHint("drag",!0),e.redraw()}}else bt();X=!0}if(He[2]=_e[0],He[3]=_e[1],X)return q.stopPropagation&&q.stopPropagation(),q.preventDefault&&q.preventDefault(),!1}},"mousemoveHandler"),!1);var N,I,_;e.registerBinding(t,"mouseup",o(function(q){if(!(e.hoverData.which===1&&q.which!==1&&e.hoverData.capture)){var he=e.hoverData.capture;if(he){e.hoverData.capture=!1;var X=e.cy,fe=e.projectIntoViewport(q.clientX,q.clientY),K=e.selection,qe=e.findNearestElement(fe[0],fe[1],!0,!1),_e=e.dragData.possibleDragElements,Be=e.hoverData.down,Ne=a(q);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,Be&&Be.unactivate();var He=o(function(Le){return{originalEvent:q,type:Le,position:{x:fe[0],y:fe[1]}}},"makeEvent");if(e.hoverData.which===3){var $e=He("cxttapend");if(Be?Be.emit($e):X.emit($e),!e.hoverData.cxtDragged){var Xe=He("cxttap");Be?Be.emit(Xe):X.emit(Xe)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(e.hoverData.which===1){if(i(qe,["mouseup","tapend","vmouseup"],q,{x:fe[0],y:fe[1]}),!e.dragData.didDrag&&!e.hoverData.dragged&&!e.hoverData.selecting&&!e.hoverData.isOverThresholdDrag&&(i(Be,["click","tap","vclick"],q,{x:fe[0],y:fe[1]}),I=!1,q.timeStamp-_<=X.multiClickDebounceTime()?(N&&clearTimeout(N),I=!0,_=null,i(Be,["dblclick","dbltap","vdblclick"],q,{x:fe[0],y:fe[1]})):(N=setTimeout(function(){I||i(Be,["oneclick","onetap","voneclick"],q,{x:fe[0],y:fe[1]})},X.multiClickDebounceTime()),_=q.timeStamp)),Be==null&&!e.dragData.didDrag&&!e.hoverData.selecting&&!e.hoverData.dragged&&!a(q)&&(X.$(r).unselect(["tapunselect"]),_e.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=_e=X.collection()),qe==Be&&!e.dragData.didDrag&&!e.hoverData.selecting&&qe!=null&&qe._private.selectable&&(e.hoverData.dragging||(X.selectionType()==="additive"||Ne?qe.selected()?qe.unselect(["tapunselect"]):qe.select(["tapselect"]):Ne||(X.$(r).unmerge(qe).unselect(["tapunselect"]),qe.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var Fe=X.collection(e.getAllInBox(K[0],K[1],K[2],K[3]));e.redrawHint("select",!0),Fe.length>0&&e.redrawHint("eles",!0),X.emit(He("boxend"));var Ke=o(function(Le){return Le.selectable()&&!Le.selected()},"eleWouldBeSelected");X.selectionType()==="additive"||Ne||X.$(r).unmerge(Fe).unselect(),Fe.emit(He("box")).stdFilter(Ke).select().emit(He("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!K[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var xe=Be&&Be.grabbed();y(_e),xe&&(Be.emit(He("freeon")),_e.emit(He("free")),e.dragData.didDrag&&(Be.emit(He("dragfreeon")),_e.emit(He("dragfree"))))}}K[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}}},"mouseupHandler"),!1);var A=[],M=4,D,P=1e5,B=o(function(q,he){for(var X=0;X=M){var fe=A;if(D=B(fe,5),!D){var K=Math.abs(fe[0]);D=O(fe)&&K>5}if(D)for(var qe=0;qe5&&(X=kF(X)*5),Xe=X/-250,D&&(Xe/=P,Xe*=3),Xe=Xe*e.wheelSensitivity;var Fe=q.deltaMode===1;Fe&&(Xe*=33);var Ke=_e.zoom()*Math.pow(10,Xe);q.type==="gesturechange"&&(Ke=e.gestureStartZoom*q.scale),_e.zoom({level:Ke,renderedPosition:{x:$e[0],y:$e[1]}}),_e.emit({type:q.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:q,position:{x:He[0],y:He[1]}})}}}},"wheelHandler");e.registerBinding(e.container,"wheel",$,!0),e.registerBinding(t,"scroll",o(function(q){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},"scrollHandler"),!0),e.registerBinding(e.container,"gesturestart",o(function(q){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||q.preventDefault()},"gestureStartHandler"),!0),e.registerBinding(e.container,"gesturechange",function(ne){e.hasTouchStarted||$(ne)},!0),e.registerBinding(e.container,"mouseout",o(function(q){var he=e.projectIntoViewport(q.clientX,q.clientY);e.cy.emit({originalEvent:q,type:"mouseout",position:{x:he[0],y:he[1]}})},"mouseOutHandler"),!1),e.registerBinding(e.container,"mouseover",o(function(q){var he=e.projectIntoViewport(q.clientX,q.clientY);e.cy.emit({originalEvent:q,type:"mouseover",position:{x:he[0],y:he[1]}})},"mouseOverHandler"),!1);var V,G,z,W,H,j,Q,U,oe,te,le,ie,ae,Re=o(function(q,he,X,fe){return Math.sqrt((X-q)*(X-q)+(fe-he)*(fe-he))},"distance"),be=o(function(q,he,X,fe){return(X-q)*(X-q)+(fe-he)*(fe-he)},"distanceSq"),Pe;e.registerBinding(e.container,"touchstart",Pe=o(function(q){if(e.hasTouchStarted=!0,!!R(q)){x(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var he=e.cy,X=e.touchData.now,fe=e.touchData.earlier;if(q.touches[0]){var K=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);X[0]=K[0],X[1]=K[1]}if(q.touches[1]){var K=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);X[2]=K[0],X[3]=K[1]}if(q.touches[2]){var K=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);X[4]=K[0],X[5]=K[1]}var qe=o(function(At){return{originalEvent:q,type:At,position:{x:X[0],y:X[1]}}},"makeEvent");if(q.touches[1]){e.touchData.singleTouchMoved=!0,y(e.dragData.touchDragEles);var _e=e.findContainerClientCoords();oe=_e[0],te=_e[1],le=_e[2],ie=_e[3],V=q.touches[0].clientX-oe,G=q.touches[0].clientY-te,z=q.touches[1].clientX-oe,W=q.touches[1].clientY-te,ae=0<=V&&V<=le&&0<=z&&z<=le&&0<=G&&G<=ie&&0<=W&&W<=ie;var Be=he.pan(),Ne=he.zoom();H=Re(V,G,z,W),j=be(V,G,z,W),Q=[(V+z)/2,(G+W)/2],U=[(Q[0]-Be.x)/Ne,(Q[1]-Be.y)/Ne];var He=200,$e=He*He;if(j<$e&&!q.touches[2]){var Xe=e.findNearestElement(X[0],X[1],!0,!0),Fe=e.findNearestElement(X[2],X[3],!0,!0);Xe&&Xe.isNode()?(Xe.activate().emit(qe("cxttapstart")),e.touchData.start=Xe):Fe&&Fe.isNode()?(Fe.activate().emit(qe("cxttapstart")),e.touchData.start=Fe):he.emit(qe("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,e.redraw();return}}if(q.touches[2])he.boxSelectionEnabled()&&q.preventDefault();else if(!q.touches[1]){if(q.touches[0]){var Ke=e.findNearestElements(X[0],X[1],!0,!0),xe=Ke[0];if(xe!=null&&(xe.activate(),e.touchData.start=xe,e.touchData.starts=Ke,e.nodeIsGrabbable(xe))){var mt=e.dragData.touchDragEles=he.collection(),Le=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),xe.selected()?(Le=he.$(function(St){return St.selected()&&e.nodeIsGrabbable(St)}),m(Le,{addToList:mt})):g(xe,{addToList:mt}),h(xe),xe.emit(qe("grabon")),Le?Le.forEach(function(St){St.emit(qe("grab"))}):xe.emit(qe("grab"))}i(xe,["touchstart","tapstart","vmousedown"],q,{x:X[0],y:X[1]}),xe==null&&(e.data.bgActivePosistion={x:K[0],y:K[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){e.touchData.singleTouchMoved===!1&&!e.pinching&&!e.touchData.selecting&&i(e.touchData.start,["taphold"],q,{x:X[0],y:X[1]})},e.tapholdDuration)}}if(q.touches.length>=1){for(var ft=e.touchData.startPosition=[null,null,null,null,null,null],wt=0;wt=e.touchTapThreshold2}if(he&&e.touchData.cxt){q.preventDefault();var wt=q.touches[0].clientX-oe,zt=q.touches[0].clientY-te,St=q.touches[1].clientX-oe,At=q.touches[1].clientY-te,bt=be(wt,zt,St,At),me=bt/j,lt=150,gt=lt*lt,Ze=1.5,Ee=Ze*Ze;if(me>=Ee||bt>=gt){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var tt=Ne("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(tt),e.touchData.start=null):fe.emit(tt)}}if(he&&e.touchData.cxt){var tt=Ne("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(tt):fe.emit(tt),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var at=e.findNearestElement(K[0],K[1],!0,!0);(!e.touchData.cxtOver||at!==e.touchData.cxtOver)&&(e.touchData.cxtOver&&e.touchData.cxtOver.emit(Ne("cxtdragout")),e.touchData.cxtOver=at,at&&at.emit(Ne("cxtdragover")))}else if(he&&q.touches[2]&&fe.boxSelectionEnabled())q.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||fe.emit(Ne("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,X[4]=1,!X||X.length===0||X[0]===void 0?(X[0]=(K[0]+K[2]+K[4])/3,X[1]=(K[1]+K[3]+K[5])/3,X[2]=(K[0]+K[2]+K[4])/3+1,X[3]=(K[1]+K[3]+K[5])/3+1):(X[2]=(K[0]+K[2]+K[4])/3,X[3]=(K[1]+K[3]+K[5])/3),e.redrawHint("select",!0),e.redraw();else if(he&&q.touches[1]&&!e.touchData.didSelect&&fe.zoomingEnabled()&&fe.panningEnabled()&&fe.userZoomingEnabled()&&fe.userPanningEnabled()){q.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var ot=e.dragData.touchDragEles;if(ot){e.redrawHint("drag",!0);for(var Wt=0;Wt0&&!e.hoverData.draggingEles&&!e.swipePanning&&e.data.bgActivePosistion!=null&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},"touchmoveHandler"),!1);var Oe;e.registerBinding(t,"touchcancel",Oe=o(function(q){var he=e.touchData.start;e.touchData.capture=!1,he&&he.unactivate()},"touchcancelHandler"));var ue,ye,ke,ce;if(e.registerBinding(t,"touchend",ue=o(function(q){var he=e.touchData.start,X=e.touchData.capture;if(X)q.touches.length===0&&(e.touchData.capture=!1),q.preventDefault();else return;var fe=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var K=e.cy,qe=K.zoom(),_e=e.touchData.now,Be=e.touchData.earlier;if(q.touches[0]){var Ne=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);_e[0]=Ne[0],_e[1]=Ne[1]}if(q.touches[1]){var Ne=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);_e[2]=Ne[0],_e[3]=Ne[1]}if(q.touches[2]){var Ne=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);_e[4]=Ne[0],_e[5]=Ne[1]}var He=o(function(gt){return{originalEvent:q,type:gt,position:{x:_e[0],y:_e[1]}}},"makeEvent");he&&he.unactivate();var $e;if(e.touchData.cxt){if($e=He("cxttapend"),he?he.emit($e):K.emit($e),!e.touchData.cxtDragged){var Xe=He("cxttap");he?he.emit(Xe):K.emit(Xe)}e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,e.redraw();return}if(!q.touches[2]&&K.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var Fe=K.collection(e.getAllInBox(fe[0],fe[1],fe[2],fe[3]));fe[0]=void 0,fe[1]=void 0,fe[2]=void 0,fe[3]=void 0,fe[4]=0,e.redrawHint("select",!0),K.emit(He("boxend"));var Ke=o(function(gt){return gt.selectable()&&!gt.selected()},"eleWouldBeSelected");Fe.emit(He("box")).stdFilter(Ke).select().emit(He("boxselect")),Fe.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(he?.unactivate(),q.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(!q.touches[1]){if(!q.touches[0]){if(!q.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var xe=e.dragData.touchDragEles;if(he!=null){var mt=he._private.grabbed;y(xe),e.redrawHint("drag",!0),e.redrawHint("eles",!0),mt&&(he.emit(He("freeon")),xe.emit(He("free")),e.dragData.didDrag&&(he.emit(He("dragfreeon")),xe.emit(He("dragfree")))),i(he,["touchend","tapend","vmouseup","tapdragout"],q,{x:_e[0],y:_e[1]}),he.unactivate(),e.touchData.start=null}else{var Le=e.findNearestElement(_e[0],_e[1],!0,!0);i(Le,["touchend","tapend","vmouseup","tapdragout"],q,{x:_e[0],y:_e[1]})}var ft=e.touchData.startPosition[0]-_e[0],wt=ft*ft,zt=e.touchData.startPosition[1]-_e[1],St=zt*zt,At=wt+St,bt=At*qe*qe;e.touchData.singleTouchMoved||(he||K.$(":selected").unselect(["tapunselect"]),i(he,["tap","vclick"],q,{x:_e[0],y:_e[1]}),ye=!1,q.timeStamp-ce<=K.multiClickDebounceTime()?(ke&&clearTimeout(ke),ye=!0,ce=null,i(he,["dbltap","vdblclick"],q,{x:_e[0],y:_e[1]})):(ke=setTimeout(function(){ye||i(he,["onetap","voneclick"],q,{x:_e[0],y:_e[1]})},K.multiClickDebounceTime()),ce=q.timeStamp)),he!=null&&!e.dragData.didDrag&&he._private.selectable&&bt"u"){var re=[],J=o(function(q){return{clientX:q.clientX,clientY:q.clientY,force:1,identifier:q.pointerId,pageX:q.pageX,pageY:q.pageY,radiusX:q.width/2,radiusY:q.height/2,screenX:q.screenX,screenY:q.screenY,target:q.target}},"makeTouch"),se=o(function(q){return{event:q,touch:J(q)}},"makePointer"),ge=o(function(q){re.push(se(q))},"addPointer"),Te=o(function(q){for(var he=0;he0)return z[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:Abe(a,s,t,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(t,r,n,i,a,s,l,u){u=u==="auto"?Wf(i,a):u;var h=2*u;if(Oh(t,r,this.points,s,l,i,a-h,[0,-1],n)||Oh(t,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var d=i/2+2*n,f=a/2+2*n,p=[s-d,l-f,s-d,l,s+d,l,s+d,l-f];return!!(go(t,r,p)||tg(t,r,h,h,s+i/2-u,l+a/2-u,n)||tg(t,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Bh.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Ms(3,0)),this.generateRoundPolygon("round-triangle",Ms(3,0)),this.generatePolygon("rectangle",Ms(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",Ms(5,0)),this.generateRoundPolygon("round-pentagon",Ms(5,0)),this.generatePolygon("hexagon",Ms(6,0)),this.generateRoundPolygon("round-hexagon",Ms(6,0)),this.generatePolygon("heptagon",Ms(7,0)),this.generateRoundPolygon("round-heptagon",Ms(7,0)),this.generatePolygon("octagon",Ms(8,0)),this.generateRoundPolygon("round-octagon",Ms(8,0));var n=new Array(20);{var i=Z$(5,0),a=Z$(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=t.deqFastCost*k)break}else if(h){if(b>=t.deqCost*m||b>=t.deqAvgCost*p)break}else if(T>=t.deqNoDrawCost*V$)break;var C=t.deq(n,v,y);if(C.length>0)for(var w=0;w0&&(t.onDeqd(n,g),!h&&t.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=t.priority||TF;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},xmt=(function(){function e(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:J5;Yf(this,e),this.idsByKey=new Nh,this.keyForId=new Nh,this.cachesByLvl=new Nh,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=r}return o(e,"ElementTextureCacheLookup"),jf(e,[{key:"getIdsFor",value:o(function(r){r==null&&pi("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new W1,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Nh,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}])})(),Wxe=25,B5=50,j5=-4,hF=3,I2e=7.99,bmt=8,Tmt=1024,Cmt=1024,wmt=1024,kmt=.2,Smt=.8,Emt=10,Amt=.15,Rmt=.1,_mt=.9,Lmt=.9,Dmt=100,Imt=1,P1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Mmt=Va({getKey:null,doesEleInvalidateKey:J5,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:bbe,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),DT=o(function(t,r){var n=this;n.renderer=t,n.onDequeues=[];var i=Mmt(r);br(n,i),n.lookup=new xmt(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),ua=DT.prototype;ua.reasons=P1;ua.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]};ua.getRetiredTextureQueue=function(e){var t=this,r=t.eleImgCaches.retired=t.eleImgCaches.retired||{},n=r[e]=r[e]||[];return n};ua.getElementQueue=function(){var e=this,t=e.eleCacheQueue=e.eleCacheQueue||new ZT(function(r,n){return n.reqs-r.reqs});return t};ua.getElementKeyToQueue=function(){var e=this,t=e.eleKeyToCacheQueue=e.eleKeyToCacheQueue||{};return t};ua.getElement=function(e,t,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!t||t.w===0||t.h===0||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed()||!a.allowEdgeTxrCaching&&e.isEdge()||!a.allowParentTxrCaching&&e.isParent())return null;if(n==null&&(n=Math.ceil(wF(l*r))),n=I2e||n>hF)return null;var h=Math.pow(2,n),d=t.h*h,f=t.w*h,p=s.eleTextBiggerThanMin(e,h);if(!this.isVisible(e,p))return null;var m=u.get(e,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(d<=Wxe?g=Wxe:d<=B5?g=B5:g=Math.ceil(d/B5)*B5,d>wmt||f>Cmt)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,f)||a.addTexture(g,f)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;I--)L=a.getElement(e,t,r,I,P1.downscale);N()}else return a.queueElement(e,w.level-1),w;else{var _;if(!T&&!k&&!C)for(var A=n-1;A>=j5;A--){var M=u.get(e,A);if(M){_=M;break}}if(b(_))return a.queueElement(e,n),_;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,e,t,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:f,height:d,scaledLabelShown:p},v.usedWidth+=Math.ceil(f+bmt),v.eleCaches.push(m),u.set(e,n,m),a.checkTextureFullness(v),m};ua.invalidateElements=function(e){for(var t=0;t=kmt*e.width&&this.retireTexture(e)};ua.checkTextureFullness=function(e){var t=this,r=t.getTextureQueue(e.height);e.usedWidth/e.width>Smt&&e.fullnessChecks>=Emt?Vf(r,e):e.fullnessChecks++};ua.retireTexture=function(e){var t=this,r=e.height,n=t.getTextureQueue(r),i=this.lookup;Vf(n,e),e.retired=!0;for(var a=e.eleCaches,s=0;s=t)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,CF(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Vf(i,s),n.push(s),s}};ua.queueElement=function(e,t){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(e),s=i[a];if(s)s.level=Math.max(s.level,t),s.eles.merge(e),s.reqs++,n.updateItem(s);else{var l={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(l),i[a]=l}};ua.dequeue=function(e){for(var t=this,r=t.getElementQueue(),n=t.getElementKeyToQueue(),i=[],a=t.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],d=a.hasCache(h,l.level);if(n[u]=null,d)continue;i.push(l);var f=t.getBoundingBox(h);t.getElement(h,f,e,l.level,P1.dequeue)}return i};ua.removeFromQueue=function(e){var t=this,r=t.getElementQueue(),n=t.getElementKeyToQueue(),i=this.getKey(e),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=bF,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(e))};ua.onDequeue=function(e){this.onDequeues.push(e)};ua.offDequeue=function(e){Vf(this.onDequeues,e)};ua.setupDequeueing=D2e.setupDequeueing({deqRedrawThreshold:Dmt,deqCost:Amt,deqAvgCost:Rmt,deqNoDrawCost:_mt,deqFastCost:Lmt,deq:o(function(t,r,n){return t.dequeue(r,n)},"deq"),onDeqd:o(function(t,r){for(var n=0;n=Pmt||r>oA)return null}n.validateLayersElesOrdering(r,e);var u=n.layersByLevel,h=Math.pow(2,r),d=u[r]=u[r]||[],f,p=n.levelIsComplete(r,e),m,g=o(function(){var N=o(function(D){if(n.validateLayersElesOrdering(D,e),n.levelIsComplete(D,e))return m=u[D],!0},"canUseAsTmpLvl"),I=o(function(D){if(!m)for(var P=r+D;MT<=P&&P<=oA&&!N(P);P+=D);},"checkLvls");I(1),I(-1);for(var _=d.length-1;_>=0;_--){var A=d[_];A.invalid&&Vf(d,A)}},"checkTempLevels");if(!p)g();else return d;var y=o(function(){if(!f){f=Ns();for(var N=0;NHxe||A>Hxe)return null;var M=_*A;if(M>Wmt)return null;var D=n.makeLayer(f,r);if(I!=null){var P=d.indexOf(I)+1;d.splice(P,0,D)}else(N.insert===void 0||N.insert)&&d.unshift(D);return D},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=e.length/Nmt,T=!l,k=0;k=b||!Ebe(x.bb,C.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||T?n.queueLayer(x,C):n.drawEleInLayer(x,C,r,t),x.eles.push(C),S[r]=x}return m||(T?null:d)};Wa.getEleLevelForLayerLevel=function(e,t){return e};Wa.drawEleInLayer=function(e,t,r,n){var i=this,a=this.renderer,s=e.context,l=t.boundingBox();l.w===0||l.h===0||!t.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,t,null,null,r,qmt),a.setImgSmoothing(s,!0))};Wa.levelIsComplete=function(e,t){var r=this,n=r.layersByLevel[e];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===t.length};Wa.validateLayersElesOrdering=function(e,t){var r=this.layersByLevel[e];if(r)for(var n=0;n0){t=!0;break}}return t};Wa.invalidateElements=function(e){var t=this;e.length!==0&&(t.lastInvalidationTime=Ph(),!(e.length===0||!t.haveLayers())&&t.updateElementsInLayers(e,o(function(n,i,a){t.invalidateLayer(n)},"invalAssocLayers")))};Wa.invalidateLayer=function(e){if(this.lastInvalidationTime=Ph(),!e.invalid){var t=e.level,r=e.eles,n=this.layersByLevel[t];Vf(n,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=t._private.rscratch;if(!(a&&!t.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,e.translate(-u.x1,-u.y1));var h=a?t.pstyle("opacity").value:1,d=a?t.pstyle("line-opacity").value:1,f=t.pstyle("curve-style").value,p=t.pstyle("line-style").value,m=t.pstyle("width").pfValue,g=t.pstyle("line-cap").value,y=t.pstyle("line-outline-width").value,v=t.pstyle("line-outline-color").value,x=h*d,b=h*d,T=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;f==="straight-triangle"?(s.eleStrokeStyle(e,t,D),s.drawEdgeTrianglePath(t,e,l.allpts)):(e.lineWidth=m,e.lineCap=g,s.eleStrokeStyle(e,t,D),s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLine"),k=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(e.lineWidth=m+y,e.lineCap=g,y>0)s.colorStrokeStyle(e,v[0],v[1],v[2],D);else{e.lineCap="butt";return}f==="straight-triangle"?s.drawEdgeTrianglePath(t,e,l.allpts):(s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLineOutline"),C=o(function(){i&&s.drawEdgeOverlay(e,t)},"drawOverlay"),w=o(function(){i&&s.drawEdgeUnderlay(e,t)},"drawUnderlay"),S=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(e,t,D)},"drawArrows"),R=o(function(){s.drawElementText(e,t,null,n)},"drawText");e.lineJoin="round";var L=t.pstyle("ghost").value==="yes";if(L){var N=t.pstyle("ghost-offset-x").pfValue,I=t.pstyle("ghost-offset-y").pfValue,_=t.pstyle("ghost-opacity").value,A=x*_;e.translate(N,I),T(A),S(A),e.translate(-N,-I)}else k();w(),T(),S(),C(),R(),r&&e.translate(u.x1,u.y1)}};P2e=o(function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(t,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(t,"-padding")).pfValue,h=2*u,d=n.pstyle("".concat(t,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,d[0],d[1],d[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");$h.drawEdgeOverlay=P2e("overlay");$h.drawEdgeUnderlay=P2e("underlay");$h.drawEdgePath=function(e,t,r,n){var i=e._private.rscratch,a=t,s,l=!1,u=this.usePaths(),h=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var f=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===f;p?(s=t=i.pathCache,l=!0):(s=t=new Path2D,i.pathCacheKey=f,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=d;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(t))return}else if(n===!1)return;if(t.isNode()){var l=t.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(t);e.textAlign=u,e.textBaseline="bottom"}else{var h=t.element()._private.rscratch.badLine,d=t.pstyle("label"),f=t.pstyle("source-label"),p=t.pstyle("target-label");if(h||(!d||!d.value)&&(!f||!f.value)&&(!p||!p.value))return;e.textAlign="center",e.textBaseline="bottom"}var m=!r,g;r&&(g=r,e.translate(-g.x1,-g.y1)),i==null?(s.drawText(e,t,null,m,a),t.isEdge()&&(s.drawText(e,t,"source",m,a),s.drawText(e,t,"target",m,a))):s.drawText(e,t,i,m,a),r&&e.translate(g.x1,g.y1)};lg.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=t.pstyle("font-style").strValue,i=t.pstyle("font-size").pfValue+"px",a=t.pstyle("font-family").strValue,s=t.pstyle("font-weight").strValue,l=r?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,u=t.pstyle("text-outline-opacity").value*l,h=t.pstyle("color").value,d=t.pstyle("text-outline-color").value;e.font=n+" "+s+" "+i+" "+a,e.lineJoin="round",this.colorFillStyle(e,h[0],h[1],h[2],l),this.colorStrokeStyle(e,d[0],d[1],d[2],u)};o(tgt,"circle");o(Xxe,"roundRect");lg.getTextAngle=function(e,t){var r,n=e._private,i=n.rscratch,a=t?t+"-":"",s=e.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=mo(i,"labelAngle",t);r=e.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};lg.drawText=function(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=t._private,s=a.rscratch,l=i?t.effectiveOpacity():1;if(!(i&&(l===0||t.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=mo(s,"labelX",r),h=mo(s,"labelY",r),d,f,p=this.getLabelText(t,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(e,t,i);var m=r?r+"-":"",g=mo(s,"labelWidth",r),y=mo(s,"labelHeight",r),v=t.pstyle(m+"text-margin-x").pfValue,x=t.pstyle(m+"text-margin-y").pfValue,b=t.isEdge(),T=t.pstyle("text-halign").value,k=t.pstyle("text-valign").value;b&&(T="center",k="center"),u+=v,h+=x;var C;switch(n?C=this.getTextAngle(t,r):C=0,C!==0&&(d=u,f=h,e.translate(d,f),e.rotate(C),u=0,h=0),k){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var w=t.pstyle("text-background-opacity").value,S=t.pstyle("text-border-opacity").value,R=t.pstyle("text-border-width").pfValue,L=t.pstyle("text-background-padding").pfValue,N=t.pstyle("text-background-shape").strValue,I=N==="round-rectangle"||N==="roundrectangle",_=N==="circle",A=2;if(w>0||R>0&&S>0){var M=e.fillStyle,D=e.strokeStyle,P=e.lineWidth,B=t.pstyle("text-background-color").value,O=t.pstyle("text-border-color").value,$=t.pstyle("text-border-style").value,V=w>0,G=R>0&&S>0,z=u-L;switch(T){case"left":z-=g;break;case"center":z-=g/2;break}var W=h-y-L,H=g+2*L,j=y+2*L;if(V&&(e.fillStyle="rgba(".concat(B[0],",").concat(B[1],",").concat(B[2],",").concat(w*l,")")),G&&(e.strokeStyle="rgba(".concat(O[0],",").concat(O[1],",").concat(O[2],",").concat(S*l,")"),e.lineWidth=R,e.setLineDash))switch($){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=R/4,e.setLineDash([]);break;case"solid":default:e.setLineDash([]);break}if(I?(e.beginPath(),Xxe(e,z,W,H,j,A)):_?(e.beginPath(),tgt(e,z,W,H,j)):(e.beginPath(),e.rect(z,W,H,j)),V&&e.fill(),G&&e.stroke(),G&&$==="double"){var Q=R/2;e.beginPath(),I?Xxe(e,z+Q,W+Q,H-2*Q,j-2*Q,A):e.rect(z+Q,W+Q,H-2*Q,j-2*Q),e.stroke()}e.fillStyle=M,e.strokeStyle=D,e.lineWidth=P,e.setLineDash&&e.setLineDash([])}var U=2*t.pstyle("text-outline-width").pfValue;if(U>0&&(e.lineWidth=U),t.pstyle("text-wrap").value==="wrap"){var oe=mo(s,"labelWrapCachedLines",r),te=mo(s,"labelLineHeight",r),le=g/2,ie=this.getLabelJustification(t);switch(ie==="auto"||(T==="left"?ie==="left"?u+=-g:ie==="center"&&(u+=-le):T==="center"?ie==="left"?u+=-le:ie==="right"&&(u+=le):T==="right"&&(ie==="center"?u+=le:ie==="right"&&(u+=g))),k){case"top":h-=(oe.length-1)*te;break;case"center":case"bottom":h-=(oe.length-1)*te;break}for(var ae=0;ae0&&e.strokeText(oe[ae],u,h),e.fillText(oe[ae],u,h),h+=te}else U>0&&e.strokeText(p,u,h),e.fillText(p,u,h);C!==0&&(e.rotate(-C),e.translate(-d,-f))}}};Kf={};Kf.drawNode=function(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=t._private,d=h.rscratch,f=t.position();if(!(!Gt(f.x)||!Gt(f.y))&&!(a&&!t.visible())){var p=a?t.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=t.padding();l=t.width()+2*v,u=t.height()+2*v;var x;r&&(x=r,e.translate(-x.x1,-x.y1));for(var b=t.pstyle("background-image"),T=b.value,k=new Array(T.length),C=new Array(T.length),w=0,S=0;S0&&arguments[0]!==void 0?arguments[0]:A;s.eleFillStyle(e,t,q)},"setupShapeColor"),te=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:G;s.colorStrokeStyle(e,M[0],M[1],M[2],q)},"setupBorderColor"),le=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:j;s.colorStrokeStyle(e,W[0],W[1],W[2],q)},"setupOutlineColor"),ie=o(function(q,he,X,fe){var K=s.nodePathCache=s.nodePathCache||[],qe=xbe(X==="polygon"?X+","+fe.join(","):X,""+he,""+q,""+U),_e=K[qe],Be,Ne=!1;return _e!=null?(Be=_e,Ne=!0,d.pathCache=Be):(Be=new Path2D,K[qe]=d.pathCache=Be),{path:Be,cacheHit:Ne}},"getPath"),ae=t.pstyle("shape").strValue,Re=t.pstyle("shape-polygon-points").pfValue;if(m){e.translate(f.x,f.y);var be=ie(l,u,ae,Re);g=be.path,y=be.cacheHit}var Pe=o(function(){if(!y){var q=f;m&&(q={x:0,y:0}),s.nodeShapes[s.getNodeShape(t)].draw(g||e,q.x,q.y,l,u,U,d)}m?e.fill(g):e.fill()},"drawShape"),Ge=o(function(){for(var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,X=h.backgrounding,fe=0,K=0;K0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(t)&&(s.drawPie(e,t,he),q&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d)))},"drawPie"),ue=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasStripe(t)&&(e.save(),m?e.clip(d.pathCache):(s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d),e.clip()),s.drawStripe(e,t,he),e.restore(),q&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d)))},"drawStripe"),ye=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=(I>0?I:-I)*q,X=I>0?0:255;I!==0&&(s.colorFillStyle(e,X,X,X,he),m?e.fill(g):e.fill())},"darken"),ke=o(function(){if(_>0){if(e.lineWidth=_,e.lineCap=B,e.lineJoin=P,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash($),e.lineDashOffset=V;break;case"solid":case"double":e.setLineDash([]);break}if(O!=="center"){if(e.save(),e.lineWidth*=2,O==="inside")m?e.clip(g):e.clip();else{var q=new Path2D;q.rect(-l/2-_,-u/2-_,l+2*_,u+2*_),q.addPath(g),e.clip(q,"evenodd")}m?e.stroke(g):e.stroke(),e.restore()}else m?e.stroke(g):e.stroke();if(D==="double"){e.lineWidth=_/3;var he=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",m?e.stroke(g):e.stroke(),e.globalCompositeOperation=he}e.setLineDash&&e.setLineDash([])}},"drawBorder"),ce=o(function(){if(z>0){if(e.lineWidth=z,e.lineCap="butt",e.setLineDash)switch(H){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([]);break}var q=f;m&&(q={x:0,y:0});var he=s.getNodeShape(t),X=_;O==="inside"&&(X=0),O==="outside"&&(X*=2);var fe=(l+X+(z+Q))/l,K=(u+X+(z+Q))/u,qe=l*fe,_e=u*K,Be=s.nodeShapes[he].points,Ne;if(m){var He=ie(qe,_e,he,Be);Ne=He.path}if(he==="ellipse")s.drawEllipsePath(Ne||e,q.x,q.y,qe,_e);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(he)){var $e=0,Xe=0,Fe=0;he==="round-diamond"?$e=(X+Q+z)*1.4:he==="round-heptagon"?($e=(X+Q+z)*1.075,Fe=-(X/2+Q+z)/35):he==="round-hexagon"?$e=(X+Q+z)*1.12:he==="round-pentagon"?($e=(X+Q+z)*1.13,Fe=-(X/2+Q+z)/15):he==="round-tag"?($e=(X+Q+z)*1.12,Xe=(X/2+z+Q)*.07):he==="round-triangle"&&($e=(X+Q+z)*(Math.PI/2),Fe=-(X+Q/2+z)/Math.PI),$e!==0&&(fe=(l+$e)/l,qe=l*fe,["round-hexagon","round-tag"].includes(he)||(K=(u+$e)/u,_e=u*K)),U=U==="auto"?_be(qe,_e):U;for(var Ke=qe/2,xe=_e/2,mt=U+(X+z+Q)/2,Le=new Array(Be.length/2),ft=new Array(Be.length/2),wt=0;wt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,d[0],d[1],d[2],h),l.nodeShapes[f].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");Kf.drawNodeOverlay=O2e("overlay");Kf.drawNodeUnderlay=O2e("underlay");Kf.hasPie=function(e){return e=e[0],e._private.hasPie};Kf.hasStripe=function(e){return e=e[0],e._private.hasStripe};Kf.drawPie=function(e,t,r,n){t=t[0],n=n||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=n.x,h=n.y,d=t.width(),f=t.height(),p=Math.min(d,f)/2,m,g=0,y=this.usePaths();if(y&&(u=0,h=0),a.units==="%"?p=p*a.pfValue:a.pfValue!==void 0&&(p=a.pfValue/2),s.units==="%"?m=p*s.pfValue:s.pfValue!==void 0&&(m=s.pfValue/2),!(m>=p))for(var v=1;v<=i.pieBackgroundN;v++){var x=t.pstyle("pie-"+v+"-background-size").value,b=t.pstyle("pie-"+v+"-background-color").value,T=t.pstyle("pie-"+v+"-background-opacity").value*r,k=x/100;k+g>1&&(k=1-g);var C=1.5*Math.PI+2*Math.PI*g;C+=l;var w=2*Math.PI*k,S=C+w;x===0||g>=1||g+k>1||(m===0?(e.beginPath(),e.moveTo(u,h),e.arc(u,h,p,C,S),e.closePath()):(e.beginPath(),e.arc(u,h,p,C,S),e.arc(u,h,m,S,C,!0),e.closePath()),this.colorFillStyle(e,b[0],b[1],b[2],T),e.fill(),g+=k)}};Kf.drawStripe=function(e,t,r,n){t=t[0],n=n||t.position();var i=t.cy().style(),a=n.x,s=n.y,l=t.width(),u=t.height(),h=0,d=this.usePaths();e.save();var f=t.pstyle("stripe-direction").value,p=t.pstyle("stripe-size");switch(f){case"vertical":break;case"righward":e.rotate(-Math.PI/2);break}var m=l,g=u;p.units==="%"?(m=m*p.pfValue,g=g*p.pfValue):p.pfValue!==void 0&&(m=p.pfValue,g=p.pfValue),d&&(a=0,s=0),s-=m/2,a-=g/2;for(var y=1;y<=i.stripeBackgroundN;y++){var v=t.pstyle("stripe-"+y+"-background-size").value,x=t.pstyle("stripe-"+y+"-background-color").value,b=t.pstyle("stripe-"+y+"-background-opacity").value*r,T=v/100;T+h>1&&(T=1-h),!(v===0||h>=1||h+T>1)&&(e.beginPath(),e.rect(a,s+g*h,m,g*T),e.closePath(),this.colorFillStyle(e,x[0],x[1],x[2],b),e.fill(),h+=T)}e.restore()};Ps={},rgt=100;Ps.getPixelRatio=function(){var e=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var t=this.cy.window(),r=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(t.devicePixelRatio||1)/r};Ps.paintCache=function(e){for(var t=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;it.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!f&&(d[t.NODE]=!0,d[t.SELECT_BOX]=!0);var b=r.style(),T=r.zoom(),k=s!==void 0?s:T,C=r.pan(),w={x:C.x,y:C.y},S={zoom:T,pan:{x:C.x,y:C.y}},R=t.prevViewport,L=R===void 0||S.zoom!==R.zoom||S.pan.x!==R.pan.x||S.pan.y!==R.pan.y;!L&&!(y&&!g)&&(t.motionBlurPxRatio=1),l&&(w=l),k*=u,w.x*=u,w.y*=u;var N=t.getCachedZSortedEles();function I(te,le,ie,ae,Re){var be=te.globalCompositeOperation;te.globalCompositeOperation="destination-out",t.colorFillStyle(te,255,255,255,t.motionBlurTransparency),te.fillRect(le,ie,ae,Re),te.globalCompositeOperation=be}o(I,"mbclear");function _(te,le){var ie,ae,Re,be;!t.clearingMotionBlur&&(te===h.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]||te===h.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG])?(ie={x:C.x*m,y:C.y*m},ae=T*m,Re=t.canvasWidth*m,be=t.canvasHeight*m):(ie=w,ae=k,Re=t.canvasWidth,be=t.canvasHeight),te.setTransform(1,0,0,1,0,0),le==="motionBlur"?I(te,0,0,Re,be):!n&&(le===void 0||le)&&te.clearRect(0,0,Re,be),i||(te.translate(ie.x,ie.y),te.scale(ae,ae)),l&&te.translate(l.x,l.y),s&&te.scale(s,s)}if(o(_,"setContextTransform"),f||(t.textureDrawLastFrame=!1),f){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=r.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var A=t.data.bufferContexts[t.TEXTURE_BUFFER];A.setTransform(1,0,0,1,0,0),A.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:A,drawOnlyNodeLayer:!0,forcedPxRatio:u*t.textureMult});var S=t.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:t.canvasWidth,height:t.canvasHeight};S.mpan={x:(0-S.pan.x)/S.zoom,y:(0-S.pan.y)/S.zoom}}d[t.DRAG]=!1,d[t.NODE]=!1;var M=h.contexts[t.NODE],D=t.textureCache.texture,S=t.textureCache.viewport;M.setTransform(1,0,0,1,0,0),p?I(M,0,0,S.width,S.height):M.clearRect(0,0,S.width,S.height);var P=b.core("outside-texture-bg-color").value,B=b.core("outside-texture-bg-opacity").value;t.colorFillStyle(M,P[0],P[1],P[2],B),M.fillRect(0,0,S.width,S.height);var T=r.zoom();_(M,!1),M.clearRect(S.mpan.x,S.mpan.y,S.width/S.zoom/u,S.height/S.zoom/u),M.drawImage(D,S.mpan.x,S.mpan.y,S.width/S.zoom/u,S.height/S.zoom/u)}else t.textureOnViewport&&!n&&(t.textureCache=null);var O=r.extent(),$=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),V=t.hideEdgesOnViewport&&$,G=[];if(G[t.NODE]=!d[t.NODE]&&p&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,G[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),G[t.DRAG]=!d[t.DRAG]&&p&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,G[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),d[t.NODE]||i||a||G[t.NODE]){var z=p&&!G[t.NODE]&&m!==1,M=n||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:h.contexts[t.NODE]),W=p&&!z?"motionBlur":void 0;_(M,W),V?t.drawCachedNodes(M,N.nondrag,u,O):t.drawLayeredElements(M,N.nondrag,u,O),t.debug&&t.drawDebugPoints(M,N.nondrag),!i&&!p&&(d[t.NODE]=!1)}if(!a&&(d[t.DRAG]||i||G[t.DRAG])){var z=p&&!G[t.DRAG]&&m!==1,M=n||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:h.contexts[t.DRAG]);_(M,p&&!z?"motionBlur":void 0),V?t.drawCachedNodes(M,N.drag,u,O):t.drawCachedElements(M,N.drag,u,O),t.debug&&t.drawDebugPoints(M,N.drag),!i&&!p&&(d[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,_),p&&m!==1){var H=h.contexts[t.NODE],j=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],Q=h.contexts[t.DRAG],U=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],oe=o(function(le,ie,ae){le.setTransform(1,0,0,1,0,0),ae||!x?le.clearRect(0,0,t.canvasWidth,t.canvasHeight):I(le,0,0,t.canvasWidth,t.canvasHeight);var Re=m;le.drawImage(ie,0,0,t.canvasWidth*Re,t.canvasHeight*Re,0,0,t.canvasWidth,t.canvasHeight)},"drawMotionBlur");(d[t.NODE]||G[t.NODE])&&(oe(H,j,G[t.NODE]),d[t.NODE]=!1),(d[t.DRAG]||G[t.DRAG])&&(oe(Q,U,G[t.DRAG]),d[t.DRAG]=!1)}t.prevViewport=S,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),p&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!f,t.mbFrames=0,d[t.NODE]=!0,d[t.DRAG]=!0,t.redraw()},rgt)),n||r.emit("render")};Ps.drawSelectionRectangle=function(e,t){var r=this,n=r.cy,i=r.data,a=n.style(),s=e.drawOnlyNodeLayer,l=e.drawAllLayers,u=i.canvasNeedsRedraw,h=e.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var d=h||i.contexts[r.SELECT_BOX];if(t(d),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var f=r.cy.zoom(),p=a.core("selection-box-border-width").value/f;d.lineWidth=p,d.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",d.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(d.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",d.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var f=r.cy.zoom(),m=i.bgActivePosistion;d.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",d.beginPath(),d.arc(m.x,m.y,a.core("active-bg-size").pfValue/f,0,2*Math.PI),d.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(d.setTransform(1,0,0,1,0,0),d.fillStyle="rgba(255, 0, 0, 0.75)",d.strokeStyle="rgba(255, 0, 0, 0.75)",d.font="30px Arial",!ET){var x=d.measureText(v);ET=x.actualBoundingBoxAscent}d.fillText(v,0,ET);var b=60;d.strokeRect(0,ET+10,250,20),d.fillRect(0,ET+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(Kxe,"compileShader");o(ngt,"createProgram");o(igt,"createTextureCanvas");o(zF,"getEffectivePanZoom");o(agt,"getEffectiveZoom");o(sgt,"modelToRenderedPosition");o(ogt,"isSimpleShape");o(lgt,"arrayEqual");o(Xm,"toWebGLColor");o(L1,"indexToVec4");o(cgt,"vec4ToIndex");o(ugt,"createTexture");o(B2e,"getTypeInfo");o($2e,"createTypedArray");o(hgt,"createTypedArrayView");o(dgt,"createBufferStaticDraw");o(xu,"createBufferDynamicDraw");o(fgt,"create3x3MatrixBufferDynamicDraw");o(pgt,"createPickingFrameBuffer");Zxe=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});o(q$,"create");o(Qxe,"identity");o(mgt,"multiply");o(X5,"translate");o(Jxe,"rotate");o(dF,"scale");o(ggt,"projection");ygt=(function(){function e(t,r,n,i){Yf(this,e),this.debugID=Math.floor(Math.random()*1e4),this.r=t,this.texSize=r,this.texRows=n,this.texHeight=Math.floor(r/n),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,r,r),this.scratch=i(t,r,this.texHeight,"scratch")}return o(e,"Atlas"),jf(e,[{key:"lock",value:o(function(){this.locked=!0},"lock")},{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.texSize,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,l=this.texRows,u=this.texHeight,h=this.getScale(n),d=h.scale,f=h.texW,p=h.texH,m=o(function(T,k){if(i&&k){var C=k.context,w=T.x,S=T.row,R=w,L=u*S;C.save(),C.translate(R,L),C.scale(d,d),i(C,n),C.restore()}},"drawAt"),g=[null,null],y=o(function(){m(a.freePointer,a.canvas),g[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:f,h:p},g[1]={x:a.freePointer.x+f,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=f,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var T=a.scratch,k=a.canvas;T.clear(),m({x:0,row:0},T);var C=s-a.freePointer.x,w=f-C,S=u;{var R=a.freePointer.x,L=a.freePointer.row*u,N=C;k.context.drawImage(T,0,0,N,S,R,L,N,S),g[0]={x:R,y:L,w:N,h:p}}{var I=C,_=(a.freePointer.row+1)*u,A=w;k&&k.context.drawImage(T,I,0,A,S,0,_,A,S),g[1]={x:0,y:_,w:A,h:p}}a.freePointer.x=w,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+f<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,g),this.needsBuffer=!0,g},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){if(this.locked)return!1;var n=this.texSize,i=this.texRows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},a=i.forceRedraw,s=a===void 0?!1:a,l=i.filterEle,u=l===void 0?function(){return!0}:l,h=i.filterType,d=h===void 0?function(){return!0}:h,f=!1,p=!1,m=yo(r),g;try{for(m.s();!(g=m.n()).done;){var y=g.value;if(u(y)){var v=yo(this.renderTypes.values()),x;try{var b=o(function(){var k=x.value,C=k.type;if(d(C)){var w=n.collections.get(k.collection),S=k.getKey(y),R=Array.isArray(S)?S:[S];if(s)R.forEach(function(_){return w.markKeyForGC(_)}),p=!0;else{var L=k.getID?k.getID(y):y.id(),N=n._key(C,L),I=n.typeAndIdToKey.get(N);I!==void 0&&!lgt(R,I)&&(f=!0,n.typeAndIdToKey.delete(N),I.forEach(function(_){return w.markKeyForGC(_)}))}}},"_loop2");for(v.s();!(x=v.n()).done;)b()}catch(T){v.e(T)}finally{v.f()}}}}catch(T){m.e(T)}finally{m.f()}return p&&(this.gc(),f=!1),f},"invalidate")},{key:"gc",value:o(function(){var r=yo(this.collections.values()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"getOrCreateAtlas",value:o(function(r,n,i,a){var s=this.renderTypes.get(n),l=this.collections.get(s.collection),u=!1,h=l.draw(a,i,function(p){s.drawClipped?(p.save(),p.beginPath(),p.rect(0,0,i.w,i.h),p.clip(),s.drawElement(p,r,i,!0,!0),p.restore()):s.drawElement(p,r,i,!0,!0),u=!0});if(u){var d=s.getID?s.getID(r):r.id(),f=this._key(n,d);this.typeAndIdToKey.has(f)?this.typeAndIdToKey.get(f).push(a):this.typeAndIdToKey.set(f,[a])}return h},"getOrCreateAtlas")},{key:"getAtlasInfo",value:o(function(r,n){var i=this,a=this.renderTypes.get(n),s=a.getKey(r),l=Array.isArray(s)?s:[s];return l.map(function(u){var h=a.getBoundingBox(r,u),d=i.getOrCreateAtlas(r,n,h,u),f=d.getOffsets(u),p=Ki(f,2),m=p[0],g=p[1];return{atlas:d,tex:m,tex1:m,tex2:g,bb:h}})},"getAtlasInfo")},{key:"getDebugInfo",value:o(function(){var r=[],n=yo(this.collections),i;try{for(n.s();!(i=n.n()).done;){var a=Ki(i.value,2),s=a[0],l=a[1],u=l.getCounts(),h=u.keyCount,d=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:d})}}catch(f){n.e(f)}finally{n.f()}return r},"getDebugInfo")}])})(),Tgt=(function(){function e(t){Yf(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]}return o(e,"AtlasBatchManager"),jf(e,[{key:"getMaxAtlasesPerBatch",value:o(function(){return this.maxAtlasesPerBatch},"getMaxAtlasesPerBatch")},{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,n){return n})},"getIndexArray")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"canAddToCurrentBatch",value:o(function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0},"canAddToCurrentBatch")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")}])})(),Cgt=` + float circleSD(vec2 p, float r) { + return distance(vec2(0), p) - r; // signed distance + } +`,wgt=` + float rectangleSD(vec2 p, vec2 b) { + vec2 d = abs(p)-b; + return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0); + } +`,kgt=` + float roundRectangleSD(vec2 p, vec2 b, vec4 cr) { + cr.xy = (p.x > 0.0) ? cr.xy : cr.zw; + cr.x = (p.y > 0.0) ? cr.x : cr.y; + vec2 q = abs(p) - b + cr.x; + return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x; + } +`,Sgt=` + float ellipseSD(vec2 p, vec2 ab) { + p = abs( p ); // symmetry + + // find root with Newton solver + vec2 q = ab*(p-ab); + float w = (q.x1.0) ? d : -d; + } +`,NT={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},lA={IGNORE:1,USE_BB:2},H$=0,ebe=1,tbe=2,U$=3,D1=4,$5=5,AT=6,RT=7,Egt=(function(){function e(t,r,n){Yf(this,e),this.r=t,this.gl=r,this.maxInstances=n.webglBatchSize,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,this.debug=n.webglDebug,this.batchDebugInfo=[],n.enableWrapping=!0,n.createTextureCanvas=igt,this.atlasManager=new bgt(t,n),this.batchManager=new Tgt(n),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(NT.SCREEN),this.pickingProgram=this._createShaderProgram(NT.PICKING),this.vao=this._createVAO()}return o(e,"ElementDrawingWebGL"),jf(e,[{key:"addAtlasCollection",value:o(function(r,n){this.atlasManager.addAtlasCollection(r,n)},"addAtlasCollection")},{key:"addTextureAtlasRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureAtlasRenderType")},{key:"addSimpleShapeRenderType",value:o(function(r,n){this.simpleShapeOptions.set(r,n)},"addSimpleShapeRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"_createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es + precision highp float; + + uniform mat3 uPanZoomMatrix; + uniform int uAtlasSize; + + // instanced + in vec2 aPosition; // a vertex from the unit square + + in mat3 aTransform; // used to transform verticies, eg into a bounding box + in int aVertType; // the type of thing we are rendering + + // the z-index that is output when using picking mode + in vec4 aIndex; + + // For textures + in int aAtlasId; // which shader unit/atlas to use + in vec4 aTex; // x/y/w/h of texture in atlas + + // for edges + in vec4 aPointAPointB; + in vec4 aPointCPointD; + in vec2 aLineWidth; // also used for node border width + + // simple shapes + in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left] + in vec4 aColor; // also used for edges + in vec4 aBorderColor; // aLineWidth is used for border width + + // output values passed to the fragment shader + out vec2 vTexCoord; + out vec4 vColor; + out vec2 vPosition; + // flat values are not interpolated + flat out int vAtlasId; + flat out int vVertType; + flat out vec2 vTopRight; + flat out vec2 vBotLeft; + flat out vec4 vCornerRadius; + flat out vec4 vBorderColor; + flat out vec2 vBorderWidth; + flat out vec4 vIndex; + + void main(void) { + int vid = gl_VertexID; + vec2 position = aPosition; // TODO make this a vec3, simplifies some code below + + if(aVertType == `.concat(H$,`) { + float texX = aTex.x; // texture coordinates + float texY = aTex.y; + float texW = aTex.z; + float texH = aTex.w; + + if(vid == 1 || vid == 2 || vid == 4) { + texX += texW; + } + if(vid == 2 || vid == 4 || vid == 5) { + texY += texH; + } + + float d = float(uAtlasSize); + vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(D1," || aVertType == ").concat(RT,` + || aVertType == `).concat($5," || aVertType == ").concat(AT,`) { // simple shapes + + // the bounding box is needed by the fragment shader + vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat + vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat + vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated + + // calculations are done in the fragment shader, just pass these along + vColor = aColor; + vCornerRadius = aCornerRadius; + vBorderColor = aBorderColor; + vBorderWidth = aLineWidth; + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(ebe,`) { + vec2 source = aPointAPointB.xy; + vec2 target = aPointAPointB.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + // stretch the unit square into a long skinny rectangle + vec2 xBasis = target - source; + vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); + vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y; + + gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); + vColor = aColor; + } + else if(aVertType == `).concat(tbe,`) { + vec2 pointA = aPointAPointB.xy; + vec2 pointB = aPointAPointB.zw; + vec2 pointC = aPointCPointD.xy; + vec2 pointD = aPointCPointD.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 p0, p1, p2, pos; + if(position.x == 0.0) { // The left side of the unit square + p0 = pointA; + p1 = pointB; + p2 = pointC; + pos = position; + } else { // The right side of the unit square, use same approach but flip the geometry upside down + p0 = pointD; + p1 = pointC; + p2 = pointB; + pos = vec2(0.0, -position.y); + } + + vec2 p01 = p1 - p0; + vec2 p12 = p2 - p1; + vec2 p21 = p1 - p2; + + // Find the normal vector. + vec2 tangent = normalize(normalize(p12) + normalize(p01)); + vec2 normal = vec2(-tangent.y, tangent.x); + + // Find the vector perpendicular to p0 -> p1. + vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); + + // Determine the bend direction. + float sigma = sign(dot(p01 + p21, normal)); + float width = aLineWidth[0]; + + if(sign(pos.y) == -sigma) { + // This is an intersecting vertex. Adjust the position so that there's no overlap. + vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } else { + // This is a non-intersecting vertex. Treat it like a mitre join. + vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } + + vColor = aColor; + } + else if(aVertType == `).concat(U$,` && vid < 3) { + // massage the first triangle into an edge arrow + if(vid == 0) + position = vec2(-0.15, -0.3); + if(vid == 1) + position = vec2( 0.0, 0.0); + if(vid == 2) + position = vec2( 0.15, -0.3); + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + vColor = aColor; + } + else { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space + } + + vAtlasId = aAtlasId; + vVertType = aVertType; + vIndex = aIndex; + } + `),a=this.batchManager.getIndexArray(),s=`#version 300 es + precision highp float; + + // declare texture unit for each texture atlas in the batch + `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` + `),` + + uniform vec4 uBGColor; + uniform float uZoom; + + in vec2 vTexCoord; + in vec4 vColor; + in vec2 vPosition; // model coordinates + + flat in int vAtlasId; + flat in vec4 vIndex; + flat in int vVertType; + flat in vec2 vTopRight; + flat in vec2 vBotLeft; + flat in vec4 vCornerRadius; + flat in vec4 vBorderColor; + flat in vec2 vBorderWidth; + + out vec4 outColor; + + `).concat(Cgt,` + `).concat(wgt,` + `).concat(kgt,` + `).concat(Sgt,` + + vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha + return vec4( + top.rgb + (bot.rgb * (1.0 - top.a)), + top.a + (bot.a * (1.0 - top.a)) + ); + } + + vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance + // scale to the zoom level so that borders don't look blurry when zoomed in + // note 1.5 is an aribitrary value chosen because it looks good + return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); + } + + void main(void) { + if(vVertType == `).concat(H$,`) { + // look up the texel from the texture unit + `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` + else `),` + } + else if(vVertType == `).concat(U$,`) { + // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out'; + outColor = blend(vColor, uBGColor); + outColor.a = 1.0; // make opaque, masks out line under arrow + } + else if(vVertType == `).concat(D1,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border + outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done + } + else if(vVertType == `).concat(D1," || vVertType == ").concat(RT,` + || vVertType == `).concat($5," || vVertType == ").concat(AT,`) { // use SDF + + float outerBorder = vBorderWidth[0]; + float innerBorder = vBorderWidth[1]; + float borderPadding = outerBorder * 2.0; + float w = vTopRight.x - vBotLeft.x - borderPadding; + float h = vTopRight.y - vBotLeft.y - borderPadding; + vec2 b = vec2(w/2.0, h/2.0); // half width, half height + vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center + + float d; // signed distance + if(vVertType == `).concat(D1,`) { + d = rectangleSD(p, b); + } else if(vVertType == `).concat(RT,` && w == h) { + d = circleSD(p, b.x); // faster than ellipse + } else if(vVertType == `).concat(RT,`) { + d = ellipseSD(p, b); + } else { + d = roundRectangleSD(p, b, vCornerRadius.wzyx); + } + + // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling + // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box + if(d > 0.0) { + if(d > outerBorder) { + discard; + } else { + outColor = distInterp(vBorderColor, vec4(0), d - outerBorder); + } + } else { + if(d > innerBorder) { + vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor; + vec4 innerBorderColor = blend(vBorderColor, vColor); + outColor = distInterp(innerBorderColor, outerColor, d); + } + else { + vec4 outerColor; + if(innerBorder == 0.0 && outerBorder == 0.0) { + outerColor = vec4(0); + } else if(innerBorder == 0.0) { + outerColor = vBorderColor; + } else { + outerColor = blend(vBorderColor, vColor); + } + outColor = distInterp(vColor, outerColor, d - innerBorder); + } + } + } + else { + outColor = vColor; + } + + `).concat(r.picking?`if(outColor.a == 0.0) discard; + else outColor = vIndex;`:"",` + } + `),l=ngt(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aTransform=n.getAttribLocation(l,"aTransform"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex=n.getAttribLocation(l,"aTex"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aColor=n.getAttribLocation(l,"aColor"),l.aCornerRadius=n.getAttribLocation(l,"aCornerRadius"),l.aBorderColor=n.getAttribLocation(l,"aBorderColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uZoom=n.getUniformLocation(l,"uZoom"),l.uTextures=[];for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:NT.SCREEN;this.panZoomMatrix=r,this.renderTarget=n,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.batchManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"_isVisible",value:o(function(r,n){return r.visible()?n&&n.isVisible?n.isVisible(r):!0:!1},"_isVisible")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager,s=this.batchManager,l=a.getRenderTypeOpts(i);if(this._isVisible(r,l)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&l.getTexPickingMode){var u=l.getTexPickingMode(r);if(u===lA.IGNORE)return;if(u==lA.USE_BB){this.drawPickingRectangle(r,n,i);return}}var h=a.getAtlasInfo(r,i),d=yo(h),f;try{for(d.s();!(f=d.n()).done;){var p=f.value,m=p.atlas,g=p.tex1,y=p.tex2;s.canAddToCurrentBatch(m)||this.endBatch();for(var v=s.getAtlasIndexForBatch(m),x=0,b=[[g,!0],[y,!1]];x=this.maxInstances&&this.endBatch()}}}}catch(I){d.e(I)}finally{d.f()}}},"drawTexture")},{key:"setTransformMatrix",value:o(function(r,n,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,l=0;if(i.shapeProps&&i.shapeProps.padding&&(l=r.pstyle(i.shapeProps.padding).pfValue),a){var u=a.bb,h=a.tex1,d=a.tex2,f=h.w/(h.w+d.w);s||(f=1-f);var p=this._getAdjustedBB(u,l,s,f);this._applyTransformMatrix(n,p,i,r)}else{var m=i.getBoundingBox(r),g=this._getAdjustedBB(m,l,!0,1);this._applyTransformMatrix(n,g,i,r)}},"setTransformMatrix")},{key:"_applyTransformMatrix",value:o(function(r,n,i,a){var s,l;Qxe(r);var u=i.getRotation?i.getRotation(a):0;if(u!==0){var h=i.getRotationPoint(a),d=h.x,f=h.y;X5(r,r,[d,f]),Jxe(r,r,u);var p=i.getRotationOffset(a);s=p.x+(n.xOffset||0),l=p.y+(n.yOffset||0)}else s=n.x1,l=n.y1;X5(r,r,[s,l]),dF(r,r,[n.w,n.h])},"_applyTransformMatrix")},{key:"_getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h,d=r.yOffset;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var f=0,p=u*a;return i&&a<1?u=p:!i&&a<1&&(f=u-p,s+=f,u=p),{x1:s,y1:l,w:u,h,xOffset:f,yOffset:d}},"_getAdjustedBB")},{key:"drawPickingRectangle",value:o(function(r,n,i){var a=this.atlasManager.getRenderTypeOpts(i),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=D1;var l=this.indexBuffer.getView(s);L1(n,l);var u=this.colorBuffer.getView(s);Xm([0,0,0],1,u);var h=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,h,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()},"drawPickingRectangle")},{key:"drawNode",value:o(function(r,n,i){var a=this.simpleShapeOptions.get(i);if(this._isVisible(r,a)){var s=a.shapeProps,l=this._getVertTypeForShape(r,s.shape);if(l===void 0||a.isSimple&&!a.isSimple(r,this.renderTarget)){this.drawTexture(r,n,i);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=l,l===$5||l===AT){var h=a.getBoundingBox(r),d=this._getCornerRadius(r,s.radius,h),f=this.cornerRadiusBuffer.getView(u);f[0]=d,f[1]=d,f[2]=d,f[3]=d,l===AT&&(f[0]=0,f[2]=0)}var p=this.indexBuffer.getView(u);L1(n,p);var m=this.renderTarget.picking?1:i==="node-body"?r.effectiveOpacity():1,g=this.renderTarget.picking?1:r.pstyle(s.opacity).value*m,y=r.pstyle(s.color).value,v=this.colorBuffer.getView(u);Xm(y,g,v);var x=this.lineWidthBuffer.getView(u);if(x[0]=0,x[1]=0,s.border){var b=r.pstyle("border-width").value;if(b>0){var T=r.pstyle("border-color").value,k=m*r.pstyle("border-opacity").value,C=this.borderColorBuffer.getView(u);Xm(T,k,C);var w=r.pstyle("border-position").value;if(w==="inside")x[0]=0,x[1]=-b;else if(w==="outside")x[0]=b,x[1]=0;else{var S=b/2;x[0]=S,x[1]=-S}}}var R=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,R,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},"drawNode")},{key:"_getVertTypeForShape",value:o(function(r,n){var i=r.pstyle(n).value;switch(i){case"rectangle":return D1;case"ellipse":return RT;case"roundrectangle":case"round-rectangle":return $5;case"bottom-round-rectangle":return AT;default:return}},"_getVertTypeForShape")},{key:"_getCornerRadius",value:o(function(r,n,i){var a=i.w,s=i.h;if(r.pstyle(n).value==="auto")return Wf(a,s);var l=r.pstyle(n).pfValue,u=a/2,h=s/2;return Math.min(l,h,u)},"_getCornerRadius")},{key:"drawEdgeArrow",value:o(function(r,n,i){if(r.visible()){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var d=r.pstyle(i+"-arrow-color").value,f=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=f*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.instanceCount,b=this.transformBuffer.getMatrixView(x);Qxe(b),X5(b,b,[s,l]),dF(b,b,[v,v]),Jxe(b,b,u),this.vertTypeBuffer.getView(x)[0]=U$;var T=this.indexBuffer.getView(x);L1(n,T);var k=this.colorBuffer.getView(x);Xm(d,m,k),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){if(r.visible()){var i=this._getEdgePoints(r);if(i){var a=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,l=r.pstyle("width").pfValue,u=r.pstyle("line-color").value,h=a*s;if(i.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),i.length==4){var d=this.instanceCount;this.vertTypeBuffer.getView(d)[0]=ebe;var f=this.indexBuffer.getView(d);L1(n,f);var p=this.colorBuffer.getView(d);Xm(u,h,p);var m=this.lineWidthBuffer.getView(d);m[0]=l;var g=this.pointAPointBBuffer.getView(d);g[0]=i[0],g[1]=i[1],g[2]=i[2],g[3]=i[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}}}},"drawEdgeLine")},{key:"_isValidEdge",value:o(function(r){var n=r._private.rscratch;return!(n.badLine||n.allpts==null||isNaN(n.allpts[0]))},"_isValidEdge")},{key:"_getEdgePoints",value:o(function(r){var n=r._private.rscratch;if(this._isValidEdge(r)){var i=n.allpts;if(i.length==4)return i;var a=this._getNumSegments(r);return this._getCurveSegmentPoints(i,a)}},"_getEdgePoints")},{key:"_getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"_getNumSegments")},{key:"_getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this._setCurvePoint(r,s,i,a*2)}return i},"_getCurveSegmentPoints")},{key:"_setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0}},"isLayerVisible"),l=o(function(f){var p=f.pstyle("text-events").strValue==="yes";return p?lA.USE_BB:lA.IGNORE},"getTexPickingMode"),u=o(function(f){var p=f.position(),m=p.x,g=p.y,y=f.outerWidth(),v=f.outerHeight();return{w:y,h:v,x1:m-y/2,y1:g-v/2}},"getBBForSimpleShape");r.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:u,isSimple:ogt,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:u,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:u,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getLabelKey,null),getBoundingBox:j$(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:i(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:a("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getSourceLabelKey,"source"),getBoundingBox:j$(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:i("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:a("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getTargetLabelKey,"target"),getBoundingBox:j$(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:i("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:a("target-label")});var h=KT(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(d,f){var p=!1;f&&f.length>0&&(p|=r.drawing.invalidate(f)),p&&h()}),Rgt(r)};o(Agt,"getBGColor");o(z2e,"getLabelLines");Y$=o(function(t,r){return function(n){var i=t(n),a=z2e(n,r);return a.length>1?a.map(function(s,l){return"".concat(i,"_").concat(l)}):i}},"getStyleKeysForLabel"),j$=o(function(t,r){return function(n,i){var a=t(n);if(typeof i=="string"){var s=i.indexOf("_");if(s>0){var l=Number(i.substring(s+1)),u=z2e(n,r),h=a.h/u.length,d=h*l,f=a.y1+d;return{x1:a.x1,w:a.w,y1:f,h,yOffset:d}}}return a}},"getBoundingBoxForLabel");o(Rgt,"overrideCanvasRendererFunctions");o(_gt,"clearWebgl");o(Lgt,"clearCanvas");o(Dgt,"createPanZoomMatrix");o(G2e,"setContextTransform");o(Igt,"drawSelectionRectangle");o(Mgt,"drawAxes");o(Ngt,"drawAtlases");o(Pgt,"getPickingIndexes");o(Ogt,"findNearestElementsWebgl");o(X$,"drawEle");o(V2e,"renderWebgl");Zf={};Zf.drawPolygonPath=function(e,t,r,n,i,a){var s=n/2,l=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(e.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=t.pan(),v={x:y.x*h,y:y.y*h};h*=t.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}e.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=e.bg,m.rect(0,0,a,s),m.fill())}return p};o(Bgt,"b64ToBlob");o(ibe,"b64UriToB64");o(q2e,"output");rC.png=function(e){return q2e(e,this.bufferCanvasImage(e),"image/png")};rC.jpg=function(e){return q2e(e,this.bufferCanvasImage(e),"image/jpeg")};H2e={};H2e.nodeShapeImpl=function(e,t,r,n,i,a,s,l){switch(e){case"ellipse":return this.drawEllipsePath(t,r,n,i,a);case"polygon":return this.drawPolygonPath(t,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(t,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,r,n,i,a,l);case"barrel":return this.drawBarrelPath(t,r,n,i,a)}};$gt=U2e,Kr=U2e.prototype;Kr.CANVAS_LAYERS=3;Kr.SELECT_BOX=0;Kr.DRAG=1;Kr.NODE=2;Kr.WEBGL=3;Kr.CANVAS_TYPES=["2d","2d","2d","webgl2"];Kr.BUFFER_COUNT=3;Kr.TEXTURE_BUFFER=0;Kr.MOTIONBLUR_BUFFER_NODE=1;Kr.MOTIONBLUR_BUFFER_DRAG=2;o(U2e,"CanvasRenderer");Kr.redrawHint=function(e,t){var r=this;switch(e){case"eles":r.data.canvasNeedsRedraw[Kr.NODE]=t;break;case"drag":r.data.canvasNeedsRedraw[Kr.DRAG]=t;break;case"select":r.data.canvasNeedsRedraw[Kr.SELECT_BOX]=t;break;case"gc":r.data.gc=!0;break}};Fgt=typeof Path2D<"u";Kr.path2dEnabled=function(e){if(e===void 0)return this.pathsEnabled;this.pathsEnabled=!!e};Kr.usePaths=function(){return Fgt&&this.pathsEnabled};Kr.setImgSmoothing=function(e,t){e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled=t:(e.webkitImageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t)};Kr.getImgSmoothing=function(e){return e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled:e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled};Kr.makeOffscreenCanvas=function(e,t){var r;if((typeof OffscreenCanvas>"u"?"undefined":ca(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(e,t);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=e,r.height=t}return r};[N2e,ku,$h,FF,lg,Kf,Ps,F2e,Zf,rC,H2e].forEach(function(e){br(Kr,e)});zgt=[{name:"null",impl:x2e},{name:"base",impl:L2e},{name:"canvas",impl:$gt}],Ggt=[{type:"layout",extensions:umt},{type:"renderer",extensions:zgt}],Y2e={},j2e={};o(X2e,"setExtension");o(K2e,"getExtension");o(Vgt,"setModule");o(Wgt,"getModule");mF=o(function(){if(arguments.length===2)return K2e.apply(null,arguments);if(arguments.length===3)return X2e.apply(null,arguments);if(arguments.length===4)return Wgt.apply(null,arguments);if(arguments.length===5)return Vgt.apply(null,arguments);pi("Invalid extension access syntax")},"extension");WT.prototype.extension=mF;Ggt.forEach(function(e){e.extensions.forEach(function(t){X2e(e.type,t.name,t.impl)})});cA=o(function(){if(!(this instanceof cA))return new cA;this.length=0},"Stylesheet"),sg=cA.prototype;sg.instanceString=function(){return"stylesheet"};sg.selector=function(e){var t=this.length++;return this[t]={selector:e,properties:[]},this};sg.css=function(e,t){var r=this.length-1;if(fr(e))this[r].properties.push({name:e,value:t});else if(cn(e))for(var n=e,i=Object.keys(n),a=0;a{"use strict";o((function(t,r){typeof nC=="object"&&typeof VF=="object"?VF.exports=r():typeof define=="function"&&define.amd?define([],r):typeof nC=="object"?nC.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(nC,function(){return(function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)})([(function(e,t,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,d){n.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(f,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&w>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(w,1);var k=x.source.owner.getEdges().indexOf(x);if(k==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(k,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),k=T.length,C=0;Cv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S,R=this.nodes,L=R.length,N=0;NT&&(y=T),vC&&(x=C),bT&&(y=T),vC&&(x=C),b=this.nodes.length){var L=0;v.forEach(function(N){N.owner==g&&L++}),L==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]f)return l[0]=u,l[1]=m,l[2]=d,l[3]=R,!1;if(hd)return l[0]=p,l[1]=h,l[2]=w,l[3]=f,!1;if(ud?(l[0]=y,l[1]=v,_=!0):(l[0]=g,l[1]=m,_=!0):M===P&&(u>d?(l[0]=p,l[1]=m,_=!0):(l[0]=x,l[1]=v,_=!0)),-D===P?d>u?(l[2]=S,l[3]=R,A=!0):(l[2]=w,l[3]=C,A=!0):D===P&&(d>u?(l[2]=k,l[3]=C,A=!0):(l[2]=L,l[3]=R,A=!0)),_&&A)return!1;if(u>d?h>f?(B=this.getCardinalDirection(M,P,4),O=this.getCardinalDirection(D,P,2)):(B=this.getCardinalDirection(-M,P,3),O=this.getCardinalDirection(-D,P,1)):h>f?(B=this.getCardinalDirection(-M,P,1),O=this.getCardinalDirection(-D,P,3)):(B=this.getCardinalDirection(M,P,2),O=this.getCardinalDirection(D,P,4)),!_)switch(B){case 1:V=m,$=u+-T/P,l[0]=$,l[1]=V;break;case 2:$=x,V=h+b*P,l[0]=$,l[1]=V;break;case 3:V=v,$=u+T/P,l[0]=$,l[1]=V;break;case 4:$=y,V=h+-b*P,l[0]=$,l[1]=V;break}if(!A)switch(O){case 1:z=C,G=d+-I/P,l[2]=G,l[3]=z;break;case 2:G=L,z=f+N*P,l[2]=G,l[3]=z;break;case 3:z=R,G=d+I/P,l[2]=G,l[3]=z;break;case 4:G=S,z=f+-N*P,l[2]=G,l[3]=z;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,k=void 0,C=void 0,w=void 0,S=void 0,R=void 0,L=void 0;return T=p-d,C=h-f,S=f*d-h*p,k=v-g,w=m-y,R=y*g-m*v,L=T*w-k*C,L===0?null:(x=(C*R-w*S)/L,b=(k*S-T*R)/L,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},e.exports=n}),(function(e,t,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function h(d,f){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},e.exports=i}),(function(e,t,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(C[0]);T.length>0&&g;){var w=T[0];T.splice(0,1),b.add(w);for(var S=w.getEdges(),x=0;x-1&&C.splice(I,1)}b=new Set,k=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(R,1);var L=k.getNeighborsList();L.forEach(function(_){if(y.indexOf(_)<0){var A=v.get(_),M=A-1;M==1&&w.push(_),v.set(_,M)}})}y=y.concat(w),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},e.exports=n}),(function(e,t,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=i}),(function(e,t,r){"use strict";function n(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement=x.length||T>=x[0].length)){for(var k=0;kh},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(t,r){typeof iC=="object"&&typeof qF=="object"?qF.exports=r(WF()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof iC=="object"?iC.coseBase=r(WF()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(iC,function(e){return(function(t){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=t,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)})([(function(t,r){t.exports=e}),(function(t,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=a}),(function(t,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,d,f){i.call(this,u,h,d,f)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var d=this.getChild().getNodes(),f,p=0;p0)this.positionNodesRadially(C);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var w=new Set(this.getAllNodes()),S=this.nodesWithGravity.filter(function(R){return w.has(R)});this.graphManager.setAllNodesToApplyGravitation(S),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var C=new Set(this.getAllNodes()),w=this.nodesWithGravity.filter(function(L){return C.has(L)});this.graphManager.setAllNodesToApplyGravitation(w),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var S=!this.isTreeGrowing&&!this.isGrowthFinished,R=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(S,R),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var C=this.graphManager.getAllNodes(),w={},S=0;S1){var _;for(_=0;_R&&(R=Math.floor(I.y)),N=Math.floor(I.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(f.WORLD_CENTER_X-I.x/2,f.WORLD_CENTER_Y-I.y/2))},T.radialLayout=function(C,w,S){var R=Math.max(this.maxDiagonalInTree(C),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(w,null,0,359,0,R);var L=x.calculateBounds(C),N=new b;N.setDeviceOrgX(L.getMinX()),N.setDeviceOrgY(L.getMinY()),N.setWorldOrgX(S.x),N.setWorldOrgY(S.y);for(var I=0;I1;){var W=z[0];z.splice(0,1);var H=B.indexOf(W);H>=0&&B.splice(H,1),V--,O--}w!=null?G=(B.indexOf(z[0])+1)%V:G=0;for(var j=Math.abs(R-S)/O,Q=G;$!=O;Q=++Q%V){var U=B[Q].getOtherEnd(C);if(U!=w){var oe=(S+$*j)%360,te=(oe+j)%360;T.branchRadialLayout(U,C,oe,te,L+N,N),$++}}},T.maxDiagonalInTree=function(C){for(var w=y.MIN_VALUE,S=0;Sw&&(w=L)}return w},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var C=this,w={};this.memberGroups={},this.idToDummyNode={};for(var S=[],R=this.graphManager.getAllNodes(),L=0;L"u"&&(w[_]=[]),w[_]=w[_].concat(N)}Object.keys(w).forEach(function(A){if(w[A].length>1){var M="DummyCompound_"+A;C.memberGroups[M]=w[A];var D=w[A][0].getParent(),P=new l(C.graphManager);P.id=M,P.paddingLeft=D.paddingLeft||0,P.paddingRight=D.paddingRight||0,P.paddingBottom=D.paddingBottom||0,P.paddingTop=D.paddingTop||0,C.idToDummyNode[M]=P;var B=C.getGraphManager().add(C.newGraph(),P),O=D.getChild();O.add(P);for(var $=0;$=0;C--){var w=this.compoundOrder[C],S=w.id,R=w.paddingLeft,L=w.paddingTop;this.adjustLocations(this.tiledMemberPack[S],w.rect.x,w.rect.y,R,L)}},T.prototype.repopulateZeroDegreeMembers=function(){var C=this,w=this.tiledZeroDegreePack;Object.keys(w).forEach(function(S){var R=C.idToDummyNode[S],L=R.paddingLeft,N=R.paddingTop;C.adjustLocations(w[S],R.rect.x,R.rect.y,L,N)})},T.prototype.getToBeTiled=function(C){var w=C.id;if(this.toBeTiled[w]!=null)return this.toBeTiled[w];var S=C.getChild();if(S==null)return this.toBeTiled[w]=!1,!1;for(var R=S.getNodes(),L=0;L0)return this.toBeTiled[w]=!1,!1;if(N.getChild()==null){this.toBeTiled[N.id]=!1;continue}if(!this.getToBeTiled(N))return this.toBeTiled[w]=!1,!1}return this.toBeTiled[w]=!0,!0},T.prototype.getNodeDegree=function(C){for(var w=C.id,S=C.getEdges(),R=0,L=0;LA&&(A=D.rect.height)}S+=A+C.verticalPadding}},T.prototype.tileCompoundMembers=function(C,w){var S=this;this.tiledMemberPack=[],Object.keys(C).forEach(function(R){var L=w[R];S.tiledMemberPack[R]=S.tileNodes(C[R],L.paddingLeft+L.paddingRight),L.rect.width=S.tiledMemberPack[R].width,L.rect.height=S.tiledMemberPack[R].height})},T.prototype.tileNodes=function(C,w){var S=h.TILING_PADDING_VERTICAL,R=h.TILING_PADDING_HORIZONTAL,L={rows:[],rowWidth:[],rowHeight:[],width:0,height:w,verticalPadding:S,horizontalPadding:R};C.sort(function(_,A){return _.rect.width*_.rect.height>A.rect.width*A.rect.height?-1:_.rect.width*_.rect.height0&&(I+=C.horizontalPadding),C.rowWidth[S]=I,C.width0&&(_+=C.verticalPadding);var A=0;_>C.rowHeight[S]&&(A=C.rowHeight[S],C.rowHeight[S]=_,A=C.rowHeight[S]-A),C.height+=A,C.rows[S].push(w)},T.prototype.getShortestRowIndex=function(C){for(var w=-1,S=Number.MAX_VALUE,R=0;RS&&(w=R,S=C.rowWidth[R]);return w},T.prototype.canAddHorizontal=function(C,w,S){var R=this.getShortestRowIndex(C);if(R<0)return!0;var L=C.rowWidth[R];if(L+C.horizontalPadding+w<=C.width)return!0;var N=0;C.rowHeight[R]0&&(N=S+C.verticalPadding-C.rowHeight[R]);var I;C.width-L>=w+C.horizontalPadding?I=(C.height+N)/(L+w+C.horizontalPadding):I=(C.height+N)/C.width,N=S+C.verticalPadding;var _;return C.widthN&&w!=S){R.splice(-1,1),C.rows[S].push(L),C.rowWidth[w]=C.rowWidth[w]-N,C.rowWidth[S]=C.rowWidth[S]+N,C.width=C.rowWidth[instance.getLongestRowIndex(C)];for(var I=Number.MIN_VALUE,_=0;_I&&(I=R[_].height);w>0&&(I+=C.verticalPadding);var A=C.rowHeight[w]+C.rowHeight[S];C.rowHeight[w]=I,C.rowHeight[S]0)for(var O=L;O<=N;O++)B[0]+=this.grid[O][I-1].length+this.grid[O][I].length-1;if(N0)for(var O=I;O<=_;O++)B[3]+=this.grid[L-1][O].length+this.grid[L][O].length-1;for(var $=y.MAX_VALUE,V,G,z=0;z{"use strict";o((function(t,r){typeof aC=="object"&&typeof UF=="object"?UF.exports=r(HF()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof aC=="object"?aC.cytoscapeCoseBilkent=r(HF()):t.cytoscapeCoseBilkent=r(t.coseBase)}),"webpackUniversalModuleDefinition")(aC,function(e){return(function(t){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=t,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)})([(function(t,r){t.exports=e}),(function(t,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,d=n(0).layoutBase.DimensionD,f={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var T in v)b[T]=v[T];for(var T in x)b[T]=x[T];return b}o(p,"extend");function m(v){this.options=p(f,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,T=this.idToLNode={},k=this.layout=new l,C=this;C.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var w=k.newGraphManager();this.gm=w;var S=this.options.eles.nodes(),R=this.options.eles.edges();this.root=w.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(S),k);for(var L=0;L0){var _;_=b.getGraphManager().add(b.newGraph(),S),this.processChildrenList(_,w,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),t.exports=y})])})});function Hgt(e,t){e.forEach(r=>{let n={id:r.id,labelText:r.label,height:r.height,width:r.width,padding:r.padding??0};Object.keys(r).forEach(i=>{["id","label","height","width","padding","x","y"].includes(i)||(n[i]=r[i])}),t.add({group:"nodes",data:n,position:{x:r.x??0,y:r.y??0}})})}function Ugt(e,t){e.forEach(r=>{let n={id:r.id,source:r.start,target:r.end};Object.keys(r).forEach(i=>{["id","start","end"].includes(i)||(n[i]=r[i])}),t.add({group:"edges",data:n})})}function J2e(e){return new Promise(t=>{let r=et("body").append("div").attr("id","cy").attr("style","display:none"),n=El({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});r.remove(),Hgt(e.nodes,n),Ugt(e.edges,n),n.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}});let i={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(i).run(),n.ready(a=>{Z.info("Cytoscape ready",a),t(n)})})}function eTe(e){return e.nodes().map(t=>{let r=t.data(),n=t.position(),i={id:r.id,x:n.x,y:n.y};return Object.keys(r).forEach(a=>{a!=="id"&&(i[a]=r[a])}),i})}function tTe(e){return e.edges().map(t=>{let r=t.data(),n=t._private.rscratch,i={id:r.id,source:r.source,target:r.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(r).forEach(a=>{["id","source","target"].includes(a)||(i[a]=r[a])}),i})}var Q2e,rTe=F(()=>{"use strict";GF();Q2e=Xs(Z2e(),1);$r();vt();El.use(Q2e.default);o(Hgt,"addNodes");o(Ugt,"addEdges");o(J2e,"createCytoscapeInstance");o(eTe,"extractPositionedNodes");o(tTe,"extractPositionedEdges")});async function nTe(e,t){Z.debug("Starting cose-bilkent layout algorithm");try{Ygt(e);let r=await J2e(e),n=eTe(r),i=tTe(r);return Z.debug(`Layout completed: ${n.length} nodes, ${i.length} edges`),{nodes:n,edges:i}}catch(r){throw Z.error("Error in cose-bilkent layout algorithm:",r),r}}function Ygt(e){if(!e)throw new Error("Layout data is required");if(!e.config)throw new Error("Configuration is required in layout data");if(!e.rootNode)throw new Error("Root node is required");if(!e.nodes||!Array.isArray(e.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(e.edges))throw new Error("Edges array is required in layout data");return!0}var iTe=F(()=>{"use strict";vt();rTe();o(nTe,"executeCoseBilkentLayout");o(Ygt,"validateLayoutData")});var aTe,sTe=F(()=>{"use strict";iTe();aTe=o(async(e,t,{insertCluster:r,insertEdge:n,insertEdgeLabel:i,insertMarkers:a,insertNode:s,log:l,positionEdgeLabel:u},{algorithm:h})=>{let d={},f={},p=t.select("g");a(p,e.markers,e.type,e.diagramId);let m=p.insert("g").attr("class","subgraphs"),g=p.insert("g").attr("class","edgePaths"),y=p.insert("g").attr("class","edgeLabels"),v=p.insert("g").attr("class","nodes");l.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(e.nodes.map(async T=>{if(T.isGroup){let k={...T};f[T.id]=k,d[T.id]=k,await r(m,T)}else{let k={...T};d[T.id]=k;let C=await s(v,T,{config:e.config,dir:e.direction||"TB"}),w=C.node().getBBox();k.width=w.width,k.height=w.height,k.domId=C,l.debug(`Node ${T.id} dimensions: ${w.width}x${w.height}`)}})),l.debug("Running cose-bilkent layout algorithm");let x={...e,nodes:e.nodes.map(T=>{let k=d[T.id];return{...T,width:k.width,height:k.height}})},b=await nTe(x,e.config);l.debug("Positioning nodes based on layout results"),b.nodes.forEach(T=>{let k=d[T.id];k?.domId&&(k.domId.attr("transform",`translate(${T.x}, ${T.y})`),k.x=T.x,k.y=T.y,l.debug(`Positioned node ${k.id} at center (${T.x}, ${T.y})`))}),b.edges.forEach(T=>{let k=e.edges.find(C=>C.id===T.id);k&&(k.points=[{x:T.startX,y:T.startY},{x:T.midX,y:T.midY},{x:T.endX,y:T.endY}])}),l.debug("Inserting and positioning edges"),await Promise.all(e.edges.map(async T=>{let k=await i(y,T),C=d[T.start??""],w=d[T.end??""];if(C&&w){let S=b.edges.find(R=>R.id===T.id);if(S){l.debug("APA01 positionedEdge",S);let R={...T},L=n(g,R,f,e.type,C,w,e.diagramId);u(R,L)}else{let R={...T,points:[{x:C.x||0,y:C.y||0},{x:w.x||0,y:w.y||0}]},L=n(g,R,f,e.type,C,w,e.diagramId);u(R,L)}}})),l.debug("Cose-bilkent rendering completed")},"render")});var oTe={};ir(oTe,{render:()=>jgt});var jgt,lTe=F(()=>{"use strict";sTe();jgt=aTe});var sC,YF,Xgt,Al,Su,Qf=F(()=>{"use strict";Qce();vt();sC={},YF=o(e=>{for(let t of e)sC[t.name]=t},"registerLayoutLoaders"),Xgt=o(()=>{YF([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(C0e(),T0e)),"loader")},{name:"swimlane",loader:o(async()=>await Promise.resolve().then(()=>(L1e(),_1e)),"loader")},{name:"cose-bilkent",loader:o(async()=>await Promise.resolve().then(()=>(lTe(),oTe)),"loader")}])},"registerDefaultLayoutLoaders");Xgt();Al=o(async(e,t,r)=>{if(!(e.layoutAlgorithm in sC))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let f of e.nodes){let p=f.domId||f.id;f.domId=`${e.diagramId}-${p}`}let n=sC[e.layoutAlgorithm],i=await n.loader(),{theme:a,themeVariables:s}=e.config,{useGradient:l,gradientStart:u,gradientStop:h}=s,d=t.attr("id");if(t.append("defs").append("filter").attr("id",`${d}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${a?.includes("dark")?"#FFFFFF":"#000000"}`),t.append("defs").append("filter").attr("id",`${d}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${a?.includes("dark")?"#FFFFFF":"#000000"}`),l){let f=t.append("linearGradient").attr("id",t.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");f.append("svg:stop").attr("offset","0%").attr("stop-color",u).attr("stop-opacity",1),f.append("svg:stop").attr("offset","100%").attr("stop-color",h).attr("stop-opacity",1)}return i.render(e,t,Zce,{algorithm:n.algorithm},r)},"render"),Su=o((e="",{fallback:t="dagre"}={})=>{if(e in sC)return e;if(t in sC)return Z.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw new Error(`Both layout algorithms ${e} and ${t} are not registered.`)},"getRegisteredLayoutAlgorithm")});var vo,Kgt,Zgt,Jf=F(()=>{"use strict";$n();vt();vo=o((e,t,r,n)=>{e.attr("class",r);let{width:i,height:a,x:s,y:l}=Kgt(e,t);Wr(e,a,i,n);let u=Zgt(s,l,i,a,t);e.attr("viewBox",u),Z.debug(`viewBox configured: ${u} with padding: ${t}`)},"setupViewPortForSVG"),Kgt=o((e,t)=>{let r=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+t*2,height:r.height+t*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),Zgt=o((e,t,r,n,i)=>`${e-i} ${t-i} ${r} ${n}`,"createViewBox")});var Qgt,Jgt,cTe,uTe=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();Qgt=o(function(e,t){return t.db.getClasses()},"getClasses"),Jgt=o(async function(e,t,r,n,i){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:a,flowchart:s,layout:l}=Ae();n.db.setDiagramId(t),Z.debug("Before getData: ");let u=n.db.getData();Z.debug("Data: ",u);let h=pl(t,a),d=n.db.getDirection();u.type=n.type,u.layoutAlgorithm=Su(l),u.layoutAlgorithm==="dagre"&&l==="elk"&&Z.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),u.direction=d,u.nodeSpacing=s?.nodeSpacing||50,u.rankSpacing=s?.rankSpacing||50,u.markers=["point","circle","cross"],u.diagramId=t,Z.debug("REF1:",u),await Al(u,h,i);let f=u.config.flowchart?.diagramPadding??8;Zt.insertTitle(h,"flowchartTitleText",s?.titleTopMargin||0,n.db.getDiagramTitle()),vo(h,f,"flowchart",s?.useMaxWidth||!1)},"draw"),cTe={getClasses:Qgt,draw:Jgt}});var jF,XF,hTe=F(()=>{"use strict";jF=(function(){var e=o(function(kt,Ct,Ot,Ft){for(Ot=Ot||{},Ft=kt.length;Ft--;Ot[kt[Ft]]=Ct);return Ot},"o"),t=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],d=[1,23],f=[1,25],p=[1,26],m=[1,27],g=[1,50],y=[1,49],v=[1,29],x=[1,30],b=[1,31],T=[1,32],k=[1,33],C=[1,45],w=[1,47],S=[1,43],R=[1,48],L=[1,44],N=[1,51],I=[1,46],_=[1,52],A=[1,53],M=[1,34],D=[1,35],P=[1,36],B=[1,37],O=[1,38],$=[1,58],V=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],G=[1,62],z=[1,61],W=[1,63],H=[8,9,11,75,77,78],j=[1,79],Q=[1,92],U=[1,97],oe=[1,96],te=[1,93],le=[1,89],ie=[1,95],ae=[1,91],Re=[1,98],be=[1,94],Pe=[1,99],Ge=[1,90],Oe=[8,9,10,11,40,75,77,78],ue=[8,9,10,11,40,46,75,77,78],ye=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],ke=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],ce=[44,60,89,102,105,106,109,111,114,115,116],re=[1,122],J=[1,123],se=[1,125],ge=[1,124],Te=[44,60,62,74,89,102,105,106,109,111,114,115,116],we=[1,134],Me=[1,148],ve=[1,149],ne=[1,150],q=[1,151],he=[1,136],X=[1,138],fe=[1,142],K=[1,143],qe=[1,144],_e=[1,145],Be=[1,146],Ne=[1,147],He=[1,152],$e=[1,153],Xe=[1,132],Fe=[1,133],Ke=[1,140],xe=[1,135],mt=[1,139],Le=[1,137],ft=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],wt=[1,155],zt=[1,157],St=[8,9,11],At=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],bt=[1,177],me=[1,173],lt=[1,174],gt=[1,178],Ze=[1,175],Ee=[1,176],tt=[77,116,119],at=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],ot=[10,106],Wt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Bt=[1,248],qt=[1,246],vr=[1,250],Tt=[1,244],De=[1,245],it=[1,247],We=[1,249],rt=[1,251],yt=[1,269],Yt=[8,9,11,106],Ht=[8,9,10,11,60,84,105,106,109,110,111,112],pr={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,direction_td:125,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr",125:"direction_td"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(Ct,Ot,Ft,Rt,gr,Se,ri){var Ie=Se.length-1;switch(gr){case 2:this.$=[];break;case 3:(!Array.isArray(Se[Ie])||Se[Ie].length>0)&&Se[Ie-1].push(Se[Ie]),this.$=Se[Ie-1];break;case 4:case 183:this.$=Se[Ie];break;case 11:Rt.setDirection("TB"),this.$="TB";break;case 12:Rt.setDirection(Se[Ie-1]),this.$=Se[Ie-1];break;case 27:this.$=Se[Ie-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=Rt.addSubGraph(Se[Ie-6],Se[Ie-1],Se[Ie-4]);break;case 34:this.$=Rt.addSubGraph(Se[Ie-3],Se[Ie-1],Se[Ie-3]);break;case 35:this.$=Rt.addSubGraph(void 0,Se[Ie-1],void 0);break;case 37:this.$=Se[Ie].trim(),Rt.setAccTitle(this.$);break;case 38:case 39:this.$=Se[Ie].trim(),Rt.setAccDescription(this.$);break;case 43:this.$=Se[Ie-1]+Se[Ie];break;case 44:this.$=Se[Ie];break;case 45:Rt.addVertex(Se[Ie-1][Se[Ie-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie]),Rt.addLink(Se[Ie-3].stmt,Se[Ie-1],Se[Ie-2]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1].concat(Se[Ie-3].nodes)};break;case 46:Rt.addLink(Se[Ie-2].stmt,Se[Ie],Se[Ie-1]),this.$={stmt:Se[Ie],nodes:Se[Ie].concat(Se[Ie-2].nodes)};break;case 47:Rt.addLink(Se[Ie-3].stmt,Se[Ie-1],Se[Ie-2]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1].concat(Se[Ie-3].nodes)};break;case 48:this.$={stmt:Se[Ie-1],nodes:Se[Ie-1]};break;case 49:Rt.addVertex(Se[Ie-1][Se[Ie-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1],shapeData:Se[Ie]};break;case 50:this.$={stmt:Se[Ie],nodes:Se[Ie]};break;case 51:this.$=[Se[Ie]];break;case 52:Rt.addVertex(Se[Ie-5][Se[Ie-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie-4]),this.$=Se[Ie-5].concat(Se[Ie]);break;case 53:this.$=Se[Ie-4].concat(Se[Ie]);break;case 54:this.$=Se[Ie];break;case 55:this.$=Se[Ie-2],Rt.setClass(Se[Ie-2],Se[Ie]);break;case 56:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"square");break;case 57:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"doublecircle");break;case 58:this.$=Se[Ie-5],Rt.addVertex(Se[Ie-5],Se[Ie-2],"circle");break;case 59:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"ellipse");break;case 60:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"stadium");break;case 61:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"subroutine");break;case 62:this.$=Se[Ie-7],Rt.addVertex(Se[Ie-7],Se[Ie-1],"rect",void 0,void 0,void 0,Object.fromEntries([[Se[Ie-5],Se[Ie-3]]]));break;case 63:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"cylinder");break;case 64:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"round");break;case 65:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"diamond");break;case 66:this.$=Se[Ie-5],Rt.addVertex(Se[Ie-5],Se[Ie-2],"hexagon");break;case 67:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"odd");break;case 68:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"trapezoid");break;case 69:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"inv_trapezoid");break;case 70:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"lean_right");break;case 71:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"lean_left");break;case 72:this.$=Se[Ie],Rt.addVertex(Se[Ie]);break;case 73:Se[Ie-1].text=Se[Ie],this.$=Se[Ie-1];break;case 74:case 75:Se[Ie-2].text=Se[Ie-1],this.$=Se[Ie-2];break;case 76:this.$=Se[Ie];break;case 77:var Nr=Rt.destructLink(Se[Ie],Se[Ie-2]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,text:Se[Ie-1]};break;case 78:var Nr=Rt.destructLink(Se[Ie],Se[Ie-2]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,text:Se[Ie-1],id:Se[Ie-3]};break;case 79:this.$={text:Se[Ie],type:"text"};break;case 80:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 81:this.$={text:Se[Ie],type:"string"};break;case 82:this.$={text:Se[Ie],type:"markdown"};break;case 83:var Nr=Rt.destructLink(Se[Ie]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length};break;case 84:var Nr=Rt.destructLink(Se[Ie]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,id:Se[Ie-1]};break;case 85:this.$=Se[Ie-1];break;case 86:this.$={text:Se[Ie],type:"text"};break;case 87:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 88:this.$={text:Se[Ie],type:"string"};break;case 89:case 104:this.$={text:Se[Ie],type:"markdown"};break;case 101:this.$={text:Se[Ie],type:"text"};break;case 102:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 103:this.$={text:Se[Ie],type:"text"};break;case 105:this.$=Se[Ie-4],Rt.addClass(Se[Ie-2],Se[Ie]);break;case 106:this.$=Se[Ie-4],Rt.setClass(Se[Ie-2],Se[Ie]);break;case 107:case 115:this.$=Se[Ie-1],Rt.setClickEvent(Se[Ie-1],Se[Ie]);break;case 108:case 116:this.$=Se[Ie-3],Rt.setClickEvent(Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-3],Se[Ie]);break;case 109:this.$=Se[Ie-2],Rt.setClickEvent(Se[Ie-2],Se[Ie-1],Se[Ie]);break;case 110:this.$=Se[Ie-4],Rt.setClickEvent(Se[Ie-4],Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-4],Se[Ie]);break;case 111:this.$=Se[Ie-2],Rt.setLink(Se[Ie-2],Se[Ie]);break;case 112:this.$=Se[Ie-4],Rt.setLink(Se[Ie-4],Se[Ie-2]),Rt.setTooltip(Se[Ie-4],Se[Ie]);break;case 113:this.$=Se[Ie-4],Rt.setLink(Se[Ie-4],Se[Ie-2],Se[Ie]);break;case 114:this.$=Se[Ie-6],Rt.setLink(Se[Ie-6],Se[Ie-4],Se[Ie]),Rt.setTooltip(Se[Ie-6],Se[Ie-2]);break;case 117:this.$=Se[Ie-1],Rt.setLink(Se[Ie-1],Se[Ie]);break;case 118:this.$=Se[Ie-3],Rt.setLink(Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-3],Se[Ie]);break;case 119:this.$=Se[Ie-3],Rt.setLink(Se[Ie-3],Se[Ie-2],Se[Ie]);break;case 120:this.$=Se[Ie-5],Rt.setLink(Se[Ie-5],Se[Ie-4],Se[Ie]),Rt.setTooltip(Se[Ie-5],Se[Ie-2]);break;case 121:this.$=Se[Ie-4],Rt.addVertex(Se[Ie-2],void 0,void 0,Se[Ie]);break;case 122:this.$=Se[Ie-4],Rt.updateLink([Se[Ie-2]],Se[Ie]);break;case 123:this.$=Se[Ie-4],Rt.updateLink(Se[Ie-2],Se[Ie]);break;case 124:this.$=Se[Ie-8],Rt.updateLinkInterpolate([Se[Ie-6]],Se[Ie-2]),Rt.updateLink([Se[Ie-6]],Se[Ie]);break;case 125:this.$=Se[Ie-8],Rt.updateLinkInterpolate(Se[Ie-6],Se[Ie-2]),Rt.updateLink(Se[Ie-6],Se[Ie]);break;case 126:this.$=Se[Ie-6],Rt.updateLinkInterpolate([Se[Ie-4]],Se[Ie]);break;case 127:this.$=Se[Ie-6],Rt.updateLinkInterpolate(Se[Ie-4],Se[Ie]);break;case 128:case 130:this.$=[Se[Ie]];break;case 129:case 131:Se[Ie-2].push(Se[Ie]),this.$=Se[Ie-2];break;case 133:this.$=Se[Ie-1]+Se[Ie];break;case 181:this.$=Se[Ie];break;case 182:this.$=Se[Ie-1]+""+Se[Ie];break;case 184:this.$=Se[Ie-1]+""+Se[Ie];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break;case 189:this.$={stmt:"dir",value:"TD"};break}},"anonymous"),table:[{3:1,4:2,9:t,10:r,12:n},{1:[3]},e(i,a,{5:6}),{4:7,9:t,10:r,12:n},{4:8,9:t,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),{8:[1,55],9:[1,56],10:$,15:54,18:57},e(V,[2,3]),e(V,[2,4]),e(V,[2,5]),e(V,[2,6]),e(V,[2,7]),e(V,[2,8]),{8:G,9:z,11:W,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:G,9:z,11:W,21:68},{8:G,9:z,11:W,21:69},{8:G,9:z,11:W,21:70},{8:G,9:z,11:W,21:71},{8:G,9:z,11:W,21:72},{8:G,9:z,10:[1,73],11:W,21:74},e(V,[2,36]),{35:[1,75]},{37:[1,76]},e(V,[2,39]),e(H,[2,50],{18:77,39:78,10:$,40:j}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:Q,44:U,60:oe,80:[1,87],89:te,95:[1,84],97:[1,85],101:86,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},e(V,[2,185]),e(V,[2,186]),e(V,[2,187]),e(V,[2,188]),e(V,[2,189]),e(Oe,[2,51]),e(Oe,[2,54],{46:[1,100]}),e(ue,[2,72],{113:113,29:[1,101],44:g,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:y,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),e(ye,[2,181]),e(ye,[2,142]),e(ye,[2,143]),e(ye,[2,144]),e(ye,[2,145]),e(ye,[2,146]),e(ye,[2,147]),e(ye,[2,148]),e(ye,[2,149]),e(ye,[2,150]),e(ye,[2,151]),e(ye,[2,152]),e(i,[2,12]),e(i,[2,18]),e(i,[2,19]),{9:[1,114]},e(ke,[2,26],{18:115,10:$}),e(V,[2,27]),{42:116,43:39,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(V,[2,40]),e(V,[2,41]),e(V,[2,42]),e(ce,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:re,81:J,116:se,119:ge},{75:[1,126],77:[1,127]},e(Te,[2,83]),e(V,[2,28]),e(V,[2,29]),e(V,[2,30]),e(V,[2,31]),e(V,[2,32]),{10:we,12:Me,14:ve,27:ne,28:128,32:q,44:he,60:X,75:fe,80:[1,130],81:[1,131],83:141,84:K,85:qe,86:_e,87:Be,88:Ne,89:He,90:$e,91:129,105:Xe,109:Fe,111:Ke,114:xe,115:mt,116:Le},e(ft,a,{5:154}),e(V,[2,37]),e(V,[2,38]),e(H,[2,48],{44:wt}),e(H,[2,49],{18:156,10:$,40:zt}),e(Oe,[2,44]),{44:g,47:158,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{102:[1,159],103:160,105:[1,161]},{44:g,47:162,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{44:g,47:163,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},e(St,[2,115],{120:168,10:[1,167],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,117],{10:[1,169]}),e(At,[2,183]),e(At,[2,170]),e(At,[2,171]),e(At,[2,172]),e(At,[2,173]),e(At,[2,174]),e(At,[2,175]),e(At,[2,176]),e(At,[2,177]),e(At,[2,178]),e(At,[2,179]),e(At,[2,180]),{44:g,47:170,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{30:171,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:179,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:181,50:[1,180],67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:182,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:183,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:184,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{109:[1,185]},{30:186,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:187,65:[1,188],67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:189,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:190,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:191,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ye,[2,182]),e(i,[2,20]),e(ke,[2,25]),e(H,[2,46],{39:192,18:193,10:$,40:j}),e(ce,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{77:[1,197],79:198,116:se,119:ge},e(tt,[2,79]),e(tt,[2,81]),e(tt,[2,82]),e(tt,[2,168]),e(tt,[2,169]),{76:199,79:121,80:re,81:J,116:se,119:ge},e(Te,[2,84]),{8:G,9:z,10:we,11:W,12:Me,14:ve,21:201,27:ne,29:[1,200],32:q,44:he,60:X,75:fe,83:141,84:K,85:qe,86:_e,87:Be,88:Ne,89:He,90:$e,91:202,105:Xe,109:Fe,111:Ke,114:xe,115:mt,116:Le},e(at,[2,101]),e(at,[2,103]),e(at,[2,104]),e(at,[2,157]),e(at,[2,158]),e(at,[2,159]),e(at,[2,160]),e(at,[2,161]),e(at,[2,162]),e(at,[2,163]),e(at,[2,164]),e(at,[2,165]),e(at,[2,166]),e(at,[2,167]),e(at,[2,90]),e(at,[2,91]),e(at,[2,92]),e(at,[2,93]),e(at,[2,94]),e(at,[2,95]),e(at,[2,96]),e(at,[2,97]),e(at,[2,98]),e(at,[2,99]),e(at,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,203],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},{10:$,18:204},{44:[1,205]},e(Oe,[2,43]),{10:[1,206],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{10:[1,207]},{10:[1,208],106:[1,209]},e(ot,[2,128]),{10:[1,210],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{10:[1,211],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{80:[1,212]},e(St,[2,109],{10:[1,213]}),e(St,[2,111],{10:[1,214]}),{80:[1,215]},e(At,[2,184]),{80:[1,216],98:[1,217]},e(Oe,[2,55],{113:113,44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),{31:[1,218],67:bt,82:219,116:gt,117:Ze,118:Ee},e(Wt,[2,86]),e(Wt,[2,88]),e(Wt,[2,89]),e(Wt,[2,153]),e(Wt,[2,154]),e(Wt,[2,155]),e(Wt,[2,156]),{49:[1,220],67:bt,82:219,116:gt,117:Ze,118:Ee},{30:221,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{51:[1,222],67:bt,82:219,116:gt,117:Ze,118:Ee},{53:[1,223],67:bt,82:219,116:gt,117:Ze,118:Ee},{55:[1,224],67:bt,82:219,116:gt,117:Ze,118:Ee},{57:[1,225],67:bt,82:219,116:gt,117:Ze,118:Ee},{60:[1,226]},{64:[1,227],67:bt,82:219,116:gt,117:Ze,118:Ee},{66:[1,228],67:bt,82:219,116:gt,117:Ze,118:Ee},{30:229,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{31:[1,230],67:bt,82:219,116:gt,117:Ze,118:Ee},{67:bt,69:[1,231],71:[1,232],82:219,116:gt,117:Ze,118:Ee},{67:bt,69:[1,234],71:[1,233],82:219,116:gt,117:Ze,118:Ee},e(H,[2,45],{18:156,10:$,40:zt}),e(H,[2,47],{44:wt}),e(ce,[2,75]),e(ce,[2,74]),{62:[1,235],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ce,[2,77]),e(tt,[2,80]),{77:[1,236],79:198,116:se,119:ge},{30:237,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ft,a,{5:238}),e(at,[2,102]),e(V,[2,35]),{43:239,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{10:$,18:240},{10:Bt,60:qt,84:vr,92:241,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:252,104:[1,253],105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:254,104:[1,255],105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{105:[1,256]},{10:Bt,60:qt,84:vr,92:257,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{44:g,47:258,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},e(St,[2,116]),e(St,[2,118],{10:[1,262]}),e(St,[2,119]),e(ue,[2,56]),e(Wt,[2,87]),e(ue,[2,57]),{51:[1,263],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ue,[2,64]),e(ue,[2,59]),e(ue,[2,60]),e(ue,[2,61]),{109:[1,264]},e(ue,[2,63]),e(ue,[2,65]),{66:[1,265],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ue,[2,67]),e(ue,[2,68]),e(ue,[2,70]),e(ue,[2,69]),e(ue,[2,71]),e([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),e(ce,[2,78]),{31:[1,266],67:bt,82:219,116:gt,117:Ze,118:Ee},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,267],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},e(Oe,[2,53]),{43:268,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,121],{106:yt}),e(Yt,[2,130],{108:270,10:Bt,60:qt,84:vr,105:Tt,109:De,110:it,111:We,112:rt}),e(Ht,[2,132]),e(Ht,[2,134]),e(Ht,[2,135]),e(Ht,[2,136]),e(Ht,[2,137]),e(Ht,[2,138]),e(Ht,[2,139]),e(Ht,[2,140]),e(Ht,[2,141]),e(St,[2,122],{106:yt}),{10:[1,271]},e(St,[2,123],{106:yt}),{10:[1,272]},e(ot,[2,129]),e(St,[2,105],{106:yt}),e(St,[2,106],{113:113,44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),e(St,[2,110]),e(St,[2,112],{10:[1,273]}),e(St,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:G,9:z,11:W,21:278},e(V,[2,34]),e(Oe,[2,52]),{10:Bt,60:qt,84:vr,105:Tt,107:279,108:243,109:De,110:it,111:We,112:rt},e(Ht,[2,133]),{14:Q,44:U,60:oe,89:te,101:280,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},{14:Q,44:U,60:oe,89:te,101:281,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},{98:[1,282]},e(St,[2,120]),e(ue,[2,58]),{30:283,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ue,[2,66]),e(ft,a,{5:284}),e(Yt,[2,131],{108:270,10:Bt,60:qt,84:vr,105:Tt,109:De,110:it,111:We,112:rt}),e(St,[2,126],{120:168,10:[1,285],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,127],{120:168,10:[1,286],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,114]),{31:[1,287],67:bt,82:219,116:gt,117:Ze,118:Ee},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,288],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},{10:Bt,60:qt,84:vr,92:289,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:290,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},e(ue,[2,62]),e(V,[2,33]),e(St,[2,124],{106:yt}),e(St,[2,125],{106:yt})],defaultActions:{},parseError:o(function(Ct,Ot){if(Ot.recoverable)this.trace(Ct);else{var Ft=new Error(Ct);throw Ft.hash=Ot,Ft}},"parseError"),parse:o(function(Ct){var Ot=this,Ft=[0],Rt=[],gr=[null],Se=[],ri=this.table,Ie="",Nr=0,Pa=0,Xu=0,B0=2,$0=1,dk=Se.slice.call(arguments,1),Pi=Object.create(this.lexer),Mc={yy:{}};for(var Px in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Px)&&(Mc.yy[Px]=this.yy[Px]);Pi.setInput(Ct,Mc.yy),Mc.yy.lexer=Pi,Mc.yy.parser=this,typeof Pi.yylloc>"u"&&(Pi.yylloc={});var bd=Pi.yylloc;Se.push(bd);var fk=Pi.options&&Pi.options.ranges;typeof Mc.yy.parseError=="function"?this.parseError=Mc.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function js(Do){Ft.length=Ft.length-2*Do,gr.length=gr.length-Do,Se.length=Se.length-Do}o(js,"popStack");function RD(){var Do;return Do=Rt.pop()||Pi.lex()||$0,typeof Do!="number"&&(Do instanceof Array&&(Rt=Do,Do=Rt.pop()),Do=Ot.symbols_[Do]||Do),Do}o(RD,"lex");for(var ys,_D,Op,nl,rOt,LD,F0={},pk,Ku,OX,mk;;){if(Op=Ft[Ft.length-1],this.defaultActions[Op]?nl=this.defaultActions[Op]:((ys===null||typeof ys>"u")&&(ys=RD()),nl=ri[Op]&&ri[Op][ys]),typeof nl>"u"||!nl.length||!nl[0]){var DD="";mk=[];for(pk in ri[Op])this.terminals_[pk]&&pk>B0&&mk.push("'"+this.terminals_[pk]+"'");Pi.showPosition?DD="Parse error on line "+(Nr+1)+`: +`+Pi.showPosition()+` +Expecting `+mk.join(", ")+", got '"+(this.terminals_[ys]||ys)+"'":DD="Parse error on line "+(Nr+1)+": Unexpected "+(ys==$0?"end of input":"'"+(this.terminals_[ys]||ys)+"'"),this.parseError(DD,{text:Pi.match,token:this.terminals_[ys]||ys,line:Pi.yylineno,loc:bd,expected:mk})}if(nl[0]instanceof Array&&nl.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Op+", token: "+ys);switch(nl[0]){case 1:Ft.push(ys),gr.push(Pi.yytext),Se.push(Pi.yylloc),Ft.push(nl[1]),ys=null,_D?(ys=_D,_D=null):(Pa=Pi.yyleng,Ie=Pi.yytext,Nr=Pi.yylineno,bd=Pi.yylloc,Xu>0&&Xu--);break;case 2:if(Ku=this.productions_[nl[1]][1],F0.$=gr[gr.length-Ku],F0._$={first_line:Se[Se.length-(Ku||1)].first_line,last_line:Se[Se.length-1].last_line,first_column:Se[Se.length-(Ku||1)].first_column,last_column:Se[Se.length-1].last_column},fk&&(F0._$.range=[Se[Se.length-(Ku||1)].range[0],Se[Se.length-1].range[1]]),LD=this.performAction.apply(F0,[Ie,Pa,Nr,Mc.yy,nl[1],gr,Se].concat(dk)),typeof LD<"u")return LD;Ku&&(Ft=Ft.slice(0,-1*Ku*2),gr=gr.slice(0,-1*Ku),Se=Se.slice(0,-1*Ku)),Ft.push(this.productions_[nl[1]][0]),gr.push(F0.$),Se.push(F0._$),OX=ri[Ft[Ft.length-2]][Ft[Ft.length-1]],Ft.push(OX);break;case 3:return!0}}return!0},"parse")},Hr=(function(){var kt={EOF:1,parseError:o(function(Ot,Ft){if(this.yy.parser)this.yy.parser.parseError(Ot,Ft);else throw new Error(Ot)},"parseError"),setInput:o(function(Ct,Ot){return this.yy=Ot||this.yy||{},this._input=Ct,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ct=this._input[0];this.yytext+=Ct,this.yyleng++,this.offset++,this.match+=Ct,this.matched+=Ct;var Ot=Ct.match(/(?:\r\n?|\n).*/g);return Ot?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ct},"input"),unput:o(function(Ct){var Ot=Ct.length,Ft=Ct.split(/(?:\r\n?|\n)/g);this._input=Ct+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ot),this.offset-=Ot;var Rt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ft.length-1&&(this.yylineno-=Ft.length-1);var gr=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ft?(Ft.length===Rt.length?this.yylloc.first_column:0)+Rt[Rt.length-Ft.length].length-Ft[0].length:this.yylloc.first_column-Ot},this.options.ranges&&(this.yylloc.range=[gr[0],gr[0]+this.yyleng-Ot]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ct){this.unput(this.match.slice(Ct))},"less"),pastInput:o(function(){var Ct=this.matched.substr(0,this.matched.length-this.match.length);return(Ct.length>20?"...":"")+Ct.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ct=this.match;return Ct.length<20&&(Ct+=this._input.substr(0,20-Ct.length)),(Ct.substr(0,20)+(Ct.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ct=this.pastInput(),Ot=new Array(Ct.length+1).join("-");return Ct+this.upcomingInput()+` +`+Ot+"^"},"showPosition"),test_match:o(function(Ct,Ot){var Ft,Rt,gr;if(this.options.backtrack_lexer&&(gr={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(gr.yylloc.range=this.yylloc.range.slice(0))),Rt=Ct[0].match(/(?:\r\n?|\n).*/g),Rt&&(this.yylineno+=Rt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Rt?Rt[Rt.length-1].length-Rt[Rt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ct[0].length},this.yytext+=Ct[0],this.match+=Ct[0],this.matches=Ct,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ct[0].length),this.matched+=Ct[0],Ft=this.performAction.call(this,this.yy,this,Ot,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ft)return Ft;if(this._backtrack){for(var Se in gr)this[Se]=gr[Se];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ct,Ot,Ft,Rt;this._more||(this.yytext="",this.match="");for(var gr=this._currentRules(),Se=0;SeOt[0].length)){if(Ot=Ft,Rt=Se,this.options.backtrack_lexer){if(Ct=this.test_match(Ft,gr[Se]),Ct!==!1)return Ct;if(this._backtrack){Ot=!1;continue}else return!1}else if(!this.options.flex)break}return Ot?(Ct=this.test_match(Ot,gr[Rt]),Ct!==!1?Ct:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ot=this.next();return Ot||this.lex()},"lex"),begin:o(function(Ot){this.conditionStack.push(Ot)},"begin"),popState:o(function(){var Ot=this.conditionStack.length-1;return Ot>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ot){return Ot=this.conditionStack.length-1-Math.abs(Ot||0),Ot>=0?this.conditionStack[Ot]:"INITIAL"},"topState"),pushState:o(function(Ot){this.begin(Ot)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ot,Ft,Rt,gr){var Se=gr;switch(Rt){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),Ft.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let ri=/\n\s*/g;return Ft.yytext=Ft.yytext.replace(ri,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 39:return 27;case 40:return 32;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return 98;case 45:return this.popState(),13;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return this.popState(),14;break;case 56:return 121;case 57:return 122;case 58:return 123;case 59:return 124;case 60:return 125;case 61:return 78;case 62:return 105;case 63:return 111;case 64:return 46;case 65:return 60;case 66:return 44;case 67:return 8;case 68:return 106;case 69:return 115;case 70:return this.popState(),77;break;case 71:return this.pushState("edgeText"),75;break;case 72:return 119;case 73:return this.popState(),77;break;case 74:return this.pushState("thickEdgeText"),75;break;case 75:return 119;case 76:return this.popState(),77;break;case 77:return this.pushState("dottedEdgeText"),75;break;case 78:return 119;case 79:return 77;case 80:return this.popState(),53;break;case 81:return"TEXT";case 82:return this.pushState("ellipseText"),52;break;case 83:return this.popState(),55;break;case 84:return this.pushState("text"),54;break;case 85:return this.popState(),57;break;case 86:return this.pushState("text"),56;break;case 87:return 58;case 88:return this.pushState("text"),67;break;case 89:return this.popState(),64;break;case 90:return this.pushState("text"),63;break;case 91:return this.popState(),49;break;case 92:return this.pushState("text"),48;break;case 93:return this.popState(),69;break;case 94:return this.popState(),71;break;case 95:return 117;case 96:return this.pushState("trapText"),68;break;case 97:return this.pushState("trapText"),70;break;case 98:return 118;case 99:return 67;case 100:return 90;case 101:return"SEP";case 102:return 89;case 103:return 115;case 104:return 111;case 105:return 44;case 106:return 109;case 107:return 114;case 108:return 116;case 109:return this.popState(),62;break;case 110:return this.pushState("text"),62;break;case 111:return this.popState(),51;break;case 112:return this.pushState("text"),50;break;case 113:return this.popState(),31;break;case 114:return this.pushState("text"),29;break;case 115:return this.popState(),66;break;case 116:return this.pushState("text"),65;break;case 117:return"TEXT";case 118:return"QUOTE";case 119:return 9;case 120:return 10;case 121:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:swimlane-beta\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:.*direction\s+TD[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},shapeData:{rules:[8,11,12,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},callbackargs:{rules:[17,18,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},callbackname:{rules:[14,15,16,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},href:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},click:{rules:[21,24,33,34,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},dottedEdgeText:{rules:[21,24,76,78,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},thickEdgeText:{rules:[21,24,73,75,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},edgeText:{rules:[21,24,70,72,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},trapText:{rules:[21,24,79,82,84,86,90,92,93,94,95,96,97,110,112,114,116],inclusive:!1},ellipseText:{rules:[21,24,79,80,81,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},text:{rules:[21,24,79,82,83,84,85,86,89,90,91,92,96,97,109,110,111,112,113,114,115,116,117],inclusive:!1},vertex:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},dir:{rules:[21,24,45,46,47,48,49,50,51,52,53,54,55,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_descr:{rules:[3,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_title:{rules:[1,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},md_string:{rules:[19,20,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},string:{rules:[21,22,23,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,76,77,79,82,84,86,87,88,90,92,96,97,98,99,100,101,102,103,104,105,106,107,108,110,112,114,116,118,119,120,121],inclusive:!0}}};return kt})();pr.lexer=Hr;function Er(){this.yy={}}return o(Er,"Parser"),Er.prototype=pr,pr.Parser=Er,new Er})();jF.parser=jF;XF=jF});var dTe,fTe,pTe=F(()=>{"use strict";hTe();dTe=Object.assign({},XF);dTe.parse=e=>{let t=e.replace(/}\s*\n/g,`} +`);return XF.parse(t)};fTe=dTe});var Eu,X1=F(()=>{"use strict";Eu=o(()=>` + /* Font Awesome icon styling - consolidated */ + .label-icon { + display: inline-block; + height: 1em; + overflow: visible; + vertical-align: -0.125em; + } + + .node .label-icon path { + fill: currentColor; + stroke: revert; + stroke-width: revert; + } +`,"getIconStyles")});var e0t,t0t,RA,KF=F(()=>{"use strict";zi();X1();e0t=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),t0t=o(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span { + color: ${e.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .label text,span { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: ${e.strokeWidth??1}px; + } + .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { + text-anchor: middle; + } + + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + + .root .anchor path { + fill: ${e.lineColor} !important; + stroke-width: 0; + stroke: ${e.lineColor}; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth??2}px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${e0t(e.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } + + rect.text { + fill: none; + stroke-width: 0; + } + + .icon-shape, .image-shape { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + padding: 2px; + } + .label rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + ${Eu()} +`,"getStyles"),RA=t0t});var LA={};ir(LA,{createFlowDiagram:()=>_A,diagram:()=>r0t});var _A,r0t,oC=F(()=>{"use strict";ur();Xt();Fce();uTe();pTe();KF();_A=o(({defaultLayout:e,styles:t=RA}={})=>({parser:fTe,get db(){return new W4},renderer:cTe,styles:t,init:o(r=>{r.flowchart||(r.flowchart={});let n=Lk().layout??e??r.layout;n&&cb({layout:n}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,cb({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}})},"init")}),"createFlowDiagram"),r0t=_A()});var c0t,xTe,bTe=F(()=>{"use strict";KF();c0t=o(e=>`${RA(e)} + .swimlane.cluster rect { + stroke: ${e.clusterBorder} !important; + } + [data-look="neo"].cluster rect { + filter: none; + } +`,"getStyles"),xTe=c0t});var TTe={};ir(TTe,{diagram:()=>u0t});var u0t,CTe=F(()=>{"use strict";oC();bTe();u0t=_A({defaultLayout:"swimlane",styles:xTe})});var ZF,STe,ETe=F(()=>{"use strict";ZF=(function(){var e=o(function(Pe,Ge,Oe,ue){for(Oe=Oe||{},ue=Pe.length;ue--;Oe[Pe[ue]]=Ge);return Oe},"o"),t=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,23],l=[1,24],u=[1,25],h=[1,26],d=[1,27],f=[1,19],p=[1,28],m=[1,29],g=[1,20],y=[1,18],v=[1,21],x=[1,22],b=[1,36],T=[1,37],k=[1,38],C=[1,39],w=[1,40],S=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,66,67,68,69,70],R=[1,45],L=[1,46],N=[1,55],I=[40,48,50,51,52,71,72],_=[1,66],A=[1,64],M=[1,61],D=[1,65],P=[1,67],B=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,66,67,68,69,70],O=[66,67,68,69,70],$=[1,85],V=[1,84],G=[1,82],z=[1,83],W=[6,10,42,47],H=[6,10,13,41,42,47,48,49],j=[1,93],Q=[1,92],U=[1,91],oe=[19,58],te=[1,102],le=[1,101],ie=[19,58,61,63],ae={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,"?":59,attributeKeyType:60,",":61,ATTRIBUTE_KEY:62,COMMENT:63,cardinality:64,relType:65,ZERO_OR_ONE:66,ZERO_OR_MORE:67,ONE_OR_MORE:68,ONLY_ONE:69,MD_PARENT:70,NON_IDENTIFYING:71,IDENTIFYING:72,WORD:73,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",59:"?",61:",",62:"ATTRIBUTE_KEY",63:"COMMENT",66:"ZERO_OR_ONE",67:"ZERO_OR_MORE",68:"ONE_OR_MORE",69:"ONLY_ONE",70:"MD_PARENT",71:"NON_IDENTIFYING",72:"IDENTIFYING",73:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[54,2],[55,1],[56,1],[56,3],[60,1],[57,1],[12,3],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[14,1],[14,1],[14,1]],performAction:o(function(Ge,Oe,ue,ye,ke,ce,re){var J=ce.length-1;switch(ke){case 1:break;case 2:this.$=[];break;case 3:ce[J-1].push(ce[J]),this.$=ce[J-1];break;case 4:case 5:this.$=ce[J];break;case 6:case 7:this.$=[];break;case 8:ye.addEntity(ce[J-4]),ye.addEntity(ce[J-2]),ye.addRelationship(ce[J-4],ce[J],ce[J-2],ce[J-3]);break;case 9:ye.addEntity(ce[J-8]),ye.addEntity(ce[J-4]),ye.addRelationship(ce[J-8],ce[J],ce[J-4],ce[J-5]),ye.setClass([ce[J-8]],ce[J-6]),ye.setClass([ce[J-4]],ce[J-2]);break;case 10:ye.addEntity(ce[J-6]),ye.addEntity(ce[J-2]),ye.addRelationship(ce[J-6],ce[J],ce[J-2],ce[J-3]),ye.setClass([ce[J-6]],ce[J-4]);break;case 11:ye.addEntity(ce[J-6]),ye.addEntity(ce[J-4]),ye.addRelationship(ce[J-6],ce[J],ce[J-4],ce[J-5]),ye.setClass([ce[J-4]],ce[J-2]);break;case 12:ye.addEntity(ce[J-3]),ye.addAttributes(ce[J-3],ce[J-1]);break;case 13:ye.addEntity(ce[J-5]),ye.addAttributes(ce[J-5],ce[J-1]),ye.setClass([ce[J-5]],ce[J-3]);break;case 14:ye.addEntity(ce[J-2]);break;case 15:ye.addEntity(ce[J-4]),ye.setClass([ce[J-4]],ce[J-2]);break;case 16:ye.addEntity(ce[J]);break;case 17:ye.addEntity(ce[J-2]),ye.setClass([ce[J-2]],ce[J]);break;case 18:ye.addEntity(ce[J-6],ce[J-4]),ye.addAttributes(ce[J-6],ce[J-1]);break;case 19:ye.addEntity(ce[J-8],ce[J-6]),ye.addAttributes(ce[J-8],ce[J-1]),ye.setClass([ce[J-8]],ce[J-3]);break;case 20:ye.addEntity(ce[J-5],ce[J-3]);break;case 21:ye.addEntity(ce[J-7],ce[J-5]),ye.setClass([ce[J-7]],ce[J-2]);break;case 22:ye.addEntity(ce[J-3],ce[J-1]);break;case 23:ye.addEntity(ce[J-5],ce[J-3]),ye.setClass([ce[J-5]],ce[J]);break;case 24:case 25:this.$=ce[J].trim(),ye.setAccTitle(this.$);break;case 26:case 27:this.$=ce[J].trim(),ye.setAccDescription(this.$);break;case 32:ye.setDirection("TB");break;case 33:ye.setDirection("BT");break;case 34:ye.setDirection("RL");break;case 35:ye.setDirection("LR");break;case 36:this.$=ce[J-3],ye.addClass(ce[J-2],ce[J-1]);break;case 37:case 38:case 59:case 68:this.$=[ce[J]];break;case 39:case 40:this.$=ce[J-2].concat([ce[J]]);break;case 41:this.$=ce[J-2],ye.setClass(ce[J-1],ce[J]);break;case 42:this.$=ce[J-3],ye.addCssStyles(ce[J-2],ce[J-1]);break;case 43:this.$=[ce[J]];break;case 44:ce[J-2].push(ce[J]),this.$=ce[J-2];break;case 46:this.$=ce[J-1]+ce[J];break;case 54:case 80:case 81:this.$=ce[J].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 82:this.$=ce[J];break;case 60:ce[J].push(ce[J-1]),this.$=ce[J];break;case 61:this.$={type:ce[J-1],name:ce[J]};break;case 62:this.$={type:ce[J-2],name:ce[J-1],keys:ce[J]};break;case 63:this.$={type:ce[J-2],name:ce[J-1],comment:ce[J]};break;case 64:this.$={type:ce[J-3],name:ce[J-2],keys:ce[J-1],comment:ce[J]};break;case 65:case 67:case 70:this.$=ce[J];break;case 66:this.$=ce[J-1]+ce[J];break;case 69:ce[J-2].push(ce[J]),this.$=ce[J-2];break;case 71:this.$=ce[J].replace(/"/g,"");break;case 72:this.$={cardA:ce[J],relType:ce[J-1],cardB:ce[J-2]};break;case 73:this.$=ye.Cardinality.ZERO_OR_ONE;break;case 74:this.$=ye.Cardinality.ZERO_OR_MORE;break;case 75:this.$=ye.Cardinality.ONE_OR_MORE;break;case 76:this.$=ye.Cardinality.ONLY_ONE;break;case 77:this.$=ye.Cardinality.MD_PARENT;break;case 78:this.$=ye.Identification.NON_IDENTIFYING;break;case 79:this.$=ye.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:30,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,5]),e(t,[2,6]),e(t,[2,16],{12:31,64:35,15:[1,32],17:[1,33],20:[1,34],66:b,67:T,68:k,69:C,70:w}),{23:[1,41]},{25:[1,42]},{27:[1,43]},e(t,[2,27]),e(t,[2,28]),e(t,[2,29]),e(t,[2,30]),e(t,[2,31]),e(S,[2,54]),e(S,[2,55]),e(S,[2,56]),e(S,[2,57]),e(S,[2,58]),e(t,[2,32]),e(t,[2,33]),e(t,[2,34]),e(t,[2,35]),{16:44,40:R,41:L},{16:47,40:R,41:L},{16:48,40:R,41:L},e(t,[2,4]),{11:49,40:f,48:g,50:y,51:v,52:x},{16:50,40:R,41:L},{18:51,19:[1,52],53:53,54:54,58:N},{11:56,40:f,48:g,50:y,51:v,52:x},{65:57,71:[1,58],72:[1,59]},e(I,[2,73]),e(I,[2,74]),e(I,[2,75]),e(I,[2,76]),e(I,[2,77]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),{13:_,38:60,41:A,42:M,45:62,46:63,48:D,49:P},e(B,[2,37]),e(B,[2,38]),{16:68,40:R,41:L,42:M},{13:_,38:69,41:A,42:M,45:62,46:63,48:D,49:P},{13:[1,70],15:[1,71]},e(t,[2,17],{64:35,12:72,17:[1,73],42:M,66:b,67:T,68:k,69:C,70:w}),{19:[1,74]},e(t,[2,14]),{18:75,19:[2,59],53:53,54:54,58:N},{55:76,58:[1,77]},{58:[2,65],59:[1,78]},{21:[1,79]},{64:80,66:b,67:T,68:k,69:C,70:w},e(O,[2,78]),e(O,[2,79]),{6:$,10:V,39:81,42:G,47:z},{40:[1,86],41:[1,87]},e(W,[2,43],{46:88,13:_,41:A,48:D,49:P}),e(H,[2,45]),e(H,[2,50]),e(H,[2,51]),e(H,[2,52]),e(H,[2,53]),e(t,[2,41],{42:M}),{6:$,10:V,39:89,42:G,47:z},{14:90,40:j,50:Q,73:U},{16:94,40:R,41:L},{11:95,40:f,48:g,50:y,51:v,52:x},{18:96,19:[1,97],53:53,54:54,58:N},e(t,[2,12]),{19:[2,60]},e(oe,[2,61],{56:98,57:99,60:100,62:te,63:le}),e([19,58,62,63],[2,67]),{58:[2,66]},e(t,[2,22],{15:[1,104],17:[1,103]}),e([40,48,50,51,52],[2,72]),e(t,[2,36]),{13:_,41:A,45:105,46:63,48:D,49:P},e(t,[2,47]),e(t,[2,48]),e(t,[2,49]),e(B,[2,39]),e(B,[2,40]),e(H,[2,46]),e(t,[2,42]),e(t,[2,8]),e(t,[2,80]),e(t,[2,81]),e(t,[2,82]),{13:[1,106],42:M},{13:[1,108],15:[1,107]},{19:[1,109]},e(t,[2,15]),e(oe,[2,62],{57:110,61:[1,111],63:le}),e(oe,[2,63]),e(ie,[2,68]),e(oe,[2,71]),e(ie,[2,70]),{18:112,19:[1,113],53:53,54:54,58:N},{16:114,40:R,41:L},e(W,[2,44],{46:88,13:_,41:A,48:D,49:P}),{14:115,40:j,50:Q,73:U},{16:116,40:R,41:L},{14:117,40:j,50:Q,73:U},e(t,[2,13]),e(oe,[2,64]),{60:118,62:te},{19:[1,119]},e(t,[2,20]),e(t,[2,23],{17:[1,120],42:M}),e(t,[2,11]),{13:[1,121],42:M},e(t,[2,10]),e(ie,[2,69]),e(t,[2,18]),{18:122,19:[1,123],53:53,54:54,58:N},{14:124,40:j,50:Q,73:U},{19:[1,125]},e(t,[2,21]),e(t,[2,9]),e(t,[2,19])],defaultActions:{75:[2,60],78:[2,66]},parseError:o(function(Ge,Oe){if(Oe.recoverable)this.trace(Ge);else{var ue=new Error(Ge);throw ue.hash=Oe,ue}},"parseError"),parse:o(function(Ge){var Oe=this,ue=[0],ye=[],ke=[null],ce=[],re=this.table,J="",se=0,ge=0,Te=0,we=2,Me=1,ve=ce.slice.call(arguments,1),ne=Object.create(this.lexer),q={yy:{}};for(var he in this.yy)Object.prototype.hasOwnProperty.call(this.yy,he)&&(q.yy[he]=this.yy[he]);ne.setInput(Ge,q.yy),q.yy.lexer=ne,q.yy.parser=this,typeof ne.yylloc>"u"&&(ne.yylloc={});var X=ne.yylloc;ce.push(X);var fe=ne.options&&ne.options.ranges;typeof q.yy.parseError=="function"?this.parseError=q.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function K(wt){ue.length=ue.length-2*wt,ke.length=ke.length-wt,ce.length=ce.length-wt}o(K,"popStack");function qe(){var wt;return wt=ye.pop()||ne.lex()||Me,typeof wt!="number"&&(wt instanceof Array&&(ye=wt,wt=ye.pop()),wt=Oe.symbols_[wt]||wt),wt}o(qe,"lex");for(var _e,Be,Ne,He,$e,Xe,Fe={},Ke,xe,mt,Le;;){if(Ne=ue[ue.length-1],this.defaultActions[Ne]?He=this.defaultActions[Ne]:((_e===null||typeof _e>"u")&&(_e=qe()),He=re[Ne]&&re[Ne][_e]),typeof He>"u"||!He.length||!He[0]){var ft="";Le=[];for(Ke in re[Ne])this.terminals_[Ke]&&Ke>we&&Le.push("'"+this.terminals_[Ke]+"'");ne.showPosition?ft="Parse error on line "+(se+1)+`: +`+ne.showPosition()+` +Expecting `+Le.join(", ")+", got '"+(this.terminals_[_e]||_e)+"'":ft="Parse error on line "+(se+1)+": Unexpected "+(_e==Me?"end of input":"'"+(this.terminals_[_e]||_e)+"'"),this.parseError(ft,{text:ne.match,token:this.terminals_[_e]||_e,line:ne.yylineno,loc:X,expected:Le})}if(He[0]instanceof Array&&He.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ne+", token: "+_e);switch(He[0]){case 1:ue.push(_e),ke.push(ne.yytext),ce.push(ne.yylloc),ue.push(He[1]),_e=null,Be?(_e=Be,Be=null):(ge=ne.yyleng,J=ne.yytext,se=ne.yylineno,X=ne.yylloc,Te>0&&Te--);break;case 2:if(xe=this.productions_[He[1]][1],Fe.$=ke[ke.length-xe],Fe._$={first_line:ce[ce.length-(xe||1)].first_line,last_line:ce[ce.length-1].last_line,first_column:ce[ce.length-(xe||1)].first_column,last_column:ce[ce.length-1].last_column},fe&&(Fe._$.range=[ce[ce.length-(xe||1)].range[0],ce[ce.length-1].range[1]]),Xe=this.performAction.apply(Fe,[J,ge,se,q.yy,He[1],ke,ce].concat(ve)),typeof Xe<"u")return Xe;xe&&(ue=ue.slice(0,-1*xe*2),ke=ke.slice(0,-1*xe),ce=ce.slice(0,-1*xe)),ue.push(this.productions_[He[1]][0]),ke.push(Fe.$),ce.push(Fe._$),mt=re[ue[ue.length-2]][ue[ue.length-1]],ue.push(mt);break;case 3:return!0}}return!0},"parse")},Re=(function(){var Pe={EOF:1,parseError:o(function(Oe,ue){if(this.yy.parser)this.yy.parser.parseError(Oe,ue);else throw new Error(Oe)},"parseError"),setInput:o(function(Ge,Oe){return this.yy=Oe||this.yy||{},this._input=Ge,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ge=this._input[0];this.yytext+=Ge,this.yyleng++,this.offset++,this.match+=Ge,this.matched+=Ge;var Oe=Ge.match(/(?:\r\n?|\n).*/g);return Oe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ge},"input"),unput:o(function(Ge){var Oe=Ge.length,ue=Ge.split(/(?:\r\n?|\n)/g);this._input=Ge+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Oe),this.offset-=Oe;var ye=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ue.length-1&&(this.yylineno-=ue.length-1);var ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ue?(ue.length===ye.length?this.yylloc.first_column:0)+ye[ye.length-ue.length].length-ue[0].length:this.yylloc.first_column-Oe},this.options.ranges&&(this.yylloc.range=[ke[0],ke[0]+this.yyleng-Oe]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ge){this.unput(this.match.slice(Ge))},"less"),pastInput:o(function(){var Ge=this.matched.substr(0,this.matched.length-this.match.length);return(Ge.length>20?"...":"")+Ge.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ge=this.match;return Ge.length<20&&(Ge+=this._input.substr(0,20-Ge.length)),(Ge.substr(0,20)+(Ge.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ge=this.pastInput(),Oe=new Array(Ge.length+1).join("-");return Ge+this.upcomingInput()+` +`+Oe+"^"},"showPosition"),test_match:o(function(Ge,Oe){var ue,ye,ke;if(this.options.backtrack_lexer&&(ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ke.yylloc.range=this.yylloc.range.slice(0))),ye=Ge[0].match(/(?:\r\n?|\n).*/g),ye&&(this.yylineno+=ye.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ye?ye[ye.length-1].length-ye[ye.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ge[0].length},this.yytext+=Ge[0],this.match+=Ge[0],this.matches=Ge,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ge[0].length),this.matched+=Ge[0],ue=this.performAction.call(this,this.yy,this,Oe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ue)return ue;if(this._backtrack){for(var ce in ke)this[ce]=ke[ce];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ge,Oe,ue,ye;this._more||(this.yytext="",this.match="");for(var ke=this._currentRules(),ce=0;ceOe[0].length)){if(Oe=ue,ye=ce,this.options.backtrack_lexer){if(Ge=this.test_match(ue,ke[ce]),Ge!==!1)return Ge;if(this._backtrack){Oe=!1;continue}else return!1}else if(!this.options.flex)break}return Oe?(Ge=this.test_match(Oe,ke[ye]),Ge!==!1?Ge:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Oe=this.next();return Oe||this.lex()},"lex"),begin:o(function(Oe){this.conditionStack.push(Oe)},"begin"),popState:o(function(){var Oe=this.conditionStack.length-1;return Oe>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Oe){return Oe=this.conditionStack.length-1-Math.abs(Oe||0),Oe>=0?this.conditionStack[Oe]:"INITIAL"},"topState"),pushState:o(function(Oe){this.begin(Oe)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Oe,ue,ye,ke){var ce=ke;switch(ye){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 73;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 62;case 25:return 58;case 26:return 58;case 27:this.begin("block_bq");break;case 28:return 58;case 29:this.popState();break;case 30:return 63;case 31:break;case 32:return this.popState(),19;break;case 33:return ue.yytext[0];case 34:return 20;case 35:return 21;case 36:return this.begin("style"),44;break;case 37:return this.popState(),10;break;case 38:break;case 39:return 13;case 40:return 42;case 41:return 49;case 42:return this.begin("style"),37;break;case 43:return 43;case 44:return 66;case 45:return 68;case 46:return 68;case 47:return 68;case 48:return 66;case 49:return 66;case 50:return 67;case 51:return 67;case 52:return 67;case 53:return 67;case 54:return 67;case 55:return 68;case 56:return 67;case 57:return 68;case 58:return 69;case 59:return 69;case 60:return 51;case 61:return 69;case 62:return 69;case 63:return 69;case 64:return 52;case 65:return 48;case 66:return 69;case 67:return 66;case 68:return 67;case 69:return 68;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 72;case 74:return 71;case 75:return 71;case 76:return 71;case 77:return 41;case 78:return 47;case 79:return 40;case 80:return ue.yytext[0];case 81:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\.,\u00C0-\uFFFF\*]*))/i,/^(?:[`])/i,/^(?:[^`]+)/i,/^(?:[`])/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=\s+[0-9]))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[37,38,39,40,41,77,78],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block_bq:{rules:[28,29],inclusive:!1},block:{rules:[23,24,25,26,27,30,31,32,33],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,34,35,36,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,79,80,81],inclusive:!0}}};return Pe})();ae.lexer=Re;function be(){this.yy={}}return o(be,"Parser"),be.prototype=ae,ae.Parser=be,new be})();ZF.parser=ZF;STe=ZF});var DA,ATe=F(()=>{"use strict";vt();Xt();Nn();Qt();DA=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(t,r=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&r&&(this.entities.get(t).alias=r,Z.info(`Add alias '${r}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:r,shape:"erBox",look:Ae().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),Z.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,r){let n=this.addEntity(t),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),Z.debug("Added attribute ",r[i].name)}addRelationship(t,r,n,i){let a=this.entities.get(t),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),Z.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let r=[];for(let n of t){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(t,r){for(let n of t){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(t,r){t.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(t,r){for(let n of t){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],yr()}getData(){let t=[],r=[],n=Ae(),i=0;for(let s of this.entities.keys()){let l=this.entities.get(s);l&&(l.cssCompiledStyles=this.getCompiledStyles(l.cssClasses.split(" ")),l.colorIndex=i++,t.push(l))}let a=0;for(let s of this.relationships){let l={id:eu(s.entityA,s.entityB,{prefix:"id",counter:a++}),type:"normal",curve:"basis",start:s.entityA,end:s.entityB,label:s.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:s.relSpec.cardB.toLowerCase(),arrowTypeEnd:s.relSpec.cardA.toLowerCase(),pattern:s.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:n,direction:"TB"}}}});var QF={};ir(QF,{draw:()=>p0t});var p0t,RTe=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();$r();p0t=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing er diagram (unified)",t);let{securityLevel:i,er:a,layout:s}=Ae(),l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=Su(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection();let{config:h}=l,{look:d}=h;d==="neo"?l.markers=["only_one_neo","zero_or_one_neo","one_or_more_neo","zero_or_more_neo"]:l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=t,await Al(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let f=u.selectAll('[id*="-background"]');Array.from(f).length>0&&f.each(function(){let m=et(this),y=m.attr("id").replace("-background",""),v=u.select(`#${CSS.escape(y)}`);if(!v.empty()){let x=v.attr("transform");m.attr("transform",x)}});let p=8;Zt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,p,"erDiagram",a?.useMaxWidth??!0)},"draw")});var _Te,IA,m0t,g0t,LTe,DTe=F(()=>{"use strict";zi();_Te=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),IA=new Set(["redux-color","redux-dark-color"]),m0t=o(e=>{let{theme:t,look:r,bkgColorArray:n,borderColorArray:i}=e;if(!IA.has(t))return"";let a=n?.length>0,s="";for(let l=0;l{let{look:t,theme:r,erEdgeLabelBackground:n,strokeWidth:i}=e;return` + ${m0t(e)} + .entityBox { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${e.tertiaryColor}; + opacity: 0.7; + background-color: ${e.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .labelBkg { + background-color: ${IA.has(r)&&n?n:_Te(e.tertiaryColor,.5)}; + } + + .edgeLabel { + background-color: ${IA.has(r)&&n?n:e.edgeLabelBackground}; + } + .edgeLabel .label rect { + fill: ${IA.has(r)&&n?n:e.edgeLabelBackground}; + } + .edgeLabel .label text { + fill: ${e.textColor}; + } + + .edgeLabel .label { + fill: ${e.nodeBorder}; + font-size: 14px; + } + + .label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + + .edge-pattern-dashed { + stroke-dasharray: 8,8; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon + { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: ${t==="neo"?i:"1px"}; + } + + .relationshipLine { + stroke: ${e.lineColor}; + stroke-width: ${t==="neo"?i:"1px"}; + fill: none; + } + + .marker { + fill: none !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; + } + [data-look=neo].labelBkg { + background-color: ${_Te(e.tertiaryColor,.5)}; + } +`},"getStyles"),LTe=g0t});var ITe={};ir(ITe,{diagram:()=>y0t});var y0t,MTe=F(()=>{"use strict";ETe();ATe();RTe();DTe();y0t={parser:STe,get db(){return new DA},renderer:QF,styles:LTe}});function Zi(e){return typeof e=="object"&&e!==null&&typeof e.$type=="string"}function Bs(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"ref"in e}function Ou(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"items"in e}function iW(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.type=="string"&&typeof e.path=="string"}function Tg(e){return typeof e=="object"&&e!==null&&typeof e.info=="object"&&typeof e.message=="string"}function Hh(e){return typeof e=="object"&&e!==null&&Array.isArray(e.content)}function Jg(e){return typeof e=="object"&&e!==null&&typeof e.tokenType=="object"}function vR(e){return Hh(e)&&typeof e.fullText=="string"}function Owe(e){return typeof e=="string"?e:typeof e>"u"?"undefined":typeof e.toString=="function"?e.toString():Object.prototype.toString.call(e)}function YC(e){return!!e&&typeof e[Symbol.iterator]=="function"}function Bn(...e){if(e.length===1){let t=e[0];if(t instanceof Nu)return t;if(YC(t))return new Nu(()=>t[Symbol.iterator](),r=>r.next());if(typeof t.length=="number")return new Nu(()=>({index:0}),r=>r.index1?new Nu(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let r=t.iterator.next();if(!r.done)return r;t.iterator=void 0}if(t.array){if(t.arrIndex{Zi(i)&&(i.$container=e,i.$containerProperty=r,i.$containerIndex=a,t.deep&&wv(i,t))}):Zi(n)&&(n.$container=e,n.$containerProperty=r,t.deep&&wv(n,t)))}function e0(e,t){let r=e;for(;r;){if(t(r))return r;r=r.$container}}function Bwe(e,t){let r=e;for(;r;){if(t(r))return!0;r=r.$container}return!1}function wc(e){let r=yv(e).$document;if(!r)throw new Error("AST node has no document.");return r}function yv(e){for(;e.$container;)e=e.$container;return e}function A6(e){return Bs(e)?e.ref?[e.ref]:[]:Ou(e)?e.items.map(t=>t.ref):[]}function fw(e,t){if(!e)throw new Error("Node must be an AstNode.");let r=t?.range;return new Nu(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexfw(r,t))}function kc(e,t){if(e){if(t?.range&&!R6(e,t.range))return new Cv(e,()=>[])}else throw new Error("Root node must be an AstNode.");return new Cv(e,r=>fw(r,t),{includeRoot:!0})}function R6(e,t){if(!t)return!0;let r=e.$cstNode?.range;return r?LW(r,t):!1}function kv(e){return new Nu(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndexHh(t)?t.content:[],{includeRoot:!0})}function rke(e){return Ev(e).filter(Jg)}function RW(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function XC(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Av(e){if(!e)return;let{offset:t,end:r,range:n}=e;return{range:n,offset:t,end:r,length:r-t}}function _W(e,t){if(e.end.linet.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Mu.After;let r=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,n=e.end.lineMu.After}function nke(e,t,r=DW){if(e){if(t>0){let n=t-e.offset,i=e.text.charAt(n);r.test(i)||t--}return SR(e,t)}}function IW(e,t){if(e){let r=PW(e,!0);if(r&&W6(r,t))return r;if(vR(e)){let n=e.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=e.content[i];if(W6(a,t))return a}}}}function W6(e,t){return Jg(e)&&t.includes(e.tokenType.name)}function SR(e,t){if(Jg(e))return e;if(Hh(e)){let r=NW(e,t,!1);if(r)return SR(r,t)}}function MW(e,t){if(Jg(e))return e;if(Hh(e)){let r=NW(e,t,!0);if(r)return MW(r,t)}}function NW(e,t,r){let n=0,i=e.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=e.content[s];if(l.offset<=t&&l.end>t)return l;l.end<=t?(a=r?l:void 0,n=s+1):i=s-1}return a}function PW(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e);for(;n>0;){n--;let i=r.content[n];if(t||!i.hidden)return i}e=r}}function ike(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e),i=r.content.length-1;for(;nt.test(r))}function Nv(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function zW(e,t){let r=GW(e),n=t.match(r);return!!n&&n[0].length>0}function GW(e){typeof e=="string"&&(e=new RegExp(e));let t=e,r=e.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw"),E(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional"),E(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process2"),E(i,"process"),new RegExp(i(),e.flags)}function VW(e){return e.rules.find(t=>zs(t)&&t.entry)}function WW(e){return e.rules.filter(t=>Il(t)&&t.hidden)}function _R(e,t){let r=new Set,n=VW(e);if(!n)return new Set(e.rules);let i=[n].concat(WW(e));for(let s of i)qW(s,r,t);let a=new Set;for(let s of e.rules)(r.has(s.name)||Il(s)&&s.hidden)&&a.add(s);return a}function qW(e,t,r){t.add(e.name),td(e).forEach(n=>{if(jh(n)||r&&CR(n)){let i=n.rule.ref;i&&!t.has(i.name)&&qW(i,t,r)}})}function fke(e){let t=new Set;return td(e).forEach(r=>{r0(r)&&(zs(r.type.ref)&&t.add(r.type.ref),pw(r.type.ref)&&zs(r.type.ref.$container)&&t.add(r.type.ref.$container))}),t}function HW(e){if(e.terminal)return e.terminal;if(e.type.ref)return MR(e.type.ref)?.terminal}function UW(e){return e.hidden&&!RR(yw(e))}function YW(e,t){return!e||!t?[]:DR(e,t,e.astNode,!0)}function LR(e,t,r){if(!e||!t)return;let n=DR(e,t,e.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function DR(e,t,r,n){if(!n){let i=e0(e.grammarSource,Uh);if(i&&i.feature===t)return[e]}return Hh(e)&&e.astNode===r?e.content.flatMap(i=>DR(i,t,r,!1)):[]}function pke(e,t){return e?IR(e,t,e?.astNode):[]}function jW(e,t,r){if(!e)return;let n=IR(e,t,e?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function IR(e,t,r){if(e.astNode!==r)return[];if(Yh(e.grammarSource)&&e.grammarSource.value===t)return[e];let n=Ev(e).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Yh(s.grammarSource)&&s.grammarSource.value===t&&a.push(s):n.prune()}while(!i.done);return a}function XW(e){let t=e.astNode;for(;t===e.container?.astNode;){let r=e0(e.grammarSource,Uh);if(r)return r;e=e.container}}function MR(e){let t=e;return pw(t)&&(dp(t.$container)?t=t.$container.$container:t0(t.$container)?t=t.$container:vp(t.$container)),KW(e,t,new Map)}function KW(e,t,r){function n(i,a){let s;return e0(i,Uh)||(s=KW(a,a,r)),r.set(e,s),s}if(o(n,"go"),E(n,"go"),r.has(e))return r.get(e);r.set(e,void 0);for(let i of td(t)){if(Uh(i)&&i.feature.toLowerCase()==="name")return r.set(e,i),i;if(jh(i)&&zs(i.rule.ref))return n(i,i.rule.ref);if(TR(i)&&i.typeRef?.ref)return n(i,i.typeRef.ref)}}function ZW(e){let t=e.$container;if(n0(t)){let r=t.elements,n=r.indexOf(e);for(let i=n-1;i>=0;i--){let a=r[i];if(dp(a))return a;{let s=td(r[i]).find(dp);if(s)return s}}}if(xR(t))return ZW(t)}function mke(e,t){return e==="?"||e==="*"||n0(t)&&!!t.guardCondition}function gke(e){return e==="*"||e==="+"}function yke(e){return e==="+="}function mw(e){return QW(e,new Set)}function QW(e,t){if(t.has(e))return!0;t.add(e);for(let r of td(e))if(jh(r)){if(!r.rule.ref||zs(r.rule.ref)&&!QW(r.rule.ref,t)||Sv(r.rule.ref))return!1}else{if(Uh(r))return!1;if(dp(r))return!1}return!!e.definition}function vke(e){return U6(e.type,new Set)}function U6(e,t){if(t.has(e))return!0;if(t.add(e),cW(e))return!1;if(xW(e))return!1;if(kW(e))return e.types.every(r=>U6(r,t));if(TR(e)){if(e.primitiveType!==void 0)return!0;if(e.stringType!==void 0)return!0;if(e.typeRef!==void 0){let r=e.typeRef.ref;return wR(r)?U6(r.type,t):!1}else return!1}else return!1}function gw(e){if(!Il(e)){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){let t=e.returnType.ref;if(t)return t.name}}}function jg(e){if(t0(e))return zs(e)&&mw(e)?e.name:gw(e)??e.name;if(mW(e)||wR(e)||TW(e))return e.name;if(dp(e)){let t=JW(e);if(t)return t}else if(pw(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function JW(e){if(e.inferredType)return e.inferredType.name;if(e.type?.ref)return jg(e.type.ref)}function xke(e){return Il(e)?e.type?.name??"string":zs(e)&&mw(e)?e.name:gw(e)??e.name}function eq(e){return Il(e)?e.type?.name??"string":gw(e)??e.name}function yw(e){let t={s:!1,i:!1,u:!1},r=i0(e.definition,t),n=Object.entries(t).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function i0(e,t){if(CW(e))return bke(e);if(wW(e))return Tke(e);if(hW(e))return kke(e);if(CR(e)){let r=e.rule.ref;if(!r)throw new Error("Missing rule reference.");return Bu(i0(r.definition),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}else{if(gW(e))return wke(e);if(SW(e))return Cke(e);if(bW(e)){let r=e.regex.lastIndexOf("/"),n=e.regex.substring(1,r),i=e.regex.substring(r+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),Bu(n,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}else{if(EW(e))return Bu(tq,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized});throw new Error(`Invalid terminal element: ${e?.$type}, ${e?.$cstNode?.text}`)}}}function bke(e){return Bu(e.elements.map(t=>i0(t)).join("|"),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Tke(e){return Bu(e.elements.map(t=>i0(t)).join(""),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Cke(e){return Bu(`${tq}*?${i0(e.terminal)}`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function wke(e){return Bu(`(?!${i0(e.terminal)})${tq}*?`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function kke(e){return e.right?Bu(`[${s6(e.left)}-${s6(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1}):Bu(s6(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function s6(e){return Nv(e.value)}function Bu(e,t){return(t.parenthesized||t.lookahead||t.wrap!==!1)&&(e=`(${t.lookahead??(t.parenthesized?"":"?:")}${e})`),t.cardinality?`${e}${t.cardinality}`:e}function rq(e){let t=[],r=e.Grammar;for(let n of r.rules)Il(n)&&UW(n)&&FW(yw(n))&&t.push(n.name);return{multilineCommentRules:t,nameRegexp:DW}}function Ake(e){var t=dyt.call(e,cC),r=e[cC];try{e[cC]=void 0;var n=!0}catch{}var i=fyt.call(e);return n&&(t?e[cC]=r:delete e[cC]),i}function Rke(e){return gyt.call(e)}function _ke(e){return e==null?e===void 0?xyt:vyt:$Te&&$Te in Object(e)?pyt(e):yyt(e)}function Lke(e){return e!=null&&typeof e=="object"}function Dke(e){return typeof e=="symbol"||Ac(e)&&xp(e)==byt}function Ike(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r0){if(++t>=n1t)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Kke(e){return function(){return e}}function Zke(e,t){for(var r=-1,n=e==null?0:e.length;++r-1}function sSe(e,t){var r=typeof e;return t=t??m1t,!!t&&(r=="number"||r!="symbol"&&g1t.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=b1t}function pSe(e){return e!=null&&oq(e.length)&&!rd(e)}function mSe(e,t,r){if(!Dl(r))return!1;var n=typeof t;return(n=="number"?zu(r)&&PR(t,r.length):n=="string"&&t in r)?Tw(r[t],e):!1}function gSe(e){return sq(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,s&&BR(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++n-1}function YSe(e,t){var r=this.__data__,n=zR(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function l0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t0&&r(l)?t>1?dq(l,t-1,r,n,i):hq(i,l):n||(i[i.length]=l)}return i}function cEe(e){var t=e==null?0:e.length;return t?fq(e,1):[]}function hEe(e,t,r){var n=-1,i=e.length;t<0&&(t=-t>i?0:i+t),r=r>i?i:r,r<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(i);++nl))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&Xbt?new yq:void 0;for(a.set(e,t),a.set(t,e);++f=V2t&&(a=vq,s=!1,t=new yq(t));e:for(;++i-1?i[a?t[s]:s]:void 0}}function Y4e(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:xw(r);return i<0&&(i=X2t(n+i,0)),eSe(e,Gu(t,3),i)}function j4e(e){return e&&e.length?e[0]:void 0}function X4e(e,t){var r=-1,n=zu(e)?Array(e.length):[];return h0(e,function(i,a,s){n[++r]=t(i,a,s)}),n}function K4e(e,t){var r=un(e)?vw:Q2t;return r(e,Gu(t,3))}function Z4e(e,t){return fq(hr(e,t),1)}function Q4e(e,t){return e!=null&&iTt.call(e,t)}function J4e(e,t){return e!=null&&y4e(e,t,aTt)}function e3e(e){return typeof e=="string"||!un(e)&&Ac(e)&&xp(e)==sTt}function t3e(e,t){return vw(t,function(r){return e[r]})}function r3e(e){return e==null?[]:oTt(e,jo(e))}function n3e(e,t,r,n){e=zu(e)?e:ha(e),r=r&&!n?xw(r):0;var i=e.length;return r<0&&(r=lTt(i+r,0)),To(e)?r<=i&&e.indexOf(t,r)>-1:!!i&&iq(e,t,r)>-1}function i3e(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:xw(r);return i<0&&(i=cTt(n+i,0)),iq(e,t,i)}function a3e(e){if(e==null)return!0;if(zu(e)&&(un(e)||typeof e=="string"||typeof e.splice=="function"||KC(e)||lq(e)||$R(e)))return!e.length;var t=Rv(e);if(t==uTt||t==hTt)return!e.size;if(ww(e))return!DSe(e).length;for(var r in e)if(fTt.call(e,r))return!1;return!0}function s3e(e){return Ac(e)&&xp(e)==pTt}function o3e(e){return e===void 0}function l3e(e){if(typeof e!="function")throw new TypeError(yTt);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function c3e(e,t,r,n){if(!Dl(e))return e;t=HR(t,e);for(var i=-1,a=t.length,s=a-1,l=e;l!=null&&++i=ETt){var h=t?null:STt(e);if(h)return xq(h);s=!1,i=vq,u=new yq}else u=t?[]:l;e:for(;++ntw(n,t)):e instanceof Gs&&qs(t,e)?!1:e instanceof Vu?(e instanceof Gs&&t.push(e),Ec(e.definition,n=>tw(n,t))):!1}function k3e(e){return e instanceof ko}function Tc(e){if(e instanceof Gs)return"SUBRULE";if(e instanceof Ua)return"OPTION";if(e instanceof ko)return"OR";if(e instanceof Zo)return"AT_LEAST_ONE";if(e instanceof Qo)return"AT_LEAST_ONE_SEP";if(e instanceof wo)return"MANY_SEP";if(e instanceof Mi)return"MANY";if(e instanceof ci)return"CONSUME";throw Error("non exhaustive match")}function RG(e,t,r){return[new Ua({definition:[new ci({terminalType:e.separator})].concat(e.definition)})].concat(t,r)}function Bv(e){if(e instanceof Gs)return Bv(e.referencedRule);if(e instanceof ci)return A3e(e);if(w3e(e))return S3e(e);if(k3e(e))return E3e(e);throw Error("non exhaustive match")}function S3e(e){let t=[],r=e.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=tw(a),t=t.concat(Bv(a)),n=n+1,i=r.length>n;return Cq(t)}function E3e(e){let t=hr(e.definition,r=>Bv(r));return Cq(Sc(t))}function A3e(e){return[e.terminalType]}function _3e(e){let t={};return Ir(e,r=>{let n=new RTt(r).startWalking();Xo(t,n)}),t}function L3e(e,t){return e.name+t+R3e}function Aw(e){let t=e.toString();if(o6.hasOwnProperty(t))return o6[t];{let r=_Tt.pattern(t);return o6[t]=r,r}}function D3e(){o6={}}function M3e(e,t=!1){try{let r=Aw(e);return Z6(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===I3e)t&&wq(`${K6} Unable to optimize: < ${e.toString()} > + Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),X6(`${K6} + Failed parsing: < ${e.toString()} > + Using the @chevrotain/regexp-to-ast library + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Z6(e,t,r){switch(e.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")SC(u,t,r);else{let h=u;if(r===!0)for(let d=h.from;d<=h.to;d++)SC(d,t,r);else{for(let d=h.from;d<=h.to&&d=AC){let d=h.from>=AC?h.from:AC,f=h.to,p=Zh(d),m=Zh(f);for(let g=p;g<=m;g++)t[g]=g}}}});break;case"Group":Z6(s.value,t,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&Q6(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return ha(t)}function SC(e,t,r){let n=Zh(e);t[n]=n,r===!0&&N3e(e,t)}function N3e(e,t){let r=String.fromCharCode(e),n=r.toUpperCase();if(n!==r){let i=Zh(n.charCodeAt(0));t[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Zh(i.charCodeAt(0));t[a]=a}}}function _G(e,t){return _v(e.value,r=>{if(typeof r=="number")return qs(t,r);{let n=r;return _v(t,i=>n.from<=i&&i<=n.to)!==void 0}})}function Q6(e){let t=e.quantifier;return t&&t.atLeast===0?!0:e.value?un(e.value)?Ec(e.value,Q6):Q6(e.value):!1}function XR(e,t){if(t instanceof RegExp){let r=Aw(t),n=new LTt(e);return n.visit(r),n.found}else return _v(t,r=>qs(e,r.charCodeAt(0)))!==void 0}function P3e(e,t){t=Tq(t,{debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:E((b,T)=>T(),"tracer")});let r=t.tracer;r("initCharCodeToOptimizedIndexMap",()=>{r5e()});let n;r("Reject Lexer.NA",()=>{n=YR(e,b=>b[Kg]===Fs.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=hr(n,b=>{let T=b[Kg];if(Xh(T)){let k=T.source;return k.length===1&&k!=="^"&&k!=="$"&&k!=="."&&!T.ignoreCase?k:k.length===2&&k[0]==="\\"&&!qs(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],k[1])?k[1]:LG(T)}else{if(rd(T))return i=!0,{exec:T};if(typeof T=="object")return i=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let k=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),C=new RegExp(k);return LG(C)}}else throw Error("non exhaustive match")}})});let s,l,u,h,d;r("misc mapping",()=>{s=hr(n,b=>b.tokenTypeIdx),l=hr(n,b=>{let T=b.GROUP;if(T!==Fs.SKIPPED){if(To(T))return T;if(Kh(T))return!1;throw Error("non exhaustive match")}}),u=hr(n,b=>{let T=b.LONGER_ALT;if(T)return un(T)?hr(T,C=>gCe(n,C)):[gCe(n,T)]}),h=hr(n,b=>b.PUSH_MODE),d=hr(n,b=>wr(b,"POP_MODE"))});let f;r("Line Terminator Handling",()=>{let b=Rq(t.lineTerminatorCharacters);f=hr(n,T=>!1),t.positionTracking!=="onlyOffset"&&(f=hr(n,T=>wr(T,"LINE_BREAKS")?!!T.LINE_BREAKS:Aq(T,b)===!1&&XR(b,T.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=hr(n,Eq),m=hr(a,e5e),g=Ko(n,(b,T)=>{let k=T.GROUP;return To(k)&&k!==Fs.SKIPPED&&(b[k]=[]),b},{}),y=hr(a,(b,T)=>({pattern:a[T],longerAlt:u[T],canLineTerminator:f[T],isCustom:p[T],short:m[T],group:l[T],push:h[T],pop:d[T],tokenTypeIdx:s[T],tokenType:n[T]}))});let v=!0,x=[];return t.safeMode||r("First Char Optimization",()=>{x=Ko(n,(b,T,k)=>{if(typeof T.PATTERN=="string"){let C=T.PATTERN.charCodeAt(0),w=Zh(C);l6(b,w,y[k])}else if(un(T.START_CHARS_HINT)){let C;Ir(T.START_CHARS_HINT,w=>{let S=typeof w=="string"?w.charCodeAt(0):w,R=Zh(S);C!==R&&(C=R,l6(b,R,y[k]))})}else if(Xh(T.PATTERN))if(T.PATTERN.unicode)v=!1,t.ensureOptimizations&&X6(`${K6} Unable to analyze < ${T.PATTERN.toString()} > pattern. + The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let C=M3e(T.PATTERN,t.ensureOptimizations);ei(C)&&(v=!1),Ir(C,w=>{l6(b,w,y[k])})}else t.ensureOptimizations&&X6(`${K6} TokenType: <${T.name}> is using a custom token pattern without providing parameter. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function O3e(e,t){let r=[],n=$3e(e);r=r.concat(n.errors);let i=F3e(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(B3e(a)),r=r.concat(H3e(a)),r=r.concat(U3e(a,t)),r=r.concat(Y3e(a)),r}function B3e(e){let t=[],r=Ml(e,n=>Xh(n[Kg]));return t=t.concat(z3e(r)),t=t.concat(V3e(r)),t=t.concat(W3e(r)),t=t.concat(q3e(r)),t=t.concat(G3e(r)),t}function $3e(e){let t=Ml(e,i=>!wr(i,Kg)),r=hr(t,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Ni.MISSING_PATTERN,tokenTypes:[i]})),n=UR(e,t);return{errors:r,valid:n}}function F3e(e){let t=Ml(e,i=>{let a=i[Kg];return!Xh(a)&&!rd(a)&&!wr(a,"exec")&&!To(a)}),r=hr(t,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Ni.INVALID_PATTERN,tokenTypes:[i]})),n=UR(e,t);return{errors:r,valid:n}}function z3e(e){class t extends AR{static{o(this,"EndAnchorFinder")}static{E(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Ml(e,i=>{let a=i.PATTERN;try{let s=Aw(a),l=new t;return l.visit(s),l.found}catch{return DTt.test(a.source)}});return hr(r,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ni.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function G3e(e){let t=Ml(e,n=>n.PATTERN.test(""));return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Ni.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function V3e(e){class t extends AR{static{o(this,"StartAnchorFinder")}static{E(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Ml(e,i=>{let a=i.PATTERN;try{let s=Aw(a),l=new t;return l.visit(s),l.found}catch{return ITt.test(a.source)}});return hr(r,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ni.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function W3e(e){let t=Ml(e,n=>{let i=n[Kg];return i instanceof RegExp&&(i.multiline||i.global)});return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Ni.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function q3e(e){let t=[],r=hr(e,a=>Ko(e,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!qs(t,l)&&l.PATTERN!==Fs.NA&&(t.push(l),s.push(l)),s),[]));r=Ew(r);let n=Ml(r,a=>a.length>1);return hr(n,a=>{let s=hr(a,u=>u.name);return{message:`The same RegExp pattern ->${Rc(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Ni.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function H3e(e){let t=Ml(e,n=>{if(!wr(n,"GROUP"))return!1;let i=n.GROUP;return i!==Fs.SKIPPED&&i!==Fs.NA&&!To(i)});return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Ni.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function U3e(e,t){let r=Ml(e,i=>i.PUSH_MODE!==void 0&&!qs(t,i.PUSH_MODE));return hr(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Ni.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function Y3e(e){let t=[],r=Ko(e,(n,i,a)=>{let s=i.PATTERN;return s===Fs.NA||(To(s)?n.push({str:s,idx:a,tokenType:i}):Xh(s)&&X3e(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ir(e,(n,i)=>{Ir(r,({str:a,idx:s,tokenType:l})=>{if(i${l.name}<- can never be matched. +Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:u,type:Ni.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),t}function j3e(e,t){if(Xh(t)){if(K3e(t))return!1;let r=t.exec(e);return r!==null&&r.index===0}else{if(rd(t))return t(e,0,[],{});if(wr(t,"exec"))return t.exec(e,0,[],{});if(typeof t=="string")return t===e;throw Error("non exhaustive match")}}function X3e(e){return _v([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>e.source.indexOf(r)!==-1)===void 0}function K3e(e){return/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\? property in its definition +`,type:Ni.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),wr(e,PA)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+PA+`> property in its definition +`,type:Ni.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),wr(e,PA)&&wr(e,EC)&&!wr(e.modes,e.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${EC}: <${e.defaultMode}>which does not exist +`,type:Ni.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),wr(e,PA)&&Ir(e.modes,(i,a)=>{Ir(i,(s,l)=>{if(Kh(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> +`,type:Ni.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(wr(s,"LONGER_ALT")){let u=un(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ir(u,h=>{!Kh(h)&&!qs(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> +`,type:Ni.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function Q3e(e,t,r){let n=[],i=!1,a=Ew(Sc(ha(e.modes))),s=YR(a,u=>u[Kg]===Fs.NA),l=Rq(r);return t&&Ir(s,u=>{let h=Aq(u,l);if(h!==!1){let f={message:t5e(u,h),type:h.issue,tokenType:u};n.push(f)}else wr(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):XR(l,u.PATTERN)&&(i=!0)}),t&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:Ni.NO_LINE_BREAKS_FLAGS}),n}function J3e(e){let t={},r=jo(e);return Ir(r,n=>{let i=e[n];if(un(i))t[n]=[];else throw Error("non exhaustive match")}),t}function Eq(e){let t=e.PATTERN;if(Xh(t))return!1;if(rd(t))return!0;if(wr(t,"exec"))return!0;if(To(t))return!1;throw Error("non exhaustive match")}function e5e(e){return To(e)&&e.length===1?e.charCodeAt(0):!1}function Aq(e,t){if(wr(e,"LINE_BREAKS"))return!1;if(Xh(e.PATTERN)){try{XR(t,e.PATTERN)}catch(r){return{issue:Ni.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(To(e.PATTERN))return!1;if(Eq(e))return{issue:Ni.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function t5e(e,t){if(t.issue===Ni.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. + The problem is in the <${e.name}> Token Type + Root cause: ${t.errMsg}. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===Ni.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + The problem is in the <${e.name}> Token Type + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Rq(e){return hr(e,r=>To(r)?r.charCodeAt(0):r)}function l6(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function Zh(e){return e255?255+~~(e/255):e}}function $v(e,t){let r=e.tokenTypeIdx;return r===t.tokenTypeIdx?!0:t.isParent===!0&&t.categoryMatchesMap[r]===!0}function rw(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}function Fv(e){let t=i5e(e);a5e(t),o5e(t),s5e(t),Ir(t,r=>{r.isParent=r.categoryMatches.length>0})}function i5e(e){let t=Ya(e),r=e,n=!0;for(;n;){r=Ew(Sc(hr(r,a=>a.CATEGORIES)));let i=UR(r,t);t=t.concat(i),ei(i)?n=!1:r=i}return t}function a5e(e){Ir(e,t=>{Lq(t)||(n5e[vCe]=t,t.tokenTypeIdx=vCe++),DG(t)&&!un(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),DG(t)||(t.CATEGORIES=[]),l5e(t)||(t.categoryMatches=[]),c5e(t)||(t.categoryMatchesMap={})})}function s5e(e){Ir(e,t=>{t.categoryMatches=[],Ir(t.categoryMatchesMap,(r,n)=>{t.categoryMatches.push(n5e[n].tokenTypeIdx)})})}function o5e(e){Ir(e,t=>{_q([],t)})}function _q(e,t){Ir(e,r=>{t.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ir(t.CATEGORIES,r=>{let n=e.concat(t);qs(n,r)||_q(n,r)})}function Lq(e){return wr(e,"tokenTypeIdx")}function DG(e){return wr(e,"CATEGORIES")}function l5e(e){return wr(e,"categoryMatches")}function c5e(e){return wr(e,"categoryMatchesMap")}function u5e(e){return wr(e,"tokenTypeIdx")}function Ug(e){return Dq(e)?e.LABEL:e.name}function Dq(e){return To(e.LABEL)&&e.LABEL!==""}function xv(e){return h5e(e)}function h5e(e){let t=e.pattern,r={};if(r.name=e.name,Kh(t)||(r.PATTERN=t),wr(e,NTt))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return wr(e,xCe)&&(r.CATEGORIES=e[xCe]),Fv([r]),wr(e,bCe)&&(r.LABEL=e[bCe]),wr(e,TCe)&&(r.GROUP=e[TCe]),wr(e,wCe)&&(r.POP_MODE=e[wCe]),wr(e,CCe)&&(r.PUSH_MODE=e[CCe]),wr(e,kCe)&&(r.LONGER_ALT=e[kCe]),wr(e,SCe)&&(r.LINE_BREAKS=e[SCe]),wr(e,ECe)&&(r.START_CHARS_HINT=e[ECe]),r}function Rw(e,t,r,n,i,a,s,l){return{image:t,startOffset:r,endOffset:n,startLine:i,endLine:a,startColumn:s,endColumn:l,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function Iq(e,t){return $v(e,t)}function d5e(e,t){let r=new OTt(e,t);return r.resolveRefs(),r.errors}function J6(e,t,r=[]){r=Ya(r);let n=[],i=0;function a(l){return l.concat(Ha(e,i+1))}o(a,"remainingPathWith"),E(a,"remainingPathWith");function s(l){let u=J6(a(l),t,r);return n.concat(u)}for(o(s,"getAlternativesForProd"),E(s,"getAlternativesForProd");r.length{ei(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof ci)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:Ha(e,i)}),n}function Mq(e,t,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=t.length,h=u-n-1,d=[],f=[];for(f.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!ei(f);){let p=f.pop();if(p===s){l&&Xg(f).idx<=h&&f.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(ei(m))continue;let x=m[0];if(x===i){let b={idx:g,def:Ha(m),ruleStack:ew(y),occurrenceStack:ew(v)};f.push(b)}else if(x instanceof ci)if(g=0;b--){let T=x.definition[b],k={idx:g,def:T.definition.concat(Ha(m)),ruleStack:y,occurrenceStack:v};f.push(k),f.push(s)}else if(x instanceof Co)f.push({idx:g,def:x.definition.concat(Ha(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof Pv)f.push(f5e(x,g,y,v));else throw Error("non exhaustive match")}return d}function f5e(e,t,r,n){let i=Ya(r);i.push(e.name);let a=Ya(n);return a.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:a}}function ZR(e){if(e instanceof Ua||e==="Option")return wi.OPTION;if(e instanceof Mi||e==="Repetition")return wi.REPETITION;if(e instanceof Zo||e==="RepetitionMandatory")return wi.REPETITION_MANDATORY;if(e instanceof Qo||e==="RepetitionMandatoryWithSeparator")return wi.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof wo||e==="RepetitionWithSeparator")return wi.REPETITION_WITH_SEPARATOR;if(e instanceof ko||e==="Alternation")return wi.ALTERNATION;throw Error("non exhaustive match")}function MG(e){let{occurrence:t,rule:r,prodType:n,maxLookahead:i}=e,a=ZR(n);return a===wi.ALTERNATION?_w(t,r,i):Lw(t,r,a,i)}function p5e(e,t,r,n,i,a){let s=_w(e,t,r),l=Pq(s)?rw:$v;return a(s,n,l,i)}function m5e(e,t,r,n,i,a){let s=Lw(e,t,i,r),l=Pq(s)?rw:$v;return a(s[0],l,n)}function g5e(e,t,r,n){let i=e.length,a=Ec(e,s=>Ec(s,l=>l.length===1));if(t)return function(s){let l=hr(s,u=>u.GATE);for(let u=0;uSc(u)),l=Ko(s,(u,h,d)=>(Ir(h,f=>{wr(u,f.tokenTypeIdx)||(u[f.tokenTypeIdx]=d),Ir(f.categoryMatches,p=>{wr(u,p)||(u[p]=d)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=e.length;if(n&&!r){let a=Sc(e);if(a.length===1&&ei(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Ko(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ir(u.categoryMatches,d=>{l[d]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;aJ6([s],1)),n=NG(r.length),i=hr(r,s=>{let l={};return Ir(s,u=>{let h=u6(u.partialPath);Ir(h,d=>{l[d]=!0})}),l}),a=r;for(let s=1;s<=t;s++){let l=a;a=NG(l.length);for(let u=0;u{let x=u6(v.partialPath);Ir(x,b=>{i[u][b]=!0})})}}}}return n}function _w(e,t,r,n){let i=new v5e(e,wi.ALTERNATION,n);return t.accept(i),Nq(i.result,r)}function Lw(e,t,r,n){let i=new v5e(e,r);t.accept(i);let a=i.result,l=new GTt(t,e,r).startWalking(),u=new Co({definition:a}),h=new Co({definition:l});return Nq([u,h],n)}function eR(e,t){e:for(let r=0;r{let i=t[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function Pq(e){return Ec(e,t=>Ec(t,r=>Ec(r,n=>ei(n.categoryMatches))))}function T5e(e){let t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return hr(t,r=>Object.assign({type:Vs.CUSTOM_LOOKAHEAD_VALIDATION},r))}function C5e(e,t,r,n){let i=_l(e,u=>w5e(u,r)),a=M5e(e,t,r),s=_l(e,u=>_5e(u,r)),l=_l(e,u=>S5e(u,e,n,r));return i.concat(a,s,l)}function w5e(e,t){let r=new VTt;e.accept(r);let n=r.allProductions,i=rTt(n,k5e),a=_c(i,l=>l.length>1);return hr(ha(a),l=>{let u=Rc(l),h=t.buildDuplicateFoundError(e,l),d=Tc(u),f={message:h,type:Vs.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:d,occurrence:u.idx},p=Oq(u);return p&&(f.parameter=p),f})}function k5e(e){return`${Tc(e)}_#_${e.idx}_#_${Oq(e)}`}function Oq(e){return e instanceof ci?e.terminalType.name:e instanceof Gs?e.nonTerminalName:""}function S5e(e,t,r,n){let i=[];if(Ko(t,(s,l)=>l.name===e.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:e,grammarName:r});i.push({message:s,type:Vs.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}function E5e(e,t,r){let n=[],i;return qs(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:Vs.INVALID_RULE_OVERRIDE,ruleName:e})),n}function Bq(e,t,r,n=[]){let i=[],a=GC(t.definition);if(ei(a))return[];{let s=e.name;qs(a,e)&&i.push({message:r.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:n}),type:Vs.LEFT_RECURSION,ruleName:s});let u=UR(a,n.concat([e])),h=_l(u,d=>{let f=Ya(n);return f.push(d),Bq(e,d,r,f)});return i.concat(h)}}function GC(e){let t=[];if(ei(e))return t;let r=Rc(e);if(r instanceof Gs)t.push(r.referencedRule);else if(r instanceof Co||r instanceof Ua||r instanceof Zo||r instanceof Qo||r instanceof wo||r instanceof Mi)t=t.concat(GC(r.definition));else if(r instanceof ko)t=Sc(hr(r.definition,a=>GC(a.definition)));else if(!(r instanceof ci))throw Error("non exhaustive match");let n=tw(r),i=e.length>1;if(n&&i){let a=Ha(e);return t.concat(GC(a))}else return t}function A5e(e,t){let r=new $q;e.accept(r);let n=r.alternations;return _l(n,a=>{let s=ew(a.definition);return _l(s,(l,u)=>{let h=Mq([l],[],$v,1);return ei(h)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:a,emptyChoiceIdx:u}),type:Vs.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:a.idx,alternative:u+1}]:[]})})}function R5e(e,t,r){let n=new $q;e.accept(n);let i=n.alternations;return i=YR(i,s=>s.ignoreAmbiguities===!0),_l(i,s=>{let l=s.idx,u=s.maxLookahead||t,h=_w(l,e,u,s),d=D5e(h,s,e,r),f=I5e(h,s,e,r);return d.concat(f)})}function _5e(e,t){let r=new $q;e.accept(r);let n=r.alternations;return _l(n,a=>a.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:a}),type:Vs.TOO_MANY_ALTS,ruleName:e.name,occurrence:a.idx}]:[])}function L5e(e,t,r){let n=[];return Ir(e,i=>{let a=new WTt;i.accept(a);let s=a.allProductions;Ir(s,l=>{let u=ZR(l),h=l.maxLookahead||t,d=l.idx,p=Lw(d,i,u,h)[0];if(ei(Sc(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:Vs.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function D5e(e,t,r,n){let i=[],a=Ko(e,(l,u,h)=>(t.definition[h].ignoreAmbiguities===!0||Ir(u,d=>{let f=[h];Ir(e,(p,m)=>{h!==m&&eR(p,d)&&t.definition[m].ignoreAmbiguities!==!0&&f.push(m)}),f.length>1&&!eR(i,d)&&(i.push(d),l.push({alts:f,path:d}))}),l),[]);return hr(a,l=>{let u=hr(l.alts,d=>d+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:u,prefixPath:l.path}),type:Vs.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:t.idx,alternatives:l.alts}})}function I5e(e,t,r,n){let i=Ko(e,(s,l,u)=>{let h=hr(l,d=>({idx:u,path:d}));return s.concat(h)},[]);return Ew(_l(i,s=>{if(t.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,d=Ml(i,p=>t.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=t.idx===0?"":t.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:m,prefixPath:p.path}),type:Vs.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function M5e(e,t,r){let n=[],i=hr(t,a=>a.name);return Ir(e,a=>{let s=a.name;if(qs(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:Vs.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}function N5e(e){let t=Tq(e,{errMsgProvider:PTt}),r={};return Ir(e.rules,n=>{r[n.name]=n}),d5e(r,t.errMsgProvider)}function P5e(e){return e=Tq(e,{errMsgProvider:Wg}),C5e(e.rules,e.tokenTypes,e.errMsgProvider,e.grammarName)}function nw(e){return qs(z5e,e.name)}function W5e(e,t,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,d=u.occurrence,f=u.isEndOfRule;this.RULE_STACK.length===1&&f&&h===void 0&&(h=pp,d=1),!(h===void 0||d===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,d,s)&&this.tryInRepetitionRecovery(e,t,r,h)}function d6(e,t,r){return r|t|e}function U5e(e){OA.reset(),e.accept(OA);let t=OA.dslMethods;return OA.reset(),t}function $G(e,t){isNaN(e.startOffset)===!0?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffsets.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: + ${a.join(` + +`).replace(/\n/g,` + `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=t,r}function Z5e(e,t,r){let n=E(function(){},"derivedConstructor");zq(n,e+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ir(t,a=>{i[a]=X5e}),n.prototype=i,n.prototype.constructor=n,n}function Q5e(e,t){return J5e(e,t)}function J5e(e,t){let r=Ml(t,i=>rd(e[i])===!1),n=hr(r,i=>({msg:`Missing visitor method: <${i}> on ${e.constructor.name} CST Visitor.`,type:zG.MISSING_METHOD,methodName:i}));return Ew(n)}function nv(e,t,r,n=!1){iw(r);let i=Xg(this.recordingProdStack),a=rd(t)?t:t.DEF,s=new e({definition:[],idx:r});return n&&(s.separator=t.SEP),wr(t,"MAX_LOOKAHEAD")&&(s.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),JR}function rAe(e,t){iw(t);let r=Xg(this.recordingProdStack),n=un(e)===!1,i=n===!1?e:e.DEF,a=new ko({definition:[],idx:t,ignoreAmbiguities:n&&e.IGNORE_AMBIGUITIES===!0});wr(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);let s=y3e(i,l=>rd(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ir(i,l=>{let u=new Co({definition:[]});a.definition.push(u),wr(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:wr(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),JR}function GG(e){return e===0?"":`${e}`}function iw(e){if(e<0||e>LCe){let t=new Error(`Invalid DSL Method idx value: <${e}> + Idx value must be a none negative value smaller than ${LCe+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}function nAe(e,t){t.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(e.prototype,i,a):e.prototype[i]=r.prototype[i]})})}function VG(e=void 0){return function(){return e}}function aAe(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r-1}function pAe(e,t){var r=this.__data__,n=e_(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function d0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++tl))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&Cwt?new YAe:void 0;for(a.set(e,t),a.set(t,e);++f-1&&e%1==0&&e-1&&e%1==0&&e<=nkt}function y6e(e){return Lv(e)&&qq(e.length)&&!!li[zv(e)]}function v6e(e){return function(t){return e(t)}}function b6e(e,t){var r=Ws(e),n=!r&&i_(e),i=!r&&!n&&nR(e),a=!r&&!n&&!i&&Hq(e),s=r||n||i||a,l=s?Uwt(e.length,String):[],u=l.length;for(var h in e)(t||Nkt.call(e,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||m6e(h,u)))&&l.push(h);return l}function T6e(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Okt;return e===r}function w6e(e,t){return function(r){return e(t(r))}}function k6e(e){if(!C6e(e))return Fkt(e);var t=[];for(var r in Object(e))Gkt.call(e,r)&&r!="constructor"&&t.push(r);return t}function E6e(e){return e!=null&&qq(e.length)&&!EAe(e)}function A6e(e){return a_(e)?Pkt(e):S6e(e)}function R6e(e){return zwt(e,Uq,Hwt)}function _6e(e,t,r,n,i,a){var s=r&Vkt,l=VCe(e),u=l.length,h=VCe(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:qkt.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++feH(e,t,s));return y0(e,t,n,r,...i)}function CRe(e,t,r){let n=da(e,t,r,{type:mp});id(e,n);let i=y0(e,t,n,r,Tp(e,t,r));return wRe(e,t,r,i)}function Tp(e,t,r){let n=WSt(qh(r.definition,i=>eH(e,t,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:SRe(e,n)}function tH(e,t,r,n,i){let a=n.left,s=n.right,l=da(e,t,r,{type:jSt});id(e,l);let u=da(e,t,r,{type:fRe});return a.loopback=l,u.loopback=l,e.decisionMap[Zg(t,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,$i(s,l),i===void 0?($i(l,a),$i(l,u)):($i(l,u),$i(l,i.left),$i(i.right,a)),{left:a,right:u}}function rH(e,t,r,n,i){let a=n.left,s=n.right,l=da(e,t,r,{type:YSt});id(e,l);let u=da(e,t,r,{type:fRe}),h=da(e,t,r,{type:USt});return l.loopback=h,u.loopback=h,$i(l,a),$i(l,u),$i(s,h),i!==void 0?($i(h,u),$i(h,i.left),$i(i.right,a)):$i(h,l),e.decisionMap[Zg(t,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function wRe(e,t,r,n){let i=n.left,a=n.right;return $i(i,a),e.decisionMap[Zg(t,"Option",r.idx)]=i,n}function id(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function y0(e,t,r,n,...i){let a=da(e,t,n,{type:HSt,start:r});r.end=a;for(let l of i)l!==void 0?($i(r,l.left),$i(l.right,a)):$i(r,a);let s={left:r,right:a};return e.decisionMap[Zg(t,kRe(n),n.idx)]=r,s}function kRe(e){if(e instanceof ko)return"Alternation";if(e instanceof Ua)return"Option";if(e instanceof Mi)return"Repetition";if(e instanceof wo)return"RepetitionWithSeparator";if(e instanceof Zo)return"RepetitionMandatory";if(e instanceof Qo)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function SRe(e,t){let r=t.length;for(let a=0;ar.stateNumber.toString()).join("_")}`}function _Re(e,t,r){for(var n=-1,i=e.length;++n0&&r(l)?t>1?iH(l,t-1,r,n,i):n6e(i,l):n||(i[i.length]=l)}return i}function NRe(e,t){return MRe(qh(e,t),1)}function PRe(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a-1}function zRe(e,t,r){for(var n=-1,i=e==null?0:e.length;++n=uEt){var h=t?null:cEt(e);if(h)return Wq(h);s=!1,i=KAe,u=new YAe}else u=t?[]:l;e:for(;++n{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:e,decision:t,states:{}},r[i]=a),a}}function jG(e,t=!0){let r=new Set;for(let n of e){let i=new Set;for(let a of n){if(a===void 0){if(t)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function e_e(e){let t=e.decisionStates.length,r=Array(t);for(let n=0;nUg(i)).join(", "),r=e.production.idx===0?"":e.production.idx,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${a_e(e.production)}${r}> inside <${e.topLevelRule.name}> Rule, +<${t}> may appears as a prefix path in all these alternatives. +`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n}function a_e(e){if(e instanceof Gs)return"SUBRULE";if(e instanceof Ua)return"OPTION";if(e instanceof ko)return"OR";if(e instanceof Zo)return"AT_LEAST_ONE";if(e instanceof Qo)return"AT_LEAST_ONE_SEP";if(e instanceof wo)return"MANY_SEP";if(e instanceof Mi)return"MANY";if(e instanceof ci)return"CONSUME";throw Error("non exhaustive match")}function s_e(e,t,r){let n=JSt(t.configs.elements,a=>a.state.transitions),i=dEt(n.filter(a=>a instanceof Qq).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:e}}function o_e(e,t){return e.edges[t.tokenTypeIdx]}function l_e(e,t,r){let n=new YG,i=[];for(let s of e.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===Dw){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!f_e(a))for(let s of i)a.add(s);return a}function c_e(e,t){if(e instanceof Qq&&Iq(t,e.tokenType))return e.target}function u_e(e,t){let r;for(let n of e.elements)if(t.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function aH(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function XG(e,t,r,n){return n=sH(e,n),t.edges[r.tokenTypeIdx]=n,n}function sH(e,t){if(t===iR)return t;let r=t.configs.key,n=e.states[r];return n!==void 0?n:(t.configs.finalize(),e.states[r]=t,t)}function h_e(e){let t=new YG,r=e.transitions.length;for(let n=0;n0){let i=[...e.stack],s={state:i.pop(),alt:e.alt,stack:i};lw(s,t)}else t.add(e);return}r.epsilonOnlyTransitions||t.add(e);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function v_e(e){for(let t of Array.from(e.values()))if(Object.keys(t).length===1)return!0;return!1}function m6(e){return e.$type===sR}function p_(e,t,r){return E_e({parser:t,tokens:r,ruleNames:new Map},e),t}function E_e(e,t){let r=_R(t,!1),n=Bn(t.rules).filter(zs).filter(a=>r.has(a));for(let a of n){let s={...e,consume:1,optional:1,subrule:1,many:1,or:1};e.parser.rule(a,gp(s,a.definition))}let i=Bn(t.rules).filter(Sv).filter(a=>r.has(a));for(let a of i)e.parser.rule(a,A_e(e,a))}function A_e(e,t){let r=t.call.rule.ref;if(!r)throw new Error("Could not resolve reference to infix operator rule: "+t.call.rule.$refText);if(Il(r))throw new Error("Cannot use terminal rule in infix expression");let n=t.operators.precedences.flatMap(m=>m.operators),i={$type:"Group",elements:[]},a={$container:i,$type:"Assignment",feature:"parts",operator:"+=",terminal:t.call},s={$container:i,$type:"Group",elements:[],cardinality:"*"};i.elements.push(a,s);let u={$container:s,$type:"Assignment",feature:"operators",operator:"+=",terminal:{$type:"Alternatives",elements:n}},h={...a,$container:s};s.elements.push(u,h);let f=n.map(m=>e.tokens[m.value]).map((m,g)=>({ALT:E(()=>e.parser.consume(g,m,u),"ALT")})),p;return m=>{p??(p=m_(e,r)),e.parser.subrule(0,p,!1,a,m),e.parser.many(0,{DEF:E(()=>{e.parser.alternatives(0,f),e.parser.subrule(1,p,!1,h,m)},"DEF")})}}function gp(e,t,r=!1){let n;if(Yh(t))n=N_e(e,t);else if(dp(t))n=R_e(e,t);else if(Uh(t))n=gp(e,t.terminal);else if(r0(t))n=hH(e,t);else if(jh(t))n=__e(e,t);else if(bR(t))n=D_e(e,t);else if(kR(t))n=I_e(e,t);else if(n0(t))n=M_e(e,t);else if(pW(t)){let i=e.consume++;n=E(()=>e.parser.consume(i,pp,t),"method")}else throw new ER(t.$cstNode,`Unexpected element type: ${t.$type}`);return dH(e,r?void 0:cw(t),n,t.cardinality)}function R_e(e,t){let r=jg(t);return()=>e.parser.action(r,t)}function __e(e,t){let r=t.rule.ref;if(t0(r)){let n=e.subrule++,i=zs(r)&&r.fragment,a=t.arguments.length>0?L_e(r,t.arguments):()=>({}),s;return l=>{s??(s=m_(e,r)),e.parser.subrule(n,s,i,t,a(l))}}else if(Il(r)){let n=e.consume++,i=oR(e,r.name);return()=>e.parser.consume(n,i,t)}else if(r)vp(r);else throw new ER(t.$cstNode,`Undefined rule: ${t.rule.$refText}`)}function L_e(e,t){if(t.some(n=>n.calledByName)){let n=t.map(i=>({parameterName:i.parameter?.ref?.name,predicate:Cc(i.value)}));return i=>{let a={};for(let{parameterName:s,predicate:l}of n)s&&(a[s]=l(i));return a}}else{let n=t.map(i=>Cc(i.value));return i=>{let a={};for(let s=0;st(n)||r(n)}else if(dW(e)){let t=Cc(e.left),r=Cc(e.right);return n=>t(n)&&r(n)}else if(yW(e)){let t=Cc(e.value);return r=>!t(r)}else if(vW(e)){let t=e.parameter.ref.name;return r=>r!==void 0&&r[t]===!0}else if(uW(e)){let t=!!e.true;return()=>t}vp(e)}function D_e(e,t){if(t.elements.length===1)return gp(e,t.elements[0]);{let r=[];for(let i of t.elements){let a={ALT:gp(e,i,!0)},s=cw(i);s&&(a.GATE=Cc(s)),r.push(a)}let n=e.or++;return i=>e.parser.alternatives(n,r.map(a=>{let s={ALT:E(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function I_e(e,t){if(t.elements.length===1)return gp(e,t.elements[0]);let r=[];for(let l of t.elements){let u={ALT:gp(e,l,!0)},h=cw(l);h&&(u.GATE=Cc(h)),r.push(u)}let n=e.or++,i=E((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=E(l=>e.parser.alternatives(n,r.map((u,h)=>{let d={ALT:E(()=>!0,"ALT")},f=e.parser;d.ALT=()=>{if(u.ALT(l),!f.isRecording()){let m=i(n,f);f.unorderedGroups.get(m)||f.unorderedGroups.set(m,[]);let g=f.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?d.GATE=()=>p(l):d.GATE=()=>!f.unorderedGroups.get(i(n,f))?.[h],d})),"alternatives"),s=dH(e,cw(t),a,"*");return l=>{s(l),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(n,e.parser))}}function M_e(e,t){let r=t.elements.map(n=>gp(e,n));return n=>r.forEach(i=>i(n))}function cw(e){if(n0(e))return e.guardCondition}function hH(e,t,r=t.terminal){if(r)if(jh(r)&&zs(r.rule.ref)){let n=r.rule.ref,i=e.subrule++,a;return s=>{a??(a=m_(e,n)),e.parser.subrule(i,a,!1,t,s)}}else if(jh(r)&&Il(r.rule.ref)){let n=e.consume++,i=oR(e,r.rule.ref.name);return()=>e.parser.consume(n,i,t)}else if(Yh(r)){let n=e.consume++,i=oR(e,r.value);return()=>e.parser.consume(n,i,t)}else throw new Error("Could not build cross reference parser");else{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);let i=MR(t.type.ref)?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+jg(t.type.ref));return hH(e,t,i)}}function N_e(e,t){let r=e.consume++,n=e.tokens[t.value];if(!n)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(r,n,t)}function dH(e,t,r,n){let i=t&&Cc(t);if(!n)if(i){let a=e.or++;return s=>e.parser.alternatives(a,[{ALT:E(()=>r(s),"ALT"),GATE:E(()=>i(s),"GATE")},{ALT:VG(),GATE:E(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=e.many++;return s=>e.parser.many(a,{DEF:E(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=e.many++;if(i){let s=e.or++;return l=>e.parser.alternatives(s,[{ALT:E(()=>e.parser.atLeastOne(a,{DEF:E(()=>r(l),"DEF")}),"ALT"),GATE:E(()=>i(l),"GATE")},{ALT:VG(),GATE:E(()=>!i(l),"GATE")}])}else return s=>e.parser.atLeastOne(a,{DEF:E(()=>r(s),"DEF")})}else if(n==="?"){let a=e.optional++;return s=>e.parser.optional(a,{DEF:E(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else vp(n)}function m_(e,t){let r=P_e(e,t),n=e.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function P_e(e,t){if(t0(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let r=t,n=r.$container,i=t.$type;for(;!zs(n);)(n0(n)||bR(n)||kR(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,e.ruleNames.set(t,i),i}}function oR(e,t){let r=e.tokens[t];if(!r)throw new Error(`Token "${t}" not found."`);return r}function fH(e){let t=e.Grammar,r=e.parser.Lexer,n=new k_e(e);return p_(t,n,r.definition),n.finalize(),n}function pH(e){let t=mH(e);return t.finalize(),t}function mH(e){let t=e.Grammar,r=e.parser.Lexer,n=new C_e(e);return p_(t,n,r.definition)}function y_(){return new Promise(e=>{typeof setImmediate>"u"?setTimeout(e,0):setImmediate(e)})}function v_(){return g6=performance.now(),new Jn.CancellationTokenSource}function yH(e){O_e=e}function v0(e){return e===Pu}async function Ia(e){if(e===Jn.CancellationToken.None)return;let t=performance.now();if(t-g6>=O_e&&(g6=t,await y_(),g6=performance.now()),e.isCancellationRequested)throw Pu}function cR(e,t){if(e.length<=1)return e;let r=e.length/2|0,n=e.slice(0,r),i=e.slice(r);cR(n,t),cR(i,t);let a=0,s=0,l=0;for(;ar.line||t.line===r.line&&t.character>r.character?{start:r,end:t}:e}function B_e(e){let t=xH(e.range);return t!==e.range?{newText:e.newText,range:t}:e}function TH(e){return typeof e.name=="string"}function kH(e){return typeof e.$comment=="string"}function JG(e){return typeof e=="object"&&!!e&&("$ref"in e||"$error"in e)}function qg(e){return{code:e}}function SH(e){if(e.range)return e.range;let t;return typeof e.property=="string"?t=LR(e.node.$cstNode,e.property,e.index):typeof e.keyword=="string"&&(t=jW(e.node.$cstNode,e.keyword,e.index)),t??(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function WC(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function EH(e){switch(e){case"error":return qg(Rl.LexingError);case"warning":return qg(Rl.LexingWarning);case"info":return qg(Rl.LexingInfo);case"hint":return qg(Rl.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}function C_(e){return Array.isArray(e)&&(e.length===0||"name"in e[0])}function w_(e){return e&&"modes"in e&&"defaultMode"in e}function dR(e){return!C_(e)&&!w_(e)}function _H(e,t,r){let n,i;typeof e=="string"?(i=t,n=r):(i=e.range.start,n=t),i||(i=En.create(0,0));let a=DH(e),s=k_(n),l=oLe({lines:a,position:i,options:s});return uLe({index:0,tokens:l,position:i})}function LH(e,t){let r=k_(t),n=DH(e);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function DH(e){let t="";return typeof e=="string"?t=e:t=e.text,t.split(cke)}function oLe(e){let t=[],r=e.position.line,n=e.position.character;for(let i=0;i=l.length){if(t.length>0){let d=En.create(r,n);t.push({type:"break",content:"",range:an.create(d,d)})}}else{iwe.lastIndex=u;let d=iwe.exec(l);if(d){let f=d[0],p=d[1],m=En.create(r,n+u),g=En.create(r,n+u+f.length);t.push({type:"tag",content:p,range:an.create(m,g)}),u+=f.length,u=fR(l,u)}if(u0&&t[t.length-1].type==="break"?t.slice(0,-1):t}function lLe(e,t,r,n){let i=[];if(e.length===0){let a=En.create(r,n),s=En.create(r,n+t.length);i.push({type:"text",content:t,range:an.create(a,s)})}else{let a=0;for(let l of e){let u=l.index,h=t.substring(a,u);h.length>0&&i.push({type:"text",content:t.substring(a,u),range:an.create(En.create(r,a+n),En.create(r,u+n))});let d=h.length+1,f=l[1];if(i.push({type:"inline-tag",content:f,range:an.create(En.create(r,a+d+n),En.create(r,a+d+f.length+n))}),d+=f.length,l.length===4){d+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:an.create(En.create(r,a+d+n),En.create(r,a+d+p.length+n))})}else i.push({type:"text",content:"",range:an.create(En.create(r,a+d+n),En.create(r,a+d+n))});a=u+l[0].length}let s=t.substring(a);s.length>0&&i.push({type:"text",content:s,range:an.create(En.create(r,a+n),En.create(r,a+n+s.length))})}return i}function fR(e,t){let r=e.substring(t).match(LEt);return r?t+r.index:e.length}function cLe(e){let t=e.match(DEt);if(t&&typeof t.index=="number")return t.index}function uLe(e){let t=En.create(e.position.line,e.position.character);if(e.tokens.length===0)return new awe([],an.create(t,t));let r=[];for(;e.index0){let s=fR(t,n);i=t.substring(s),t=t.substring(0,n)}return(e==="linkcode"||e==="link"&&r.link==="code")&&(i=`\`${i}\``),r.renderLink?.(t,i)??mLe(t,i)}}function mLe(e,t){try{return Yo.parse(e,!0),`[${t}](${e})`}catch{return e}}function tV(e){return e.endsWith(` +`)?` +`:` + +`}function hn(e){return{documentation:{CommentProvider:E(t=>new vLe(t),"CommentProvider"),DocumentationProvider:E(t=>new yLe(t),"DocumentationProvider")},parser:{AsyncParser:E(t=>new xLe(t),"AsyncParser"),GrammarConfig:E(t=>rq(t),"GrammarConfig"),LangiumParser:E(t=>pH(t),"LangiumParser"),CompletionParser:E(t=>fH(t),"CompletionParser"),ValueConverter:E(()=>new gH,"ValueConverter"),TokenBuilder:E(()=>new g_,"TokenBuilder"),Lexer:E(t=>new RH(t),"Lexer"),ParserErrorMessageProvider:E(()=>new uH,"ParserErrorMessageProvider"),LexerErrorMessageProvider:E(()=>new sLe,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:E(()=>new tLe,"AstNodeLocator"),AstNodeDescriptionProvider:E(t=>new J_e(t),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:E(t=>new eLe(t),"ReferenceDescriptionProvider")},references:{Linker:E(t=>new G_e(t),"Linker"),NameProvider:E(()=>new V_e,"NameProvider"),ScopeProvider:E(t=>new Y_e(t),"ScopeProvider"),ScopeComputation:E(t=>new q_e(t),"ScopeComputation"),References:E(t=>new W_e(t),"References")},serializer:{Hydrator:E(t=>new TLe(t),"Hydrator"),JsonSerializer:E(t=>new j_e(t),"JsonSerializer")},validation:{DocumentValidator:E(t=>new Q_e(t),"DocumentValidator"),ValidationRegistry:E(t=>new K_e(t),"ValidationRegistry")},shared:E(()=>e.shared,"shared")}}function dn(e){return{ServiceRegistry:E(t=>new X_e(t),"ServiceRegistry"),workspace:{LangiumDocuments:E(t=>new z_e(t),"LangiumDocuments"),LangiumDocumentFactory:E(t=>new F_e(t),"LangiumDocumentFactory"),DocumentBuilder:E(t=>new nLe(t),"DocumentBuilder"),IndexManager:E(t=>new iLe(t),"IndexManager"),WorkspaceManager:E(t=>new aLe(t),"WorkspaceManager"),FileSystemProvider:E(t=>e.fileSystemProvider(t),"FileSystemProvider"),WorkspaceLock:E(()=>new bLe,"WorkspaceLock"),ConfigurationProvider:E(t=>new rLe(t),"ConfigurationProvider")},profilers:{}}}function Mr(e,t,r,n,i,a,s,l,u){let h=[e,t,r,n,i,a,s,l,u].reduce(Dv,{});return OH(h)}function PH(e){if(e&&e[CLe])for(let t of Object.values(e))PH(t);return e}function OH(e,t){let r=new Proxy({},{deleteProperty:E(()=>!1,"deleteProperty"),set:E(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:E((n,i)=>i===CLe?!0:nV(n,i,e,t||r),"get"),getOwnPropertyDescriptor:E((n,i)=>(nV(n,i,e,t||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:E((n,i)=>i in e,"has"),ownKeys:E(()=>[...Object.getOwnPropertyNames(e)],"ownKeys")});return r}function nV(e,t,r,n){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: "+e[t]);if(e[t]===swe)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}else if(t in r){let i=r[t];e[t]=swe;try{e[t]=typeof i=="function"?i(n):OH(i,n)}catch(a){throw e[t]=a instanceof Error?a:void 0,a}return e[t]}else return}function Dv(e,t){if(t){for(let[r,n]of Object.entries(t))if(n!=null)if(typeof n=="object"){let i=e[r];typeof i=="object"&&i!==null?e[r]=Dv(i,n):e[r]=Dv({},n)}else e[r]=n}return e}function SLe(){let e=Mr(dn(yn),OEt),t=Mr(hn({shared:e}),PEt);return e.ServiceRegistry.register(t),t}function Ma(e){let t=SLe(),r=t.serializer.JsonSerializer.deserialize(e);return t.shared.workspace.LangiumDocumentFactory.fromModel(r,Yo.parse(`memory:/${r.name??"grammar"}.langium`)),r}function ALe(e){return Fi.isInstance(e,bc.$type)}function RLe(e){return Fi.isInstance(e,qC.$type)}function _Le(e){return Fi.isInstance(e,Mg.$type)}function LLe(e){return Fi.isInstance(e,cp.$type)}function DLe(e){return Fi.isInstance(e,HC.$type)}function ILe(e){return Fi.isInstance(e,pR.$type)}function MLe(e){return e==="rmo"||e==="readmodel"||e==="ui"||e==="cmd"||e==="command"||e==="evt"||e==="event"||e==="pcr"||e==="processor"}function S_(e){return Fi.isInstance(e,Gh.$type)}function NLe(e){return Fi.isInstance(e,up.$type)}function PLe(e){return Fi.isInstance(e,mv.$type)}function OLe(e){return Fi.isInstance(e,Ng.$type)}function BLe(e){return Fi.isInstance(e,Pg.$type)}function $Le(e){return Fi.isInstance(e,Og.$type)}function FLe(e){return Fi.isInstance(e,hp.$type)}function zLe(e){return Fi.isInstance(e,UC.$type)}function GLe(e){return Fi.isInstance(e,Bg.$type)}function VLe(e){return Fi.isInstance(e,$g.$type)}function WLe(e){return Fi.isInstance(e,Fg.$type)}function qLe(e){return Fi.isInstance(e,zg.$type)}function HLe(e){return Fi.isInstance(e,gv.$type)}function ULe(e){return Fi.isInstance(e,Gg.$type)}function YLe(e){return Fi.isInstance(e,La.$type)}var T0t,uw,C0t,JV,w0t,k0t,E,S0t,zr,yp,E6,mR,eW,tW,gR,Tz,ZA,Cz,yC,En,an,vC,wz,QA,kz,Sz,Ez,Az,JA,Rz,_z,Lz,xC,hg,Ru,dg,qa,Fh,bC,Q1,J1,ev,e6,lC,JF,Ewe,Dz,Iz,TC,Mz,t6,tv,Nz,Pz,Oz,Bz,$z,Fz,zz,Gz,CC,Vz,Wz,qz,Hz,Uz,Yz,jz,Xz,Kz,Zz,Qz,wC,Jz,eG,tG,rG,nG,iG,aG,sG,oG,lG,cG,uG,hG,r6,n6,dG,fG,pG,mG,gG,yG,vG,xG,Awe,bG,PTe,nt,hw,Qg,dw,Iv,yR,_we,Dwe,E0t,A0t,Iwe,R0t,_0t,L0t,D0t,TG,I0t,Mv,OTe,ki,rW,M0t,N0t,P0t,O0t,B0t,$0t,F0t,z0t,G0t,V0t,W0t,q0t,H0t,U0t,Y0t,j0t,X0t,K0t,Z0t,Q0t,J0t,eyt,tyt,ryt,nyt,Pwe,nW,aW,Nu,Tv,Os,Cv,jC,sW,$we,iyt,xo,_C,ov,Uo,ip,LC,L6,D6,ap,I6,sp,op,DC,lp,IC,M6,Vh,N6,Cg,P6,Du,MC,O6,lv,cv,uv,wg,B6,$6,hv,F6,xc,NC,kg,z6,Sg,dv,G6,Eg,bo,Ag,Wh,Rg,PC,_g,Lg,V6,OC,Dg,Ig,fv,AW,Tr,Mu,DW,OW,ER,$W,q6,H6,BTe,ayt,MA,syt,lke,AR,cke,uke,oyt,Vg,dke,tq,lyt,Ske,cyt,uyt,Fu,hyt,Ll,Eke,dyt,fyt,cC,pyt,myt,gyt,yyt,vyt,xyt,$Te,xp,Ac,byt,NR,vw,Tyt,un,Cyt,FTe,zTe,wyt,kyt,Syt,Eyt,Ayt,Dl,GTe,Ryt,_yt,Lyt,Dyt,Iyt,VTe,Myt,Nyt,xw,bw,Pyt,Oyt,Byt,$yt,rd,Fyt,ez,WTe,zyt,Gyt,Vyt,a0,Wyt,qyt,Hyt,Uyt,Yyt,jyt,Xyt,Kyt,Zyt,s0,Qyt,kG,qTe,Jyt,e1t,t1t,Da,r1t,n1t,i1t,a1t,s1t,o1t,l1t,Y6,c1t,u1t,h1t,d1t,Qke,eSe,f1t,p1t,iq,aSe,m1t,g1t,PR,aq,Tw,y1t,v1t,OR,Cw,HTe,x1t,sq,b1t,oq,zu,BR,T1t,C1t,ww,w1t,k1t,UTe,bSe,S1t,E1t,A1t,$R,R1t,CSe,YTe,_1t,jTe,L1t,D1t,KC,I1t,M1t,N1t,P1t,O1t,B1t,$1t,F1t,z1t,G1t,V1t,W1t,q1t,H1t,U1t,Y1t,j1t,X1t,K1t,Z1t,Q1t,J1t,evt,tvt,oi,rvt,kw,SSe,BC,nvt,tz,ivt,fp,XTe,avt,lq,svt,ovt,ASe,_Se,lvt,cvt,uvt,hvt,DSe,jo,dvt,fvt,pvt,Xo,mvt,gvt,yvt,vvt,FR,xvt,bvt,cq,Tvt,ZC,Cvt,wvt,kvt,Svt,Evt,Avt,Rvt,_vt,Lvt,Dvt,Ivt,KTe,Mvt,zR,Nvt,Pvt,Ovt,Bvt,$vt,Fvt,GR,zvt,QC,Gvt,Vvt,VR,Wvt,qvt,Hvt,Uvt,WR,Yvt,jvt,Xvt,Kvt,Zvt,Qvt,Jvt,ext,txt,HR,rxt,Sw,uq,nxt,hq,ZTe,ixt,fq,Sc,axt,uEe,dEe,sxt,oxt,lxt,cxt,uxt,hxt,dxt,$C,fxt,pxt,TEe,QTe,mxt,JTe,eCe,gxt,pq,SEe,yxt,vxt,tCe,xxt,mq,bxt,Txt,Cxt,AEe,wxt,LEe,SG,MEe,kxt,EG,Sxt,AG,Ext,vv,rCe,Axt,nCe,iCe,aCe,sCe,Rxt,_xt,Lxt,Dxt,Ixt,pg,Rv,Mxt,Nxt,Pxt,Oxt,j6,gq,Bxt,$xt,Fxt,oCe,lCe,zxt,Gxt,Vxt,Wxt,qxt,Hxt,Uxt,Yxt,jxt,Xxt,Kxt,Zxt,Qxt,Jxt,ebt,tbt,rbt,nbt,ibt,abt,sbt,obt,lbt,cbt,ubt,cCe,hbt,dbt,fbt,pbt,uCe,mbt,gbt,ybt,vbt,xbt,qEe,bbt,Tbt,Cbt,wbt,HEe,kbt,Sbt,Ebt,UEe,Abt,Rbt,_bt,Lbt,Dbt,Ibt,Mbt,Nbt,Pbt,Obt,Bbt,$bt,Fbt,zbt,Gbt,Vbt,Qn,Wbt,qbt,Ya,Ew,Hbt,Ubt,Ybt,yq,QEe,vq,jbt,Xbt,t4e,Kbt,xq,Zbt,Qbt,Jbt,e2t,t2t,r2t,n2t,i2t,a2t,s2t,o2t,l2t,c2t,hCe,rz,u2t,h2t,d2t,f2t,p2t,m2t,dCe,fCe,NA,g2t,pCe,y2t,o4e,v2t,x2t,b2t,u4e,T2t,f4e,C2t,w2t,y4e,k2t,S2t,E2t,A2t,R2t,_2t,L2t,Gu,D2t,I2t,M2t,N2t,P2t,O2t,B2t,h0,$2t,F2t,L4e,z2t,G2t,Tq,mCe,M4e,V2t,W2t,q2t,UR,Xg,Ha,ew,H2t,Ir,U2t,Y2t,Ec,q4e,Ml,j2t,X2t,K2t,Z2t,_v,Rc,Q2t,hr,_l,J2t,eTt,tTt,rTt,nTt,iTt,aTt,wr,sTt,To,oTt,ha,lTt,qs,cTt,gCe,uTt,hTt,dTt,fTt,ei,pTt,mTt,yCe,gTt,Xh,Kh,yTt,vTt,xTt,bTt,_c,TTt,Ko,YR,CTt,y3e,wTt,kTt,STt,ETt,ATt,Cq,Vu,Gs,Pv,Co,Ua,Zo,Qo,Mi,wo,ko,ci,Ov,jR,R3e,RTt,o6,_Tt,I3e,K6,LTt,Kg,EC,PA,DTt,ITt,MTt,AC,c6,vCe,n5e,IG,Ni,RC,Fs,NTt,xCe,bCe,TCe,CCe,wCe,kCe,SCe,ECe,pp,pv,PTt,Wg,OTt,BTt,$Tt,KR,FTt,ACe,zTt,RCe,wi,GTt,v5e,VTt,$q,WTt,O5e,B5e,$5e,F5e,z5e,QR,G5e,qTt,HTt,UTt,nz,V5e,YTt,jTt,XTt,bp,KTt,q5e,H5e,PG,OG,BG,h6,zIr,Fq,ZTt,QTt,OA,JTt,zG,eCt,tCt,rCt,nCt,iCt,aCt,JR,_Ce,LCe,eAe,tAe,sCt,oCt,lCt,tR,Qh,rR,Vs,Gq,cCt,sAe,uCt,cAe,e_,hCt,dCt,fCt,pCt,mCt,gCt,t_,yCt,vCt,xCt,bCt,TCt,xAe,CCt,wCt,nd,kCt,$u,bAe,SCt,ECt,uC,ACt,RCt,_Ct,LCt,DCt,ICt,DCe,zv,Vq,MCt,NCt,PCt,OCt,EAe,BCt,iz,ICe,$Ct,FCt,zCt,f0,GCt,VCt,WCt,qCt,HCt,UCt,YCt,jCt,XCt,Gv,KCt,aw,ZCt,sw,QCt,JCt,ewt,twt,rwt,nwt,iwt,awt,swt,owt,lwt,MCe,cwt,uwt,r_,hwt,dwt,fwt,pwt,n_,mwt,gwt,f6,ywt,vwt,xwt,YAe,bwt,KAe,Twt,Cwt,QAe,wwt,NCe,kwt,Wq,Swt,Ewt,Awt,Rwt,_wt,Lwt,Dwt,Iwt,Mwt,Nwt,Pwt,Owt,Bwt,PCe,az,$wt,n6e,Fwt,Ws,zwt,s6e,Gwt,Vwt,Wwt,OCe,qwt,Hwt,Uwt,Lv,Ywt,BCe,h6e,jwt,Xwt,Kwt,i_,Zwt,f6e,$Ce,Qwt,FCe,Jwt,ekt,nR,tkt,rkt,m6e,nkt,qq,ikt,akt,skt,okt,lkt,ckt,ukt,hkt,dkt,fkt,pkt,mkt,gkt,ykt,vkt,xkt,bkt,Tkt,Ckt,wkt,kkt,Skt,Ekt,Akt,li,Rkt,_kt,x6e,VC,Lkt,sz,Dkt,zCe,GCe,Ikt,Hq,Mkt,Nkt,Pkt,Okt,C6e,Bkt,$kt,Fkt,zkt,Gkt,S6e,a_,Uq,VCe,Vkt,Wkt,qkt,Hkt,Ukt,WG,Ykt,qG,jkt,bv,Xkt,HG,WCe,Kkt,qCe,HCe,UCe,YCe,Zkt,Qkt,Jkt,eSt,tSt,mg,UG,rSt,jCe,XCe,BA,nSt,KCe,iSt,D6e,aSt,sSt,oSt,N6e,lSt,B6e,cSt,uSt,s_,hSt,dSt,jq,fSt,pSt,mSt,gSt,ySt,vSt,xSt,bSt,TSt,ZCe,QCe,CSt,wSt,q6e,kSt,l_,Y6e,SSt,ESt,ASt,RSt,_St,LSt,DSt,Kq,ISt,MSt,NSt,c_,PSt,OSt,BSt,$St,FSt,zSt,u_,GSt,qh,VSt,WSt,mp,qSt,hRe,dRe,Dw,HSt,USt,YSt,jSt,fRe,Zq,Qq,pRe,Jq,iR,YG,XSt,KSt,ZSt,JCe,QSt,MRe,JSt,eEt,tEt,rEt,nEt,iEt,aEt,sEt,oEt,lEt,cEt,uEt,hEt,dEt,fEt,pEt,mEt,oz,gEt,yEt,vEt,xEt,bEt,TEt,CEt,ewe,JRe,twe,wEt,x_e,oH,aR,f_,kEt,lH,sR,rwe,T_e,cH,C_e,w_e,uH,k_e,SEt,S_e,EEt,g_,gH,Iu,Jn,g6,O_e,Pu,Jh,nwe,lR,$_e,Yo,hC,$s,bH,en,F_e,z_e,gg,G_e,V_e,W_e,ed,uR,q_e,QG,AEt,H_e,REt,x_,CH,b_,U_e,wH,Y_e,j_e,X_e,hR,K_e,Z_e,Q_e,Rl,J_e,eLe,tLe,T_,rLe,$A,Yg,nLe,iLe,aLe,sLe,AH,RH,iwe,_Et,LEt,DEt,awe,lz,eV,gLe,yLe,vLe,xLe,IEt,MEt,bLe,TLe,rV,CLe,swe,iV,Hg,wLe,NEt,BH,kLe,yn,PEt,OEt,BEt,ELe,aV,sV,oV,lV,cV,uV,hV,dV,fV,pV,mV,gV,yV,vV,xV,GIr,bV,TV,v6,CV,wV,kV,yg,x6,SV,EV,FA,cz,zA,dC,uz,bc,GA,qC,owe,VA,hz,Mg,WA,cg,qA,cp,HA,lwe,K1,HC,pR,AV,RV,_V,LV,DV,IV,MV,iv,tp,NV,b6,PV,OV,T6,BV,$V,Au,vg,rp,fC,cwe,dz,UA,Gh,ep,fz,_u,uwe,YA,pz,up,pC,mv,mC,mz,gC,jA,ug,Ng,XA,gz,Pg,Og,FV,zV,GV,VV,WV,C6,av,w6,qV,k6,hp,UC,yz,KA,np,Bg,$g,HV,Fg,Lu,UV,YV,jV,zg,S6,XV,KV,ZV,QV,vz,Z1,xz,xg,gv,Gg,bz,bg,sv,La,jLe,Fi,hwe,$Et,dwe,FEt,fwe,zEt,pwe,GEt,mwe,VEt,gwe,WEt,ywe,qEt,vwe,HEt,xwe,UEt,bwe,YEt,Twe,jEt,Cwe,XEt,wwe,KEt,kwe,ZEt,Swe,QEt,JEt,e4t,t4t,r4t,n4t,i4t,a4t,s4t,o4t,l4t,c4t,u4t,h4t,d4t,f4t,An,$H,FH,zH,GH,VH,WH,qH,HH,UH,YH,jH,XH,KH,ZH,QH,p4t,m4t,g4t,y4t,Qi,Jo,Mn,v4t,vn=F(()=>{"use strict";T0t=Object.create,uw=Object.defineProperty,C0t=Object.getOwnPropertyDescriptor,JV=Object.getOwnPropertyNames,w0t=Object.getPrototypeOf,k0t=Object.prototype.hasOwnProperty,E=o((e,t)=>uw(e,"name",{value:t,configurable:!0}),"__name"),S0t=o((e,t)=>o(function(){return e&&(t=(0,e[JV(e)[0]])(e=0)),t},"__init"),"__esm"),zr=o((e,t)=>o(function(){return t||(0,e[JV(e)[0]])((t={exports:{}}).exports,t),t.exports},"__require"),"__commonJS"),yp=o((e,t)=>{for(var r in t)uw(e,r,{get:t[r],enumerable:!0})},"__export"),E6=o((e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of JV(t))!k0t.call(e,i)&&i!==r&&uw(e,i,{get:o(()=>t[i],"get"),enumerable:!(n=C0t(t,i))||n.enumerable});return e},"__copyProps"),mR=o((e,t,r)=>(E6(e,t,"default"),r&&E6(r,t,"default")),"__reExport"),eW=o((e,t,r)=>(r=e!=null?T0t(w0t(e)):{},E6(t||!e||!e.__esModule?uw(r,"default",{value:e,enumerable:!0}):r,e)),"__toESM"),tW=o(e=>E6(uw({},"__esModule",{value:!0}),e),"__toCommonJS"),gR={};yp(gR,{AnnotatedTextEdit:o(()=>Fh,"AnnotatedTextEdit"),ChangeAnnotation:o(()=>dg,"ChangeAnnotation"),ChangeAnnotationIdentifier:o(()=>qa,"ChangeAnnotationIdentifier"),CodeAction:o(()=>eG,"CodeAction"),CodeActionContext:o(()=>Jz,"CodeActionContext"),CodeActionKind:o(()=>Qz,"CodeActionKind"),CodeActionTriggerKind:o(()=>wC,"CodeActionTriggerKind"),CodeDescription:o(()=>Lz,"CodeDescription"),CodeLens:o(()=>tG,"CodeLens"),Color:o(()=>QA,"Color"),ColorInformation:o(()=>kz,"ColorInformation"),ColorPresentation:o(()=>Sz,"ColorPresentation"),Command:o(()=>hg,"Command"),CompletionItem:o(()=>zz,"CompletionItem"),CompletionItemKind:o(()=>Nz,"CompletionItemKind"),CompletionItemLabelDetails:o(()=>Fz,"CompletionItemLabelDetails"),CompletionItemTag:o(()=>Oz,"CompletionItemTag"),CompletionList:o(()=>Gz,"CompletionList"),CreateFile:o(()=>Q1,"CreateFile"),DeleteFile:o(()=>ev,"DeleteFile"),Diagnostic:o(()=>xC,"Diagnostic"),DiagnosticRelatedInformation:o(()=>JA,"DiagnosticRelatedInformation"),DiagnosticSeverity:o(()=>Rz,"DiagnosticSeverity"),DiagnosticTag:o(()=>_z,"DiagnosticTag"),DocumentHighlight:o(()=>Uz,"DocumentHighlight"),DocumentHighlightKind:o(()=>Hz,"DocumentHighlightKind"),DocumentLink:o(()=>nG,"DocumentLink"),DocumentSymbol:o(()=>Zz,"DocumentSymbol"),DocumentUri:o(()=>Tz,"DocumentUri"),EOL:o(()=>Awe,"EOL"),FoldingRange:o(()=>Az,"FoldingRange"),FoldingRangeKind:o(()=>Ez,"FoldingRangeKind"),FormattingOptions:o(()=>rG,"FormattingOptions"),Hover:o(()=>Vz,"Hover"),InlayHint:o(()=>dG,"InlayHint"),InlayHintKind:o(()=>r6,"InlayHintKind"),InlayHintLabelPart:o(()=>n6,"InlayHintLabelPart"),InlineCompletionContext:o(()=>vG,"InlineCompletionContext"),InlineCompletionItem:o(()=>pG,"InlineCompletionItem"),InlineCompletionList:o(()=>mG,"InlineCompletionList"),InlineCompletionTriggerKind:o(()=>gG,"InlineCompletionTriggerKind"),InlineValueContext:o(()=>hG,"InlineValueContext"),InlineValueEvaluatableExpression:o(()=>uG,"InlineValueEvaluatableExpression"),InlineValueText:o(()=>lG,"InlineValueText"),InlineValueVariableLookup:o(()=>cG,"InlineValueVariableLookup"),InsertReplaceEdit:o(()=>Bz,"InsertReplaceEdit"),InsertTextFormat:o(()=>Pz,"InsertTextFormat"),InsertTextMode:o(()=>$z,"InsertTextMode"),Location:o(()=>vC,"Location"),LocationLink:o(()=>wz,"LocationLink"),MarkedString:o(()=>CC,"MarkedString"),MarkupContent:o(()=>tv,"MarkupContent"),MarkupKind:o(()=>t6,"MarkupKind"),OptionalVersionedTextDocumentIdentifier:o(()=>TC,"OptionalVersionedTextDocumentIdentifier"),ParameterInformation:o(()=>Wz,"ParameterInformation"),Position:o(()=>En,"Position"),Range:o(()=>an,"Range"),RenameFile:o(()=>J1,"RenameFile"),SelectedCompletionInfo:o(()=>yG,"SelectedCompletionInfo"),SelectionRange:o(()=>iG,"SelectionRange"),SemanticTokenModifiers:o(()=>sG,"SemanticTokenModifiers"),SemanticTokenTypes:o(()=>aG,"SemanticTokenTypes"),SemanticTokens:o(()=>oG,"SemanticTokens"),SignatureInformation:o(()=>qz,"SignatureInformation"),StringValue:o(()=>fG,"StringValue"),SymbolInformation:o(()=>Xz,"SymbolInformation"),SymbolKind:o(()=>Yz,"SymbolKind"),SymbolTag:o(()=>jz,"SymbolTag"),TextDocument:o(()=>bG,"TextDocument"),TextDocumentEdit:o(()=>bC,"TextDocumentEdit"),TextDocumentIdentifier:o(()=>Dz,"TextDocumentIdentifier"),TextDocumentItem:o(()=>Mz,"TextDocumentItem"),TextEdit:o(()=>Ru,"TextEdit"),URI:o(()=>ZA,"URI"),VersionedTextDocumentIdentifier:o(()=>Iz,"VersionedTextDocumentIdentifier"),WorkspaceChange:o(()=>Ewe,"WorkspaceChange"),WorkspaceEdit:o(()=>e6,"WorkspaceEdit"),WorkspaceFolder:o(()=>xG,"WorkspaceFolder"),WorkspaceSymbol:o(()=>Kz,"WorkspaceSymbol"),integer:o(()=>Cz,"integer"),uinteger:o(()=>yC,"uinteger")});hw=S0t({"../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"(){"use strict";(function(e){function t(r){return typeof r=="string"}o(t,"is"),E(t,"is"),e.is=t})(Tz||(Tz={})),(function(e){function t(r){return typeof r=="string"}o(t,"is"),E(t,"is"),e.is=t})(ZA||(ZA={})),(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),E(t,"is"),e.is=t})(Cz||(Cz={})),(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),E(t,"is"),e.is=t})(yC||(yC={})),(function(e){function t(n,i){return n===Number.MAX_VALUE&&(n=yC.MAX_VALUE),i===Number.MAX_VALUE&&(i=yC.MAX_VALUE),{line:n,character:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.uinteger(i.line)&&nt.uinteger(i.character)}o(r,"is"),E(r,"is"),e.is=r})(En||(En={})),(function(e){function t(n,i,a,s){if(nt.uinteger(n)&&nt.uinteger(i)&&nt.uinteger(a)&&nt.uinteger(s))return{start:En.create(n,i),end:En.create(a,s)};if(En.is(n)&&En.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&En.is(i.start)&&En.is(i.end)}o(r,"is"),E(r,"is"),e.is=r})(an||(an={})),(function(e){function t(n,i){return{uri:n,range:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&(nt.string(i.uri)||nt.undefined(i.uri))}o(r,"is"),E(r,"is"),e.is=r})(vC||(vC={})),(function(e){function t(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.targetRange)&&nt.string(i.targetUri)&&an.is(i.targetSelectionRange)&&(an.is(i.originSelectionRange)||nt.undefined(i.originSelectionRange))}o(r,"is"),E(r,"is"),e.is=r})(wz||(wz={})),(function(e){function t(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.numberRange(i.red,0,1)&&nt.numberRange(i.green,0,1)&&nt.numberRange(i.blue,0,1)&&nt.numberRange(i.alpha,0,1)}o(r,"is"),E(r,"is"),e.is=r})(QA||(QA={})),(function(e){function t(n,i){return{range:n,color:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&QA.is(i.color)}o(r,"is"),E(r,"is"),e.is=r})(kz||(kz={})),(function(e){function t(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.string(i.label)&&(nt.undefined(i.textEdit)||Ru.is(i))&&(nt.undefined(i.additionalTextEdits)||nt.typedArray(i.additionalTextEdits,Ru.is))}o(r,"is"),E(r,"is"),e.is=r})(Sz||(Sz={})),(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(Ez||(Ez={})),(function(e){function t(n,i,a,s,l,u){let h={startLine:n,endLine:i};return nt.defined(a)&&(h.startCharacter=a),nt.defined(s)&&(h.endCharacter=s),nt.defined(l)&&(h.kind=l),nt.defined(u)&&(h.collapsedText=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.uinteger(i.startLine)&&nt.uinteger(i.startLine)&&(nt.undefined(i.startCharacter)||nt.uinteger(i.startCharacter))&&(nt.undefined(i.endCharacter)||nt.uinteger(i.endCharacter))&&(nt.undefined(i.kind)||nt.string(i.kind))}o(r,"is"),E(r,"is"),e.is=r})(Az||(Az={})),(function(e){function t(n,i){return{location:n,message:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&vC.is(i.location)&&nt.string(i.message)}o(r,"is"),E(r,"is"),e.is=r})(JA||(JA={})),(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(Rz||(Rz={})),(function(e){e.Unnecessary=1,e.Deprecated=2})(_z||(_z={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&nt.string(n.href)}o(t,"is"),E(t,"is"),e.is=t})(Lz||(Lz={})),(function(e){function t(n,i,a,s,l,u){let h={range:n,message:i};return nt.defined(a)&&(h.severity=a),nt.defined(s)&&(h.code=s),nt.defined(l)&&(h.source=l),nt.defined(u)&&(h.relatedInformation=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){var i;let a=n;return nt.defined(a)&&an.is(a.range)&&nt.string(a.message)&&(nt.number(a.severity)||nt.undefined(a.severity))&&(nt.integer(a.code)||nt.string(a.code)||nt.undefined(a.code))&&(nt.undefined(a.codeDescription)||nt.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(nt.string(a.source)||nt.undefined(a.source))&&(nt.undefined(a.relatedInformation)||nt.typedArray(a.relatedInformation,JA.is))}o(r,"is"),E(r,"is"),e.is=r})(xC||(xC={})),(function(e){function t(n,i,...a){let s={title:n,command:i};return nt.defined(a)&&a.length>0&&(s.arguments=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.title)&&nt.string(i.command)}o(r,"is"),E(r,"is"),e.is=r})(hg||(hg={})),(function(e){function t(a,s){return{range:a,newText:s}}o(t,"replace"),E(t,"replace"),e.replace=t;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),E(r,"insert"),e.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),E(n,"del"),e.del=n;function i(a){let s=a;return nt.objectLiteral(s)&&nt.string(s.newText)&&an.is(s.range)}o(i,"is"),E(i,"is"),e.is=i})(Ru||(Ru={})),(function(e){function t(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.string(i.label)&&(nt.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(nt.string(i.description)||i.description===void 0)}o(r,"is"),E(r,"is"),e.is=r})(dg||(dg={})),(function(e){function t(r){let n=r;return nt.string(n)}o(t,"is"),E(t,"is"),e.is=t})(qa||(qa={})),(function(e){function t(a,s,l){return{range:a,newText:s,annotationId:l}}o(t,"replace"),E(t,"replace"),e.replace=t;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),E(r,"insert"),e.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),E(n,"del"),e.del=n;function i(a){let s=a;return Ru.is(s)&&(dg.is(s.annotationId)||qa.is(s.annotationId))}o(i,"is"),E(i,"is"),e.is=i})(Fh||(Fh={})),(function(e){function t(n,i){return{textDocument:n,edits:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&TC.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),E(r,"is"),e.is=r})(bC||(bC={})),(function(e){function t(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="create"&&nt.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||nt.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||nt.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(Q1||(Q1={})),(function(e){function t(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="rename"&&nt.string(i.oldUri)&&nt.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||nt.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||nt.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(J1||(J1={})),(function(e){function t(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="delete"&&nt.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||nt.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||nt.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(ev||(ev={})),(function(e){function t(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>nt.string(i.kind)?Q1.is(i)||J1.is(i)||ev.is(i):bC.is(i)))}o(t,"is"),E(t,"is"),e.is=t})(e6||(e6={})),lC=class{static{o(this,"TextEditChangeImpl")}static{E(this,"TextEditChangeImpl")}constructor(e,t){this.edits=e,this.changeAnnotations=t}insert(e,t,r){let n,i;if(r===void 0?n=Ru.insert(e,t):qa.is(r)?(i=r,n=Fh.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Fh.insert(e,t,i)),this.edits.push(n),i!==void 0)return i}replace(e,t,r){let n,i;if(r===void 0?n=Ru.replace(e,t):qa.is(r)?(i=r,n=Fh.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Fh.replace(e,t,i)),this.edits.push(n),i!==void 0)return i}delete(e,t){let r,n;if(t===void 0?r=Ru.del(e):qa.is(t)?(n=t,r=Fh.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(t),r=Fh.del(e,n)),this.edits.push(r),n!==void 0)return n}add(e){this.edits.push(e)}all(){return this.edits}clear(){this.edits.splice(0,this.edits.length)}assertChangeAnnotations(e){if(e===void 0)throw new Error("Text edit change is not configured to manage change annotations.")}},JF=class{static{o(this,"ChangeAnnotations")}static{E(this,"ChangeAnnotations")}constructor(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}all(){return this._annotations}get size(){return this._size}manage(e,t){let r;if(qa.is(e)?r=e:(r=this.nextId(),t=e),this._annotations[r]!==void 0)throw new Error(`Id ${r} is already in use.`);if(t===void 0)throw new Error(`No annotation provided for id ${r}`);return this._annotations[r]=t,this._size++,r}nextId(){return this._counter++,this._counter.toString()}},Ewe=class{static{o(this,"WorkspaceChange")}static{E(this,"WorkspaceChange")}constructor(e){this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new JF(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(t=>{if(bC.is(t)){let r=new lC(t.edits,this._changeAnnotations);this._textEditChanges[t.textDocument.uri]=r}})):e.changes&&Object.keys(e.changes).forEach(t=>{let r=new lC(e.changes[t]);this._textEditChanges[t]=r})):this._workspaceEdit={}}get edit(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit}getTextEditChange(e){if(TC.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let t={uri:e.uri,version:e.version},r=this._textEditChanges[t.uri];if(!r){let n=[],i={textDocument:t,edits:n};this._workspaceEdit.documentChanges.push(i),r=new lC(n,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");let t=this._textEditChanges[e];if(!t){let r=[];this._workspaceEdit.changes[e]=r,t=new lC(r),this._textEditChanges[e]=t}return t}}initDocumentChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new JF,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())}initChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))}createFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;dg.is(t)||qa.is(t)?n=t:r=t;let i,a;if(n===void 0?i=Q1.create(e,r):(a=qa.is(n)?n:this._changeAnnotations.manage(n),i=Q1.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),a!==void 0)return a}renameFile(e,t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let i;dg.is(r)||qa.is(r)?i=r:n=r;let a,s;if(i===void 0?a=J1.create(e,t,n):(s=qa.is(i)?i:this._changeAnnotations.manage(i),a=J1.create(e,t,n,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s}deleteFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;dg.is(t)||qa.is(t)?n=t:r=t;let i,a;if(n===void 0?i=ev.create(e,r):(a=qa.is(n)?n:this._changeAnnotations.manage(n),i=ev.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),a!==void 0)return a}},(function(e){function t(n){return{uri:n}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)}o(r,"is"),E(r,"is"),e.is=r})(Dz||(Dz={})),(function(e){function t(n,i){return{uri:n,version:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&nt.integer(i.version)}o(r,"is"),E(r,"is"),e.is=r})(Iz||(Iz={})),(function(e){function t(n,i){return{uri:n,version:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&(i.version===null||nt.integer(i.version))}o(r,"is"),E(r,"is"),e.is=r})(TC||(TC={})),(function(e){function t(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&nt.string(i.languageId)&&nt.integer(i.version)&&nt.string(i.text)}o(r,"is"),E(r,"is"),e.is=r})(Mz||(Mz={})),(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(r){let n=r;return n===e.PlainText||n===e.Markdown}o(t,"is"),E(t,"is"),e.is=t})(t6||(t6={})),(function(e){function t(r){let n=r;return nt.objectLiteral(r)&&t6.is(n.kind)&&nt.string(n.value)}o(t,"is"),E(t,"is"),e.is=t})(tv||(tv={})),(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(Nz||(Nz={})),(function(e){e.PlainText=1,e.Snippet=2})(Pz||(Pz={})),(function(e){e.Deprecated=1})(Oz||(Oz={})),(function(e){function t(n,i,a){return{newText:n,insert:i,replace:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.newText)&&an.is(i.insert)&&an.is(i.replace)}o(r,"is"),E(r,"is"),e.is=r})(Bz||(Bz={})),(function(e){e.asIs=1,e.adjustIndentation=2})($z||($z={})),(function(e){function t(r){let n=r;return n&&(nt.string(n.detail)||n.detail===void 0)&&(nt.string(n.description)||n.description===void 0)}o(t,"is"),E(t,"is"),e.is=t})(Fz||(Fz={})),(function(e){function t(r){return{label:r}}o(t,"create"),E(t,"create"),e.create=t})(zz||(zz={})),(function(e){function t(r,n){return{items:r||[],isIncomplete:!!n}}o(t,"create"),E(t,"create"),e.create=t})(Gz||(Gz={})),(function(e){function t(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(t,"fromPlainText"),E(t,"fromPlainText"),e.fromPlainText=t;function r(n){let i=n;return nt.string(i)||nt.objectLiteral(i)&&nt.string(i.language)&&nt.string(i.value)}o(r,"is"),E(r,"is"),e.is=r})(CC||(CC={})),(function(e){function t(r){let n=r;return!!n&&nt.objectLiteral(n)&&(tv.is(n.contents)||CC.is(n.contents)||nt.typedArray(n.contents,CC.is))&&(r.range===void 0||an.is(r.range))}o(t,"is"),E(t,"is"),e.is=t})(Vz||(Vz={})),(function(e){function t(r,n){return n?{label:r,documentation:n}:{label:r}}o(t,"create"),E(t,"create"),e.create=t})(Wz||(Wz={})),(function(e){function t(r,n,...i){let a={label:r};return nt.defined(n)&&(a.documentation=n),nt.defined(i)?a.parameters=i:a.parameters=[],a}o(t,"create"),E(t,"create"),e.create=t})(qz||(qz={})),(function(e){e.Text=1,e.Read=2,e.Write=3})(Hz||(Hz={})),(function(e){function t(r,n){let i={range:r};return nt.number(n)&&(i.kind=n),i}o(t,"create"),E(t,"create"),e.create=t})(Uz||(Uz={})),(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(Yz||(Yz={})),(function(e){e.Deprecated=1})(jz||(jz={})),(function(e){function t(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(t,"create"),E(t,"create"),e.create=t})(Xz||(Xz={})),(function(e){function t(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(t,"create"),E(t,"create"),e.create=t})(Kz||(Kz={})),(function(e){function t(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.name)&&nt.number(i.kind)&&an.is(i.range)&&an.is(i.selectionRange)&&(i.detail===void 0||nt.string(i.detail))&&(i.deprecated===void 0||nt.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),E(r,"is"),e.is=r})(Zz||(Zz={})),(function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"})(Qz||(Qz={})),(function(e){e.Invoked=1,e.Automatic=2})(wC||(wC={})),(function(e){function t(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.typedArray(i.diagnostics,xC.is)&&(i.only===void 0||nt.typedArray(i.only,nt.string))&&(i.triggerKind===void 0||i.triggerKind===wC.Invoked||i.triggerKind===wC.Automatic)}o(r,"is"),E(r,"is"),e.is=r})(Jz||(Jz={})),(function(e){function t(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):hg.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.title)&&(i.diagnostics===void 0||nt.typedArray(i.diagnostics,xC.is))&&(i.kind===void 0||nt.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||hg.is(i.command))&&(i.isPreferred===void 0||nt.boolean(i.isPreferred))&&(i.edit===void 0||e6.is(i.edit))}o(r,"is"),E(r,"is"),e.is=r})(eG||(eG={})),(function(e){function t(n,i){let a={range:n};return nt.defined(i)&&(a.data=i),a}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(i.range)&&(nt.undefined(i.command)||hg.is(i.command))}o(r,"is"),E(r,"is"),e.is=r})(tG||(tG={})),(function(e){function t(n,i){return{tabSize:n,insertSpaces:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.uinteger(i.tabSize)&&nt.boolean(i.insertSpaces)}o(r,"is"),E(r,"is"),e.is=r})(rG||(rG={})),(function(e){function t(n,i,a){return{range:n,target:i,data:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(i.range)&&(nt.undefined(i.target)||nt.string(i.target))}o(r,"is"),E(r,"is"),e.is=r})(nG||(nG={})),(function(e){function t(n,i){return{range:n,parent:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&(i.parent===void 0||e.is(i.parent))}o(r,"is"),E(r,"is"),e.is=r})(iG||(iG={})),(function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"})(aG||(aG={})),(function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"})(sG||(sG={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(t,"is"),E(t,"is"),e.is=t})(oG||(oG={})),(function(e){function t(n,i){return{range:n,text:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&nt.string(i.text)}o(r,"is"),E(r,"is"),e.is=r})(lG||(lG={})),(function(e){function t(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&nt.boolean(i.caseSensitiveLookup)&&(nt.string(i.variableName)||i.variableName===void 0)}o(r,"is"),E(r,"is"),e.is=r})(cG||(cG={})),(function(e){function t(n,i){return{range:n,expression:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&(nt.string(i.expression)||i.expression===void 0)}o(r,"is"),E(r,"is"),e.is=r})(uG||(uG={})),(function(e){function t(n,i){return{frameId:n,stoppedLocation:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(n.stoppedLocation)}o(r,"is"),E(r,"is"),e.is=r})(hG||(hG={})),(function(e){e.Type=1,e.Parameter=2;function t(r){return r===1||r===2}o(t,"is"),E(t,"is"),e.is=t})(r6||(r6={})),(function(e){function t(n){return{value:n}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&(i.tooltip===void 0||nt.string(i.tooltip)||tv.is(i.tooltip))&&(i.location===void 0||vC.is(i.location))&&(i.command===void 0||hg.is(i.command))}o(r,"is"),E(r,"is"),e.is=r})(n6||(n6={})),(function(e){function t(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&En.is(i.position)&&(nt.string(i.label)||nt.typedArray(i.label,n6.is))&&(i.kind===void 0||r6.is(i.kind))&&i.textEdits===void 0||nt.typedArray(i.textEdits,Ru.is)&&(i.tooltip===void 0||nt.string(i.tooltip)||tv.is(i.tooltip))&&(i.paddingLeft===void 0||nt.boolean(i.paddingLeft))&&(i.paddingRight===void 0||nt.boolean(i.paddingRight))}o(r,"is"),E(r,"is"),e.is=r})(dG||(dG={})),(function(e){function t(r){return{kind:"snippet",value:r}}o(t,"createSnippet"),E(t,"createSnippet"),e.createSnippet=t})(fG||(fG={})),(function(e){function t(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(t,"create"),E(t,"create"),e.create=t})(pG||(pG={})),(function(e){function t(r){return{items:r}}o(t,"create"),E(t,"create"),e.create=t})(mG||(mG={})),(function(e){e.Invoked=0,e.Automatic=1})(gG||(gG={})),(function(e){function t(r,n){return{range:r,text:n}}o(t,"create"),E(t,"create"),e.create=t})(yG||(yG={})),(function(e){function t(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(t,"create"),E(t,"create"),e.create=t})(vG||(vG={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&ZA.is(n.uri)&&nt.string(n.name)}o(t,"is"),E(t,"is"),e.is=t})(xG||(xG={})),Awe=[` +`,`\r +`,"\r"],(function(e){function t(a,s,l,u){return new PTe(a,s,l,u)}o(t,"create"),E(t,"create"),e.create=t;function r(a){let s=a;return!!(nt.defined(s)&&nt.string(s.uri)&&(nt.undefined(s.languageId)||nt.string(s.languageId))&&nt.uinteger(s.lineCount)&&nt.func(s.getText)&&nt.func(s.positionAt)&&nt.func(s.offsetAt))}o(r,"is"),E(r,"is"),e.is=r;function n(a,s){let l=a.getText(),u=i(s,(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),h=l.length;for(let d=u.length-1;d>=0;d--){let f=u[d],p=a.offsetAt(f.range.start),m=a.offsetAt(f.range.end);if(m<=h)l=l.substring(0,p)+f.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),E(n,"applyEdits"),e.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let d=0,f=0,p=0;for(;d0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,n=t.length;if(n===0)return En.create(0,e);for(;re?n=a:r=a+1}let i=r-1;return En.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],n=e.line+1"u"}o(n,"undefined2"),E(n,"undefined"),e.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),E(i,"boolean"),e.boolean=i;function a(m){return t.call(m)==="[object String]"}o(a,"string"),E(a,"string"),e.string=a;function s(m){return t.call(m)==="[object Number]"}o(s,"number"),E(s,"number"),e.number=s;function l(m,g,y){return t.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),E(l,"numberRange"),e.numberRange=l;function u(m){return t.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer2"),E(u,"integer"),e.integer=u;function h(m){return t.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger2"),E(h,"uinteger"),e.uinteger=h;function d(m){return t.call(m)==="[object Function]"}o(d,"func"),E(d,"func"),e.func=d;function f(m){return m!==null&&typeof m=="object"}o(f,"objectLiteral"),E(f,"objectLiteral"),e.objectLiteral=f;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),E(p,"typedArray"),e.typedArray=p})(nt||(nt={}))}}),Qg=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t;function r(){if(t===void 0)throw new Error("No runtime abstraction layer installed");return t}o(r,"RAL"),E(r,"RAL"),(function(n){function i(a){if(a===void 0)throw new Error("No runtime abstraction layer provided");t=a}o(i,"install"),E(i,"install"),n.install=i})(r||(r={})),e.default=r}}),dw=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(u){return u===!0||u===!1}o(t,"boolean"),E(t,"boolean"),e.boolean=t;function r(u){return typeof u=="string"||u instanceof String}o(r,"string"),E(r,"string"),e.string=r;function n(u){return typeof u=="number"||u instanceof Number}o(n,"number"),E(n,"number"),e.number=n;function i(u){return u instanceof Error}o(i,"error"),E(i,"error"),e.error=i;function a(u){return typeof u=="function"}o(a,"func"),E(a,"func"),e.func=a;function s(u){return Array.isArray(u)}o(s,"array"),E(s,"array"),e.array=s;function l(u){return s(u)&&u.every(h=>r(h))}o(l,"stringArray"),E(l,"stringArray"),e.stringArray=l}}),Iv=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Emitter=e.Event=void 0;var t=Qg(),r;(function(a){let s={dispose(){}};a.None=function(){return s}})(r||(e.Event=r={}));var n=class{static{o(this,"CallbackList")}static{E(this,"CallbackList")}add(a,s=null,l){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(a),this._contexts.push(s),Array.isArray(l)&&l.push({dispose:E(()=>this.remove(a,s),"dispose")})}remove(a,s=null){if(!this._callbacks)return;let l=!1;for(let u=0,h=this._callbacks.length;u{this._callbacks||(this._callbacks=new n),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(s,l);let h={dispose:E(()=>{this._callbacks&&(this._callbacks.remove(s,l),h.dispose=Rwe._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(u)&&u.push(h),h}),this._event}fire(s){this._callbacks&&this._callbacks.invoke.call(this._callbacks,s)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};e.Emitter=i,i._noop=function(){}}}),yR=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;var t=Qg(),r=dw(),n=Iv(),i;(function(u){u.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:n.Event.None}),u.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:n.Event.None});function h(d){let f=d;return f&&(f===u.None||f===u.Cancelled||r.boolean(f.isCancellationRequested)&&!!f.onCancellationRequested)}o(h,"is"),E(h,"is"),u.is=h})(i||(e.CancellationToken=i={}));var a=Object.freeze(function(u,h){let d=(0,t.default)().timer.setTimeout(u.bind(h),0);return{dispose(){d.dispose()}}}),s=class{static{o(this,"MutableToken")}static{E(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||(this._emitter=new n.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},l=class{static{o(this,"CancellationTokenSource3")}static{E(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new s),this._token}cancel(){this._token?this._token.cancel():this._token=i.Cancelled}dispose(){this._token?this._token instanceof s&&this._token.dispose():this._token=i.None}};e.CancellationTokenSource=l}}),_we=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;var t=dw(),r;(function(A){A.ParseError=-32700,A.InvalidRequest=-32600,A.MethodNotFound=-32601,A.InvalidParams=-32602,A.InternalError=-32603,A.jsonrpcReservedErrorRangeStart=-32099,A.serverErrorStart=-32099,A.MessageWriteError=-32099,A.MessageReadError=-32098,A.PendingResponseRejected=-32097,A.ConnectionInactive=-32096,A.ServerNotInitialized=-32002,A.UnknownErrorCode=-32001,A.jsonrpcReservedErrorRangeEnd=-32e3,A.serverErrorEnd=-32e3})(r||(e.ErrorCodes=r={}));var n=class Lwe extends Error{static{o(this,"_ResponseError")}static{E(this,"ResponseError")}constructor(M,D,P){super(D),this.code=t.number(M)?M:r.UnknownErrorCode,this.data=P,Object.setPrototypeOf(this,Lwe.prototype)}toJson(){let M={code:this.code,message:this.message};return this.data!==void 0&&(M.data=this.data),M}};e.ResponseError=n;var i=class i6{static{o(this,"_ParameterStructures")}static{E(this,"ParameterStructures")}constructor(M){this.kind=M}static is(M){return M===i6.auto||M===i6.byName||M===i6.byPosition}toString(){return this.kind}};e.ParameterStructures=i,i.auto=new i("auto"),i.byPosition=new i("byPosition"),i.byName=new i("byName");var a=class{static{o(this,"AbstractMessageSignature")}static{E(this,"AbstractMessageSignature")}constructor(A,M){this.method=A,this.numberOfParams=M}get parameterStructures(){return i.auto}};e.AbstractMessageSignature=a;var s=class extends a{static{o(this,"RequestType0")}static{E(this,"RequestType0")}constructor(A){super(A,0)}};e.RequestType0=s;var l=class extends a{static{o(this,"RequestType")}static{E(this,"RequestType")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.RequestType=l;var u=class extends a{static{o(this,"RequestType1")}static{E(this,"RequestType1")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.RequestType1=u;var h=class extends a{static{o(this,"RequestType2")}static{E(this,"RequestType2")}constructor(A){super(A,2)}};e.RequestType2=h;var d=class extends a{static{o(this,"RequestType3")}static{E(this,"RequestType3")}constructor(A){super(A,3)}};e.RequestType3=d;var f=class extends a{static{o(this,"RequestType4")}static{E(this,"RequestType4")}constructor(A){super(A,4)}};e.RequestType4=f;var p=class extends a{static{o(this,"RequestType5")}static{E(this,"RequestType5")}constructor(A){super(A,5)}};e.RequestType5=p;var m=class extends a{static{o(this,"RequestType6")}static{E(this,"RequestType6")}constructor(A){super(A,6)}};e.RequestType6=m;var g=class extends a{static{o(this,"RequestType7")}static{E(this,"RequestType7")}constructor(A){super(A,7)}};e.RequestType7=g;var y=class extends a{static{o(this,"RequestType8")}static{E(this,"RequestType8")}constructor(A){super(A,8)}};e.RequestType8=y;var v=class extends a{static{o(this,"RequestType9")}static{E(this,"RequestType9")}constructor(A){super(A,9)}};e.RequestType9=v;var x=class extends a{static{o(this,"NotificationType")}static{E(this,"NotificationType")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.NotificationType=x;var b=class extends a{static{o(this,"NotificationType0")}static{E(this,"NotificationType0")}constructor(A){super(A,0)}};e.NotificationType0=b;var T=class extends a{static{o(this,"NotificationType1")}static{E(this,"NotificationType1")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.NotificationType1=T;var k=class extends a{static{o(this,"NotificationType2")}static{E(this,"NotificationType2")}constructor(A){super(A,2)}};e.NotificationType2=k;var C=class extends a{static{o(this,"NotificationType3")}static{E(this,"NotificationType3")}constructor(A){super(A,3)}};e.NotificationType3=C;var w=class extends a{static{o(this,"NotificationType4")}static{E(this,"NotificationType4")}constructor(A){super(A,4)}};e.NotificationType4=w;var S=class extends a{static{o(this,"NotificationType5")}static{E(this,"NotificationType5")}constructor(A){super(A,5)}};e.NotificationType5=S;var R=class extends a{static{o(this,"NotificationType6")}static{E(this,"NotificationType6")}constructor(A){super(A,6)}};e.NotificationType6=R;var L=class extends a{static{o(this,"NotificationType7")}static{E(this,"NotificationType7")}constructor(A){super(A,7)}};e.NotificationType7=L;var N=class extends a{static{o(this,"NotificationType8")}static{E(this,"NotificationType8")}constructor(A){super(A,8)}};e.NotificationType8=N;var I=class extends a{static{o(this,"NotificationType9")}static{E(this,"NotificationType9")}constructor(A){super(A,9)}};e.NotificationType9=I;var _;(function(A){function M(B){let O=B;return O&&t.string(O.method)&&(t.string(O.id)||t.number(O.id))}o(M,"isRequest"),E(M,"isRequest"),A.isRequest=M;function D(B){let O=B;return O&&t.string(O.method)&&B.id===void 0}o(D,"isNotification"),E(D,"isNotification"),A.isNotification=D;function P(B){let O=B;return O&&(O.result!==void 0||!!O.error)&&(t.string(O.id)||t.number(O.id)||O.id===null)}o(P,"isResponse"),E(P,"isResponse"),A.isResponse=P})(_||(e.Message=_={}))}}),Dwe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js"(e){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0;var r;(function(a){a.None=0,a.First=1,a.AsOld=a.First,a.Last=2,a.AsNew=a.Last})(r||(e.Touch=r={}));var n=class{static{o(this,"LinkedMap")}static{E(this,"LinkedMap")}constructor(){this[t]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(a){return this._map.has(a)}get(a,s=r.None){let l=this._map.get(a);if(l)return s!==r.None&&this.touch(l,s),l.value}set(a,s,l=r.None){let u=this._map.get(a);if(u)u.value=s,l!==r.None&&this.touch(u,l);else{switch(u={key:a,value:s,next:void 0,previous:void 0},l){case r.None:this.addItemLast(u);break;case r.First:this.addItemFirst(u);break;case r.Last:this.addItemLast(u);break;default:this.addItemLast(u);break}this._map.set(a,u),this._size++}return this}delete(a){return!!this.remove(a)}remove(a){let s=this._map.get(a);if(s)return this._map.delete(a),this.removeItem(s),this._size--,s.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let a=this._head;return this._map.delete(a.key),this.removeItem(a),this._size--,a.value}forEach(a,s){let l=this._state,u=this._head;for(;u;){if(s?a.bind(s)(u.value,u.key,this):a(u.value,u.key,this),this._state!==l)throw new Error("LinkedMap got modified during iteration.");u=u.next}}keys(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.key,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}values(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.value,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}entries(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:[s.key,s.value],done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(a){if(a>=this.size)return;if(a===0){this.clear();return}let s=this._head,l=this.size;for(;s&&l>a;)this._map.delete(s.key),s=s.next,l--;this._head=s,this._size=l,s&&(s.previous=void 0),this._state++}addItemFirst(a){if(!this._head&&!this._tail)this._tail=a;else if(this._head)a.next=this._head,this._head.previous=a;else throw new Error("Invalid list");this._head=a,this._state++}addItemLast(a){if(!this._head&&!this._tail)this._head=a;else if(this._tail)a.previous=this._tail,this._tail.next=a;else throw new Error("Invalid list");this._tail=a,this._state++}removeItem(a){if(a===this._head&&a===this._tail)this._head=void 0,this._tail=void 0;else if(a===this._head){if(!a.next)throw new Error("Invalid list");a.next.previous=void 0,this._head=a.next}else if(a===this._tail){if(!a.previous)throw new Error("Invalid list");a.previous.next=void 0,this._tail=a.previous}else{let s=a.next,l=a.previous;if(!s||!l)throw new Error("Invalid list");s.previous=l,l.next=s}a.next=void 0,a.previous=void 0,this._state++}touch(a,s){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(s!==r.First&&s!==r.Last)){if(s===r.First){if(a===this._head)return;let l=a.next,u=a.previous;a===this._tail?(u.next=void 0,this._tail=u):(l.previous=u,u.next=l),a.previous=void 0,a.next=this._head,this._head.previous=a,this._head=a,this._state++}else if(s===r.Last){if(a===this._tail)return;let l=a.next,u=a.previous;a===this._head?(l.previous=void 0,this._head=l):(l.previous=u,u.next=l),a.next=void 0,a.previous=this._tail,this._tail.next=a,this._tail=a,this._state++}}}toJSON(){let a=[];return this.forEach((s,l)=>{a.push([l,s])}),a}fromJSON(a){this.clear();for(let[s,l]of a)this.set(s,l)}};e.LinkedMap=n;var i=class extends n{static{o(this,"LRUCache")}static{E(this,"LRUCache")}constructor(a,s=1){super(),this._limit=a,this._ratio=Math.min(Math.max(0,s),1)}get limit(){return this._limit}set limit(a){this._limit=a,this.checkTrim()}get ratio(){return this._ratio}set ratio(a){this._ratio=Math.min(Math.max(0,a),1),this.checkTrim()}get(a,s=r.AsNew){return super.get(a,s)}peek(a){return super.get(a,r.None)}set(a,s){return super.set(a,s,r.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};e.LRUCache=i}}),E0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Disposable=void 0;var t;(function(r){function n(i){return{dispose:i}}o(n,"create"),E(n,"create"),r.create=n})(t||(e.Disposable=t={}))}}),A0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;var t=yR(),r;(function(l){l.Continue=0,l.Cancelled=1})(r||(r={}));var n=class{static{o(this,"SharedArraySenderStrategy")}static{E(this,"SharedArraySenderStrategy")}constructor(){this.buffers=new Map}enableCancellation(l){if(l.id===null)return;let u=new SharedArrayBuffer(4),h=new Int32Array(u,0,1);h[0]=r.Continue,this.buffers.set(l.id,u),l.$cancellationData=u}async sendCancellation(l,u){let h=this.buffers.get(u);if(h===void 0)return;let d=new Int32Array(h,0,1);Atomics.store(d,0,r.Cancelled)}cleanup(l){this.buffers.delete(l)}dispose(){this.buffers.clear()}};e.SharedArraySenderStrategy=n;var i=class{static{o(this,"SharedArrayBufferCancellationToken")}static{E(this,"SharedArrayBufferCancellationToken")}constructor(l){this.data=new Int32Array(l,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===r.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},a=class{static{o(this,"SharedArrayBufferCancellationTokenSource")}static{E(this,"SharedArrayBufferCancellationTokenSource")}constructor(l){this.token=new i(l)}cancel(){}dispose(){}},s=class{static{o(this,"SharedArrayReceiverStrategy")}static{E(this,"SharedArrayReceiverStrategy")}constructor(){this.kind="request"}createCancellationTokenSource(l){let u=l.$cancellationData;return u===void 0?new t.CancellationTokenSource:new a(u)}};e.SharedArrayReceiverStrategy=s}}),Iwe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Semaphore=void 0;var t=Qg(),r=class{static{o(this,"Semaphore")}static{E(this,"Semaphore")}constructor(n=1){if(n<=0)throw new Error("Capacity must be greater than 0");this._capacity=n,this._active=0,this._waiting=[]}lock(n){return new Promise((i,a)=>{this._waiting.push({thunk:n,resolve:i,reject:a}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let n=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let i=n.thunk();i instanceof Promise?i.then(a=>{this._active--,n.resolve(a),this.runNext()},a=>{this._active--,n.reject(a),this.runNext()}):(this._active--,n.resolve(i),this.runNext())}catch(i){this._active--,n.reject(i),this.runNext()}}};e.Semaphore=r}}),R0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;var t=Qg(),r=dw(),n=Iv(),i=Iwe(),a;(function(h){function d(f){let p=f;return p&&r.func(p.listen)&&r.func(p.dispose)&&r.func(p.onError)&&r.func(p.onClose)&&r.func(p.onPartialMessage)}o(d,"is"),E(d,"is"),h.is=d})(a||(e.MessageReader=a={}));var s=class{static{o(this,"AbstractMessageReader")}static{E(this,"AbstractMessageReader")}constructor(){this.errorEmitter=new n.Emitter,this.closeEmitter=new n.Emitter,this.partialMessageEmitter=new n.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(h){this.errorEmitter.fire(this.asError(h))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(h){this.partialMessageEmitter.fire(h)}asError(h){return h instanceof Error?h:new Error(`Reader received error. Reason: ${r.string(h.message)?h.message:"unknown"}`)}};e.AbstractMessageReader=s;var l;(function(h){function d(f){let p,m,g,y=new Map,v,x=new Map;if(f===void 0||typeof f=="string")p=f??"utf-8";else{if(p=f.charset??"utf-8",f.contentDecoder!==void 0&&(g=f.contentDecoder,y.set(g.name,g)),f.contentDecoders!==void 0)for(let b of f.contentDecoders)y.set(b.name,b);if(f.contentTypeDecoder!==void 0&&(v=f.contentTypeDecoder,x.set(v.name,v)),f.contentTypeDecoders!==void 0)for(let b of f.contentTypeDecoders)x.set(b.name,b)}return v===void 0&&(v=(0,t.default)().applicationJson.decoder,x.set(v.name,v)),{charset:p,contentDecoder:g,contentDecoders:y,contentTypeDecoder:v,contentTypeDecoders:x}}o(d,"fromOptions"),E(d,"fromOptions"),h.fromOptions=d})(l||(l={}));var u=class extends s{static{o(this,"ReadableStreamMessageReader")}static{E(this,"ReadableStreamMessageReader")}constructor(h,d){super(),this.readable=h,this.options=l.fromOptions(d),this.buffer=(0,t.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new i.Semaphore(1)}set partialMessageTimeout(h){this._partialMessageTimeout=h}get partialMessageTimeout(){return this._partialMessageTimeout}listen(h){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=h;let d=this.readable.onData(f=>{this.onData(f)});return this.readable.onError(f=>this.fireError(f)),this.readable.onClose(()=>this.fireClose()),d}onData(h){try{for(this.buffer.append(h);;){if(this.nextMessageLength===-1){let f=this.buffer.tryReadHeaders(!0);if(!f)return;let p=f.get("content-length");if(!p){this.fireError(new Error(`Header must provide a Content-Length property. +${JSON.stringify(Object.fromEntries(f))}`));return}let m=parseInt(p);if(isNaN(m)){this.fireError(new Error(`Content-Length value must be a number. Got ${p}`));return}this.nextMessageLength=m}let d=this.buffer.tryReadBody(this.nextMessageLength);if(d===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let f=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(d):d,p=await this.options.contentTypeDecoder.decode(f,this.options);this.callback(p)}).catch(f=>{this.fireError(f)})}}catch(d){this.fireError(d)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,t.default)().timer.setTimeout((h,d)=>{this.partialMessageTimer=void 0,h===this.messageToken&&(this.firePartialMessage({messageToken:h,waitingTime:d}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};e.ReadableStreamMessageReader=u}}),_0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;var t=Qg(),r=dw(),n=Iwe(),i=Iv(),a="Content-Length: ",s=`\r +`,l;(function(f){function p(m){let g=m;return g&&r.func(g.dispose)&&r.func(g.onClose)&&r.func(g.onError)&&r.func(g.write)}o(p,"is"),E(p,"is"),f.is=p})(l||(e.MessageWriter=l={}));var u=class{static{o(this,"AbstractMessageWriter")}static{E(this,"AbstractMessageWriter")}constructor(){this.errorEmitter=new i.Emitter,this.closeEmitter=new i.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(f,p,m){this.errorEmitter.fire([this.asError(f),p,m])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(f){return f instanceof Error?f:new Error(`Writer received error. Reason: ${r.string(f.message)?f.message:"unknown"}`)}};e.AbstractMessageWriter=u;var h;(function(f){function p(m){return m===void 0||typeof m=="string"?{charset:m??"utf-8",contentTypeEncoder:(0,t.default)().applicationJson.encoder}:{charset:m.charset??"utf-8",contentEncoder:m.contentEncoder,contentTypeEncoder:m.contentTypeEncoder??(0,t.default)().applicationJson.encoder}}o(p,"fromOptions"),E(p,"fromOptions"),f.fromOptions=p})(h||(h={}));var d=class extends u{static{o(this,"WriteableStreamMessageWriter")}static{E(this,"WriteableStreamMessageWriter")}constructor(f,p){super(),this.writable=f,this.options=h.fromOptions(p),this.errorCount=0,this.writeSemaphore=new n.Semaphore(1),this.writable.onError(m=>this.fireError(m)),this.writable.onClose(()=>this.fireClose())}async write(f){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(f,this.options).then(m=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(m):m).then(m=>{let g=[];return g.push(a,m.byteLength.toString(),s),g.push(s),this.doWrite(f,g,m)},m=>{throw this.fireError(m),m}))}async doWrite(f,p,m){try{return await this.writable.write(p.join(""),"ascii"),this.writable.write(m)}catch(g){return this.handleError(g,f),Promise.reject(g)}}handleError(f,p){this.errorCount++,this.fireError(f,p,this.errorCount)}end(){this.writable.end()}};e.WriteableStreamMessageWriter=d}}),L0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractMessageBuffer=void 0;var t=13,r=10,n=`\r +`,i=class{static{o(this,"AbstractMessageBuffer")}static{E(this,"AbstractMessageBuffer")}constructor(a="utf-8"){this._encoding=a,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(a){let s=typeof a=="string"?this.fromString(a,this._encoding):a;this._chunks.push(s),this._totalLength+=s.byteLength}tryReadHeaders(a=!1){if(this._chunks.length===0)return;let s=0,l=0,u=0,h=0;e:for(;lthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===a){let h=this._chunks[0];return this._chunks.shift(),this._totalLength-=a,this.asNative(h)}if(this._chunks[0].byteLength>a){let h=this._chunks[0],d=this.asNative(h,a);return this._chunks[0]=h.slice(a),this._totalLength-=a,d}let s=this.allocNative(a),l=0,u=0;for(;a>0;){let h=this._chunks[u];if(h.byteLength>a){let d=h.slice(0,a);s.set(d,l),l+=a,this._chunks[u]=h.slice(a),this._totalLength-=a,a-=a}else s.set(h,l),l+=h.byteLength,this._chunks.shift(),this._totalLength-=h.byteLength,a-=h.byteLength}return s}};e.AbstractMessageBuffer=i}}),D0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;var t=Qg(),r=dw(),n=_we(),i=Dwe(),a=Iv(),s=yR(),l;(function(A){A.type=new n.NotificationType("$/cancelRequest")})(l||(l={}));var u;(function(A){function M(D){return typeof D=="string"||typeof D=="number"}o(M,"is"),E(M,"is"),A.is=M})(u||(e.ProgressToken=u={}));var h;(function(A){A.type=new n.NotificationType("$/progress")})(h||(h={}));var d=class{static{o(this,"ProgressType")}static{E(this,"ProgressType")}constructor(){}};e.ProgressType=d;var f;(function(A){function M(D){return r.func(D)}o(M,"is"),E(M,"is"),A.is=M})(f||(f={})),e.NullLogger=Object.freeze({error:E(()=>{},"error"),warn:E(()=>{},"warn"),info:E(()=>{},"info"),log:E(()=>{},"log")});var p;(function(A){A[A.Off=0]="Off",A[A.Messages=1]="Messages",A[A.Compact=2]="Compact",A[A.Verbose=3]="Verbose"})(p||(e.Trace=p={}));var m;(function(A){A.Off="off",A.Messages="messages",A.Compact="compact",A.Verbose="verbose"})(m||(e.TraceValues=m={})),(function(A){function M(P){if(!r.string(P))return A.Off;switch(P=P.toLowerCase(),P){case"off":return A.Off;case"messages":return A.Messages;case"compact":return A.Compact;case"verbose":return A.Verbose;default:return A.Off}}o(M,"fromString"),E(M,"fromString"),A.fromString=M;function D(P){switch(P){case A.Off:return"off";case A.Messages:return"messages";case A.Compact:return"compact";case A.Verbose:return"verbose";default:return"off"}}o(D,"toString4"),E(D,"toString"),A.toString=D})(p||(e.Trace=p={}));var g;(function(A){A.Text="text",A.JSON="json"})(g||(e.TraceFormat=g={})),(function(A){function M(D){return r.string(D)?(D=D.toLowerCase(),D==="json"?A.JSON:A.Text):A.Text}o(M,"fromString"),E(M,"fromString"),A.fromString=M})(g||(e.TraceFormat=g={}));var y;(function(A){A.type=new n.NotificationType("$/setTrace")})(y||(e.SetTraceNotification=y={}));var v;(function(A){A.type=new n.NotificationType("$/logTrace")})(v||(e.LogTraceNotification=v={}));var x;(function(A){A[A.Closed=1]="Closed",A[A.Disposed=2]="Disposed",A[A.AlreadyListening=3]="AlreadyListening"})(x||(e.ConnectionErrors=x={}));var b=class Mwe extends Error{static{o(this,"_ConnectionError")}static{E(this,"ConnectionError")}constructor(M,D){super(D),this.code=M,Object.setPrototypeOf(this,Mwe.prototype)}};e.ConnectionError=b;var T;(function(A){function M(D){let P=D;return P&&r.func(P.cancelUndispatched)}o(M,"is"),E(M,"is"),A.is=M})(T||(e.ConnectionStrategy=T={}));var k;(function(A){function M(D){let P=D;return P&&(P.kind===void 0||P.kind==="id")&&r.func(P.createCancellationTokenSource)&&(P.dispose===void 0||r.func(P.dispose))}o(M,"is"),E(M,"is"),A.is=M})(k||(e.IdCancellationReceiverStrategy=k={}));var C;(function(A){function M(D){let P=D;return P&&P.kind==="request"&&r.func(P.createCancellationTokenSource)&&(P.dispose===void 0||r.func(P.dispose))}o(M,"is"),E(M,"is"),A.is=M})(C||(e.RequestCancellationReceiverStrategy=C={}));var w;(function(A){A.Message=Object.freeze({createCancellationTokenSource(D){return new s.CancellationTokenSource}});function M(D){return k.is(D)||C.is(D)}o(M,"is"),E(M,"is"),A.is=M})(w||(e.CancellationReceiverStrategy=w={}));var S;(function(A){A.Message=Object.freeze({sendCancellation(D,P){return D.sendNotification(l.type,{id:P})},cleanup(D){}});function M(D){let P=D;return P&&r.func(P.sendCancellation)&&r.func(P.cleanup)}o(M,"is"),E(M,"is"),A.is=M})(S||(e.CancellationSenderStrategy=S={}));var R;(function(A){A.Message=Object.freeze({receiver:w.Message,sender:S.Message});function M(D){let P=D;return P&&w.is(P.receiver)&&S.is(P.sender)}o(M,"is"),E(M,"is"),A.is=M})(R||(e.CancellationStrategy=R={}));var L;(function(A){function M(D){let P=D;return P&&r.func(P.handleMessage)}o(M,"is"),E(M,"is"),A.is=M})(L||(e.MessageStrategy=L={}));var N;(function(A){function M(D){let P=D;return P&&(R.is(P.cancellationStrategy)||T.is(P.connectionStrategy)||L.is(P.messageStrategy))}o(M,"is"),E(M,"is"),A.is=M})(N||(e.ConnectionOptions=N={}));var I;(function(A){A[A.New=1]="New",A[A.Listening=2]="Listening",A[A.Closed=3]="Closed",A[A.Disposed=4]="Disposed"})(I||(I={}));function _(A,M,D,P){let B=D!==void 0?D:e.NullLogger,O=0,$=0,V=0,G="2.0",z,W=new Map,H,j=new Map,Q=new Map,U,oe=new i.LinkedMap,te=new Map,le=new Set,ie=new Map,ae=p.Off,Re=g.Text,be,Pe=I.New,Ge=new a.Emitter,Oe=new a.Emitter,ue=new a.Emitter,ye=new a.Emitter,ke=new a.Emitter,ce=P&&P.cancellationStrategy?P.cancellationStrategy:R.Message;function re(Ee){if(Ee===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+Ee.toString()}o(re,"createRequestQueueKey"),E(re,"createRequestQueueKey");function J(Ee){return Ee===null?"res-unknown-"+(++V).toString():"res-"+Ee.toString()}o(J,"createResponseQueueKey"),E(J,"createResponseQueueKey");function se(){return"not-"+(++$).toString()}o(se,"createNotificationQueueKey"),E(se,"createNotificationQueueKey");function ge(Ee,tt){n.Message.isRequest(tt)?Ee.set(re(tt.id),tt):n.Message.isResponse(tt)?Ee.set(J(tt.id),tt):Ee.set(se(),tt)}o(ge,"addMessageToQueue"),E(ge,"addMessageToQueue");function Te(Ee){}o(Te,"cancelUndispatched"),E(Te,"cancelUndispatched");function we(){return Pe===I.Listening}o(we,"isListening"),E(we,"isListening");function Me(){return Pe===I.Closed}o(Me,"isClosed"),E(Me,"isClosed");function ve(){return Pe===I.Disposed}o(ve,"isDisposed"),E(ve,"isDisposed");function ne(){(Pe===I.New||Pe===I.Listening)&&(Pe=I.Closed,Oe.fire(void 0))}o(ne,"closeHandler"),E(ne,"closeHandler");function q(Ee){Ge.fire([Ee,void 0,void 0])}o(q,"readErrorHandler"),E(q,"readErrorHandler");function he(Ee){Ge.fire(Ee)}o(he,"writeErrorHandler"),E(he,"writeErrorHandler"),A.onClose(ne),A.onError(q),M.onClose(ne),M.onError(he);function X(){U||oe.size===0||(U=(0,t.default)().timer.setImmediate(()=>{U=void 0,K()}))}o(X,"triggerMessageQueue"),E(X,"triggerMessageQueue");function fe(Ee){n.Message.isRequest(Ee)?_e(Ee):n.Message.isNotification(Ee)?Ne(Ee):n.Message.isResponse(Ee)?Be(Ee):He(Ee)}o(fe,"handleMessage"),E(fe,"handleMessage");function K(){if(oe.size===0)return;let Ee=oe.shift();try{let tt=P?.messageStrategy;L.is(tt)?tt.handleMessage(Ee,fe):fe(Ee)}finally{X()}}o(K,"processMessageQueue"),E(K,"processMessageQueue");let qe=E(Ee=>{try{if(n.Message.isNotification(Ee)&&Ee.method===l.type.method){let tt=Ee.params.id,at=re(tt),ot=oe.get(at);if(n.Message.isRequest(ot)){let Bt=P?.connectionStrategy,qt=Bt&&Bt.cancelUndispatched?Bt.cancelUndispatched(ot,Te):void 0;if(qt&&(qt.error!==void 0||qt.result!==void 0)){oe.delete(at),ie.delete(tt),qt.id=ot.id,Ke(qt,Ee.method,Date.now()),M.write(qt).catch(()=>B.error("Sending response for canceled message failed."));return}}let Wt=ie.get(tt);if(Wt!==void 0){Wt.cancel(),mt(Ee);return}else le.add(tt)}ge(oe,Ee)}finally{X()}},"callback");function _e(Ee){if(ve())return;function tt(Tt,De,it){let We={jsonrpc:G,id:Ee.id};Tt instanceof n.ResponseError?We.error=Tt.toJson():We.result=Tt===void 0?null:Tt,Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(tt,"reply"),E(tt,"reply");function at(Tt,De,it){let We={jsonrpc:G,id:Ee.id,error:Tt.toJson()};Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(at,"replyError"),E(at,"replyError");function ot(Tt,De,it){Tt===void 0&&(Tt=null);let We={jsonrpc:G,id:Ee.id,result:Tt};Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(ot,"replySuccess"),E(ot,"replySuccess"),xe(Ee);let Wt=W.get(Ee.method),Bt,qt;Wt&&(Bt=Wt.type,qt=Wt.handler);let vr=Date.now();if(qt||z){let Tt=Ee.id??String(Date.now()),De=k.is(ce.receiver)?ce.receiver.createCancellationTokenSource(Tt):ce.receiver.createCancellationTokenSource(Ee);Ee.id!==null&&le.has(Ee.id)&&De.cancel(),Ee.id!==null&&ie.set(Tt,De);try{let it;if(qt)if(Ee.params===void 0){if(Bt!==void 0&&Bt.numberOfParams!==0){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines ${Bt.numberOfParams} params but received none.`),Ee.method,vr);return}it=qt(De.token)}else if(Array.isArray(Ee.params)){if(Bt!==void 0&&Bt.parameterStructures===n.ParameterStructures.byName){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines parameters by name but received parameters by position`),Ee.method,vr);return}it=qt(...Ee.params,De.token)}else{if(Bt!==void 0&&Bt.parameterStructures===n.ParameterStructures.byPosition){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines parameters by position but received parameters by name`),Ee.method,vr);return}it=qt(Ee.params,De.token)}else z&&(it=z(Ee.method,Ee.params,De.token));let We=it;it?We.then?We.then(rt=>{ie.delete(Tt),tt(rt,Ee.method,vr)},rt=>{ie.delete(Tt),rt instanceof n.ResponseError?at(rt,Ee.method,vr):rt&&r.string(rt.message)?at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed with message: ${rt.message}`),Ee.method,vr):at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed unexpectedly without providing any details.`),Ee.method,vr)}):(ie.delete(Tt),tt(it,Ee.method,vr)):(ie.delete(Tt),ot(it,Ee.method,vr))}catch(it){ie.delete(Tt),it instanceof n.ResponseError?tt(it,Ee.method,vr):it&&r.string(it.message)?at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed with message: ${it.message}`),Ee.method,vr):at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed unexpectedly without providing any details.`),Ee.method,vr)}}else at(new n.ResponseError(n.ErrorCodes.MethodNotFound,`Unhandled method ${Ee.method}`),Ee.method,vr)}o(_e,"handleRequest"),E(_e,"handleRequest");function Be(Ee){if(!ve())if(Ee.id===null)Ee.error?B.error(`Received response message without id: Error is: +${JSON.stringify(Ee.error,void 0,4)}`):B.error("Received response message without id. No further error information provided.");else{let tt=Ee.id,at=te.get(tt);if(Le(Ee,at),at!==void 0){te.delete(tt);try{if(Ee.error){let ot=Ee.error;at.reject(new n.ResponseError(ot.code,ot.message,ot.data))}else if(Ee.result!==void 0)at.resolve(Ee.result);else throw new Error("Should never happen.")}catch(ot){ot.message?B.error(`Response handler '${at.method}' failed with message: ${ot.message}`):B.error(`Response handler '${at.method}' failed unexpectedly.`)}}}}o(Be,"handleResponse"),E(Be,"handleResponse");function Ne(Ee){if(ve())return;let tt,at;if(Ee.method===l.type.method){let ot=Ee.params.id;le.delete(ot),mt(Ee);return}else{let ot=j.get(Ee.method);ot&&(at=ot.handler,tt=ot.type)}if(at||H)try{if(mt(Ee),at)if(Ee.params===void 0)tt!==void 0&&tt.numberOfParams!==0&&tt.parameterStructures!==n.ParameterStructures.byName&&B.error(`Notification ${Ee.method} defines ${tt.numberOfParams} params but received none.`),at();else if(Array.isArray(Ee.params)){let ot=Ee.params;Ee.method===h.type.method&&ot.length===2&&u.is(ot[0])?at({token:ot[0],value:ot[1]}):(tt!==void 0&&(tt.parameterStructures===n.ParameterStructures.byName&&B.error(`Notification ${Ee.method} defines parameters by name but received parameters by position`),tt.numberOfParams!==Ee.params.length&&B.error(`Notification ${Ee.method} defines ${tt.numberOfParams} params but received ${ot.length} arguments`)),at(...ot))}else tt!==void 0&&tt.parameterStructures===n.ParameterStructures.byPosition&&B.error(`Notification ${Ee.method} defines parameters by position but received parameters by name`),at(Ee.params);else H&&H(Ee.method,Ee.params)}catch(ot){ot.message?B.error(`Notification handler '${Ee.method}' failed with message: ${ot.message}`):B.error(`Notification handler '${Ee.method}' failed unexpectedly.`)}else ue.fire(Ee)}o(Ne,"handleNotification"),E(Ne,"handleNotification");function He(Ee){if(!Ee){B.error("Received empty message.");return}B.error(`Received message which is neither a response nor a notification message: +${JSON.stringify(Ee,null,4)}`);let tt=Ee;if(r.string(tt.id)||r.number(tt.id)){let at=tt.id,ot=te.get(at);ot&&ot.reject(new Error("The received response has neither a result nor an error property."))}}o(He,"handleInvalidMessage"),E(He,"handleInvalidMessage");function $e(Ee){if(Ee!=null)switch(ae){case p.Verbose:return JSON.stringify(Ee,null,4);case p.Compact:return JSON.stringify(Ee);default:return}}o($e,"stringifyTrace"),E($e,"stringifyTrace");function Xe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&Ee.params&&(tt=`Params: ${$e(Ee.params)} + +`),be.log(`Sending request '${Ee.method} - (${Ee.id})'.`,tt)}else ft("send-request",Ee)}o(Xe,"traceSendingRequest"),E(Xe,"traceSendingRequest");function Fe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&(Ee.params?tt=`Params: ${$e(Ee.params)} + +`:tt=`No parameters provided. + +`),be.log(`Sending notification '${Ee.method}'.`,tt)}else ft("send-notification",Ee)}o(Fe,"traceSendingNotification"),E(Fe,"traceSendingNotification");function Ke(Ee,tt,at){if(!(ae===p.Off||!be))if(Re===g.Text){let ot;(ae===p.Verbose||ae===p.Compact)&&(Ee.error&&Ee.error.data?ot=`Error data: ${$e(Ee.error.data)} + +`:Ee.result?ot=`Result: ${$e(Ee.result)} + +`:Ee.error===void 0&&(ot=`No result returned. + +`)),be.log(`Sending response '${tt} - (${Ee.id})'. Processing request took ${Date.now()-at}ms`,ot)}else ft("send-response",Ee)}o(Ke,"traceSendingResponse"),E(Ke,"traceSendingResponse");function xe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&Ee.params&&(tt=`Params: ${$e(Ee.params)} + +`),be.log(`Received request '${Ee.method} - (${Ee.id})'.`,tt)}else ft("receive-request",Ee)}o(xe,"traceReceivedRequest"),E(xe,"traceReceivedRequest");function mt(Ee){if(!(ae===p.Off||!be||Ee.method===v.type.method))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&(Ee.params?tt=`Params: ${$e(Ee.params)} + +`:tt=`No parameters provided. + +`),be.log(`Received notification '${Ee.method}'.`,tt)}else ft("receive-notification",Ee)}o(mt,"traceReceivedNotification"),E(mt,"traceReceivedNotification");function Le(Ee,tt){if(!(ae===p.Off||!be))if(Re===g.Text){let at;if((ae===p.Verbose||ae===p.Compact)&&(Ee.error&&Ee.error.data?at=`Error data: ${$e(Ee.error.data)} + +`:Ee.result?at=`Result: ${$e(Ee.result)} + +`:Ee.error===void 0&&(at=`No result returned. + +`)),tt){let ot=Ee.error?` Request failed: ${Ee.error.message} (${Ee.error.code}).`:"";be.log(`Received response '${tt.method} - (${Ee.id})' in ${Date.now()-tt.timerStart}ms.${ot}`,at)}else be.log(`Received response ${Ee.id} without active response promise.`,at)}else ft("receive-response",Ee)}o(Le,"traceReceivedResponse"),E(Le,"traceReceivedResponse");function ft(Ee,tt){if(!be||ae===p.Off)return;let at={isLSPMessage:!0,type:Ee,message:tt,timestamp:Date.now()};be.log(at)}o(ft,"logLSPMessage"),E(ft,"logLSPMessage");function wt(){if(Me())throw new b(x.Closed,"Connection is closed.");if(ve())throw new b(x.Disposed,"Connection is disposed.")}o(wt,"throwIfClosedOrDisposed"),E(wt,"throwIfClosedOrDisposed");function zt(){if(we())throw new b(x.AlreadyListening,"Connection is already listening")}o(zt,"throwIfListening"),E(zt,"throwIfListening");function St(){if(!we())throw new Error("Call listen() first.")}o(St,"throwIfNotListening"),E(St,"throwIfNotListening");function At(Ee){return Ee===void 0?null:Ee}o(At,"undefinedToNull"),E(At,"undefinedToNull");function bt(Ee){if(Ee!==null)return Ee}o(bt,"nullToUndefined"),E(bt,"nullToUndefined");function me(Ee){return Ee!=null&&!Array.isArray(Ee)&&typeof Ee=="object"}o(me,"isNamedParam"),E(me,"isNamedParam");function lt(Ee,tt){switch(Ee){case n.ParameterStructures.auto:return me(tt)?bt(tt):[At(tt)];case n.ParameterStructures.byName:if(!me(tt))throw new Error("Received parameters by name but param is not an object literal.");return bt(tt);case n.ParameterStructures.byPosition:return[At(tt)];default:throw new Error(`Unknown parameter structure ${Ee.toString()}`)}}o(lt,"computeSingleParam"),E(lt,"computeSingleParam");function gt(Ee,tt){let at,ot=Ee.numberOfParams;switch(ot){case 0:at=void 0;break;case 1:at=lt(Ee.parameterStructures,tt[0]);break;default:at=[];for(let Wt=0;Wt{wt();let at,ot;if(r.string(Ee)){at=Ee;let Bt=tt[0],qt=0,vr=n.ParameterStructures.auto;n.ParameterStructures.is(Bt)&&(qt=1,vr=Bt);let Tt=tt.length,De=Tt-qt;switch(De){case 0:ot=void 0;break;case 1:ot=lt(vr,tt[qt]);break;default:if(vr===n.ParameterStructures.byName)throw new Error(`Received ${De} parameters for 'by Name' notification parameter structure.`);ot=tt.slice(qt,Tt).map(it=>At(it));break}}else{let Bt=tt;at=Ee.method,ot=gt(Ee,Bt)}let Wt={jsonrpc:G,method:at,params:ot};return Fe(Wt),M.write(Wt).catch(Bt=>{throw B.error("Sending notification failed."),Bt})},"sendNotification"),onNotification:E((Ee,tt)=>{wt();let at;return r.func(Ee)?H=Ee:tt&&(r.string(Ee)?(at=Ee,j.set(Ee,{type:void 0,handler:tt})):(at=Ee.method,j.set(Ee.method,{type:Ee,handler:tt}))),{dispose:E(()=>{at!==void 0?j.delete(at):H=void 0},"dispose")}},"onNotification"),onProgress:E((Ee,tt,at)=>{if(Q.has(tt))throw new Error(`Progress handler for token ${tt} already registered`);return Q.set(tt,at),{dispose:E(()=>{Q.delete(tt)},"dispose")}},"onProgress"),sendProgress:E((Ee,tt,at)=>Ze.sendNotification(h.type,{token:tt,value:at}),"sendProgress"),onUnhandledProgress:ye.event,sendRequest:E((Ee,...tt)=>{wt(),St();let at,ot,Wt;if(r.string(Ee)){at=Ee;let Tt=tt[0],De=tt[tt.length-1],it=0,We=n.ParameterStructures.auto;n.ParameterStructures.is(Tt)&&(it=1,We=Tt);let rt=tt.length;s.CancellationToken.is(De)&&(rt=rt-1,Wt=De);let yt=rt-it;switch(yt){case 0:ot=void 0;break;case 1:ot=lt(We,tt[it]);break;default:if(We===n.ParameterStructures.byName)throw new Error(`Received ${yt} parameters for 'by Name' request parameter structure.`);ot=tt.slice(it,rt).map(Yt=>At(Yt));break}}else{let Tt=tt;at=Ee.method,ot=gt(Ee,Tt);let De=Ee.numberOfParams;Wt=s.CancellationToken.is(Tt[De])?Tt[De]:void 0}let Bt=O++,qt;Wt&&(qt=Wt.onCancellationRequested(()=>{let Tt=ce.sender.sendCancellation(Ze,Bt);return Tt===void 0?(B.log(`Received no promise from cancellation strategy when cancelling id ${Bt}`),Promise.resolve()):Tt.catch(()=>{B.log(`Sending cancellation messages for id ${Bt} failed`)})}));let vr={jsonrpc:G,id:Bt,method:at,params:ot};return Xe(vr),typeof ce.sender.enableCancellation=="function"&&ce.sender.enableCancellation(vr),new Promise(async(Tt,De)=>{let it=E(yt=>{Tt(yt),ce.sender.cleanup(Bt),qt?.dispose()},"resolveWithCleanup"),We=E(yt=>{De(yt),ce.sender.cleanup(Bt),qt?.dispose()},"rejectWithCleanup"),rt={method:at,timerStart:Date.now(),resolve:it,reject:We};try{await M.write(vr),te.set(Bt,rt)}catch(yt){throw B.error("Sending request failed."),rt.reject(new n.ResponseError(n.ErrorCodes.MessageWriteError,yt.message?yt.message:"Unknown reason")),yt}})},"sendRequest"),onRequest:E((Ee,tt)=>{wt();let at=null;return f.is(Ee)?(at=void 0,z=Ee):r.string(Ee)?(at=null,tt!==void 0&&(at=Ee,W.set(Ee,{handler:tt,type:void 0}))):tt!==void 0&&(at=Ee.method,W.set(Ee.method,{type:Ee,handler:tt})),{dispose:E(()=>{at!==null&&(at!==void 0?W.delete(at):z=void 0)},"dispose")}},"onRequest"),hasPendingResponse:E(()=>te.size>0,"hasPendingResponse"),trace:E(async(Ee,tt,at)=>{let ot=!1,Wt=g.Text;at!==void 0&&(r.boolean(at)?ot=at:(ot=at.sendNotification||!1,Wt=at.traceFormat||g.Text)),ae=Ee,Re=Wt,ae===p.Off?be=void 0:be=tt,ot&&!Me()&&!ve()&&await Ze.sendNotification(y.type,{value:p.toString(Ee)})},"trace"),onError:Ge.event,onClose:Oe.event,onUnhandledNotification:ue.event,onDispose:ke.event,end:E(()=>{M.end()},"end"),dispose:E(()=>{if(ve())return;Pe=I.Disposed,ke.fire(void 0);let Ee=new n.ResponseError(n.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let tt of te.values())tt.reject(Ee);te=new Map,ie=new Map,le=new Set,oe=new i.LinkedMap,r.func(M.dispose)&&M.dispose(),r.func(A.dispose)&&A.dispose()},"dispose"),listen:E(()=>{wt(),zt(),Pe=I.Listening,A.listen(qe)},"listen"),inspect:E(()=>{(0,t.default)().console.log("inspect")},"inspect")};return Ze.onNotification(v.type,Ee=>{if(ae===p.Off||!be)return;let tt=ae===p.Verbose||ae===p.Compact;be.log(Ee.message,tt?Ee.verbose:void 0)}),Ze.onNotification(h.type,Ee=>{let tt=Q.get(Ee.token);tt?tt(Ee.value):ye.fire(Ee)}),Ze}o(_,"createMessageConnection"),E(_,"createMessageConnection"),e.createMessageConnection=_}}),TG=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;var t=_we();Object.defineProperty(e,"Message",{enumerable:!0,get:E(function(){return t.Message},"get")}),Object.defineProperty(e,"RequestType",{enumerable:!0,get:E(function(){return t.RequestType},"get")}),Object.defineProperty(e,"RequestType0",{enumerable:!0,get:E(function(){return t.RequestType0},"get")}),Object.defineProperty(e,"RequestType1",{enumerable:!0,get:E(function(){return t.RequestType1},"get")}),Object.defineProperty(e,"RequestType2",{enumerable:!0,get:E(function(){return t.RequestType2},"get")}),Object.defineProperty(e,"RequestType3",{enumerable:!0,get:E(function(){return t.RequestType3},"get")}),Object.defineProperty(e,"RequestType4",{enumerable:!0,get:E(function(){return t.RequestType4},"get")}),Object.defineProperty(e,"RequestType5",{enumerable:!0,get:E(function(){return t.RequestType5},"get")}),Object.defineProperty(e,"RequestType6",{enumerable:!0,get:E(function(){return t.RequestType6},"get")}),Object.defineProperty(e,"RequestType7",{enumerable:!0,get:E(function(){return t.RequestType7},"get")}),Object.defineProperty(e,"RequestType8",{enumerable:!0,get:E(function(){return t.RequestType8},"get")}),Object.defineProperty(e,"RequestType9",{enumerable:!0,get:E(function(){return t.RequestType9},"get")}),Object.defineProperty(e,"ResponseError",{enumerable:!0,get:E(function(){return t.ResponseError},"get")}),Object.defineProperty(e,"ErrorCodes",{enumerable:!0,get:E(function(){return t.ErrorCodes},"get")}),Object.defineProperty(e,"NotificationType",{enumerable:!0,get:E(function(){return t.NotificationType},"get")}),Object.defineProperty(e,"NotificationType0",{enumerable:!0,get:E(function(){return t.NotificationType0},"get")}),Object.defineProperty(e,"NotificationType1",{enumerable:!0,get:E(function(){return t.NotificationType1},"get")}),Object.defineProperty(e,"NotificationType2",{enumerable:!0,get:E(function(){return t.NotificationType2},"get")}),Object.defineProperty(e,"NotificationType3",{enumerable:!0,get:E(function(){return t.NotificationType3},"get")}),Object.defineProperty(e,"NotificationType4",{enumerable:!0,get:E(function(){return t.NotificationType4},"get")}),Object.defineProperty(e,"NotificationType5",{enumerable:!0,get:E(function(){return t.NotificationType5},"get")}),Object.defineProperty(e,"NotificationType6",{enumerable:!0,get:E(function(){return t.NotificationType6},"get")}),Object.defineProperty(e,"NotificationType7",{enumerable:!0,get:E(function(){return t.NotificationType7},"get")}),Object.defineProperty(e,"NotificationType8",{enumerable:!0,get:E(function(){return t.NotificationType8},"get")}),Object.defineProperty(e,"NotificationType9",{enumerable:!0,get:E(function(){return t.NotificationType9},"get")}),Object.defineProperty(e,"ParameterStructures",{enumerable:!0,get:E(function(){return t.ParameterStructures},"get")});var r=Dwe();Object.defineProperty(e,"LinkedMap",{enumerable:!0,get:E(function(){return r.LinkedMap},"get")}),Object.defineProperty(e,"LRUCache",{enumerable:!0,get:E(function(){return r.LRUCache},"get")}),Object.defineProperty(e,"Touch",{enumerable:!0,get:E(function(){return r.Touch},"get")});var n=E0t();Object.defineProperty(e,"Disposable",{enumerable:!0,get:E(function(){return n.Disposable},"get")});var i=Iv();Object.defineProperty(e,"Event",{enumerable:!0,get:E(function(){return i.Event},"get")}),Object.defineProperty(e,"Emitter",{enumerable:!0,get:E(function(){return i.Emitter},"get")});var a=yR();Object.defineProperty(e,"CancellationTokenSource",{enumerable:!0,get:E(function(){return a.CancellationTokenSource},"get")}),Object.defineProperty(e,"CancellationToken",{enumerable:!0,get:E(function(){return a.CancellationToken},"get")});var s=A0t();Object.defineProperty(e,"SharedArraySenderStrategy",{enumerable:!0,get:E(function(){return s.SharedArraySenderStrategy},"get")}),Object.defineProperty(e,"SharedArrayReceiverStrategy",{enumerable:!0,get:E(function(){return s.SharedArrayReceiverStrategy},"get")});var l=R0t();Object.defineProperty(e,"MessageReader",{enumerable:!0,get:E(function(){return l.MessageReader},"get")}),Object.defineProperty(e,"AbstractMessageReader",{enumerable:!0,get:E(function(){return l.AbstractMessageReader},"get")}),Object.defineProperty(e,"ReadableStreamMessageReader",{enumerable:!0,get:E(function(){return l.ReadableStreamMessageReader},"get")});var u=_0t();Object.defineProperty(e,"MessageWriter",{enumerable:!0,get:E(function(){return u.MessageWriter},"get")}),Object.defineProperty(e,"AbstractMessageWriter",{enumerable:!0,get:E(function(){return u.AbstractMessageWriter},"get")}),Object.defineProperty(e,"WriteableStreamMessageWriter",{enumerable:!0,get:E(function(){return u.WriteableStreamMessageWriter},"get")});var h=L0t();Object.defineProperty(e,"AbstractMessageBuffer",{enumerable:!0,get:E(function(){return h.AbstractMessageBuffer},"get")});var d=D0t();Object.defineProperty(e,"ConnectionStrategy",{enumerable:!0,get:E(function(){return d.ConnectionStrategy},"get")}),Object.defineProperty(e,"ConnectionOptions",{enumerable:!0,get:E(function(){return d.ConnectionOptions},"get")}),Object.defineProperty(e,"NullLogger",{enumerable:!0,get:E(function(){return d.NullLogger},"get")}),Object.defineProperty(e,"createMessageConnection",{enumerable:!0,get:E(function(){return d.createMessageConnection},"get")}),Object.defineProperty(e,"ProgressToken",{enumerable:!0,get:E(function(){return d.ProgressToken},"get")}),Object.defineProperty(e,"ProgressType",{enumerable:!0,get:E(function(){return d.ProgressType},"get")}),Object.defineProperty(e,"Trace",{enumerable:!0,get:E(function(){return d.Trace},"get")}),Object.defineProperty(e,"TraceValues",{enumerable:!0,get:E(function(){return d.TraceValues},"get")}),Object.defineProperty(e,"TraceFormat",{enumerable:!0,get:E(function(){return d.TraceFormat},"get")}),Object.defineProperty(e,"SetTraceNotification",{enumerable:!0,get:E(function(){return d.SetTraceNotification},"get")}),Object.defineProperty(e,"LogTraceNotification",{enumerable:!0,get:E(function(){return d.LogTraceNotification},"get")}),Object.defineProperty(e,"ConnectionErrors",{enumerable:!0,get:E(function(){return d.ConnectionErrors},"get")}),Object.defineProperty(e,"ConnectionError",{enumerable:!0,get:E(function(){return d.ConnectionError},"get")}),Object.defineProperty(e,"CancellationReceiverStrategy",{enumerable:!0,get:E(function(){return d.CancellationReceiverStrategy},"get")}),Object.defineProperty(e,"CancellationSenderStrategy",{enumerable:!0,get:E(function(){return d.CancellationSenderStrategy},"get")}),Object.defineProperty(e,"CancellationStrategy",{enumerable:!0,get:E(function(){return d.CancellationStrategy},"get")}),Object.defineProperty(e,"MessageStrategy",{enumerable:!0,get:E(function(){return d.MessageStrategy},"get")});var f=Qg();e.RAL=f.default}}),I0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=TG(),r=class Nwe extends t.AbstractMessageBuffer{static{o(this,"_MessageBuffer")}static{E(this,"MessageBuffer")}constructor(h="utf-8"){super(h),this.asciiDecoder=new TextDecoder("ascii")}emptyBuffer(){return Nwe.emptyBuffer}fromString(h,d){return new TextEncoder().encode(h)}toString(h,d){return d==="ascii"?this.asciiDecoder.decode(h):new TextDecoder(d).decode(h)}asNative(h,d){return d===void 0?h:h.slice(0,d)}allocNative(h){return new Uint8Array(h)}};r.emptyBuffer=new Uint8Array(0);var n=class{static{o(this,"ReadableStreamWrapper")}static{E(this,"ReadableStreamWrapper")}constructor(u){this.socket=u,this._onData=new t.Emitter,this._messageListener=h=>{h.data.arrayBuffer().then(f=>{this._onData.fire(new Uint8Array(f))},()=>{(0,t.RAL)().console.error("Converting blob to array buffer failed.")})},this.socket.addEventListener("message",this._messageListener)}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}onData(u){return this._onData.event(u)}},i=class{static{o(this,"WritableStreamWrapper")}static{E(this,"WritableStreamWrapper")}constructor(u){this.socket=u}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}write(u,h){if(typeof u=="string"){if(h!==void 0&&h!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h}`);this.socket.send(u)}else this.socket.send(u);return Promise.resolve()}end(){this.socket.close()}},a=new TextEncoder,s=Object.freeze({messageBuffer:Object.freeze({create:E(u=>new r(u),"create")}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:E((u,h)=>{if(h.charset!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h.charset}`);return Promise.resolve(a.encode(JSON.stringify(u,void 0,0)))},"encode")}),decoder:Object.freeze({name:"application/json",decode:E((u,h)=>{if(!(u instanceof Uint8Array))throw new Error("In a Browser environments only Uint8Arrays are supported.");return Promise.resolve(JSON.parse(new TextDecoder(h.charset).decode(u)))},"decode")})}),stream:Object.freeze({asReadableStream:E(u=>new n(u),"asReadableStream"),asWritableStream:E(u=>new i(u),"asWritableStream")}),console,timer:Object.freeze({setTimeout(u,h,...d){let f=setTimeout(u,h,...d);return{dispose:E(()=>clearTimeout(f),"dispose")}},setImmediate(u,...h){let d=setTimeout(u,0,...h);return{dispose:E(()=>clearTimeout(d),"dispose")}},setInterval(u,h,...d){let f=setInterval(u,h,...d);return{dispose:E(()=>clearInterval(f),"dispose")}}})});function l(){return s}o(l,"RIL"),E(l,"RIL"),(function(u){function h(){t.RAL.install(s)}o(h,"install"),E(h,"install"),u.install=h})(l||(l={})),e.default=l}}),Mv=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(u,h,d,f){f===void 0&&(f=d);var p=Object.getOwnPropertyDescriptor(h,d);(!p||("get"in p?!h.__esModule:p.writable||p.configurable))&&(p={enumerable:!0,get:E(function(){return h[d]},"get")}),Object.defineProperty(u,f,p)}):(function(u,h,d,f){f===void 0&&(f=d),u[f]=h[d]})),r=e&&e.__exportStar||function(u,h){for(var d in u)d!=="default"&&!Object.prototype.hasOwnProperty.call(h,d)&&t(h,u,d)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.BrowserMessageWriter=e.BrowserMessageReader=void 0;var n=I0t();n.default.install();var i=TG();r(TG(),e);var a=class extends i.AbstractMessageReader{static{o(this,"BrowserMessageReader")}static{E(this,"BrowserMessageReader")}constructor(u){super(),this._onData=new i.Emitter,this._messageListener=h=>{this._onData.fire(h.data)},u.addEventListener("error",h=>this.fireError(h)),u.onmessage=this._messageListener}listen(u){return this._onData.event(u)}};e.BrowserMessageReader=a;var s=class extends i.AbstractMessageWriter{static{o(this,"BrowserMessageWriter")}static{E(this,"BrowserMessageWriter")}constructor(u){super(),this.port=u,this.errorCount=0,u.addEventListener("error",h=>this.fireError(h))}write(u){try{return this.port.postMessage(u),Promise.resolve()}catch(h){return this.handleError(h,u),Promise.reject(h)}}handleError(u,h){this.errorCount++,this.fireError(u,h,this.errorCount)}end(){}};e.BrowserMessageWriter=s;function l(u,h,d,f){return d===void 0&&(d=i.NullLogger),i.ConnectionStrategy.is(f)&&(f={connectionStrategy:f}),(0,i.createMessageConnection)(u,h,d,f)}o(l,"createMessageConnection"),E(l,"createMessageConnection"),e.createMessageConnection=l}}),OTe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js"(e,t){"use strict";t.exports=Mv()}}),ki=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProtocolNotificationType=e.ProtocolNotificationType0=e.ProtocolRequestType=e.ProtocolRequestType0=e.RegistrationType=e.MessageDirection=void 0;var t=Mv(),r;(function(u){u.clientToServer="clientToServer",u.serverToClient="serverToClient",u.both="both"})(r||(e.MessageDirection=r={}));var n=class{static{o(this,"RegistrationType")}static{E(this,"RegistrationType")}constructor(u){this.method=u}};e.RegistrationType=n;var i=class extends t.RequestType0{static{o(this,"ProtocolRequestType0")}static{E(this,"ProtocolRequestType0")}constructor(u){super(u)}};e.ProtocolRequestType0=i;var a=class extends t.RequestType{static{o(this,"ProtocolRequestType")}static{E(this,"ProtocolRequestType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolRequestType=a;var s=class extends t.NotificationType0{static{o(this,"ProtocolNotificationType0")}static{E(this,"ProtocolNotificationType0")}constructor(u){super(u)}};e.ProtocolNotificationType0=s;var l=class extends t.NotificationType{static{o(this,"ProtocolNotificationType")}static{E(this,"ProtocolNotificationType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolNotificationType=l}}),rW=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.objectLiteral=e.typedArray=e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(d){return d===!0||d===!1}o(t,"boolean"),E(t,"boolean"),e.boolean=t;function r(d){return typeof d=="string"||d instanceof String}o(r,"string"),E(r,"string"),e.string=r;function n(d){return typeof d=="number"||d instanceof Number}o(n,"number"),E(n,"number"),e.number=n;function i(d){return d instanceof Error}o(i,"error"),E(i,"error"),e.error=i;function a(d){return typeof d=="function"}o(a,"func"),E(a,"func"),e.func=a;function s(d){return Array.isArray(d)}o(s,"array"),E(s,"array"),e.array=s;function l(d){return s(d)&&d.every(f=>r(f))}o(l,"stringArray"),E(l,"stringArray"),e.stringArray=l;function u(d,f){return Array.isArray(d)&&d.every(f)}o(u,"typedArray"),E(u,"typedArray"),e.typedArray=u;function h(d){return d!==null&&typeof d=="object"}o(h,"objectLiteral"),E(h,"objectLiteral"),e.objectLiteral=h}}),M0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImplementationRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/implementation",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ImplementationRequest=r={}))}}),N0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeDefinitionRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/typeDefinition",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.TypeDefinitionRequest=r={}))}}),P0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=void 0;var t=ki(),r;(function(i){i.method="workspace/workspaceFolders",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(r||(e.WorkspaceFoldersRequest=r={}));var n;(function(i){i.method="workspace/didChangeWorkspaceFolders",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolNotificationType(i.method)})(n||(e.DidChangeWorkspaceFoldersNotification=n={}))}}),O0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationRequest=void 0;var t=ki(),r;(function(n){n.method="workspace/configuration",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ConfigurationRequest=r={}))}}),B0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPresentationRequest=e.DocumentColorRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/documentColor",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.DocumentColorRequest=r={}));var n;(function(i){i.method="textDocument/colorPresentation",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(n||(e.ColorPresentationRequest=n={}))}}),$0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/foldingRange",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.FoldingRangeRequest=r={}));var n;(function(i){i.method="workspace/foldingRange/refresh",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(n||(e.FoldingRangeRefreshRequest=n={}))}}),F0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DeclarationRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/declaration",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.DeclarationRequest=r={}))}}),z0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionRangeRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/selectionRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.SelectionRangeRequest=r={}))}}),G0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=void 0;var t=Mv(),r=ki(),n;(function(s){s.type=new t.ProgressType;function l(u){return u===s.type}o(l,"is"),E(l,"is"),s.is=l})(n||(e.WorkDoneProgress=n={}));var i;(function(s){s.method="window/workDoneProgress/create",s.messageDirection=r.MessageDirection.serverToClient,s.type=new r.ProtocolRequestType(s.method)})(i||(e.WorkDoneProgressCreateRequest=i={}));var a;(function(s){s.method="window/workDoneProgress/cancel",s.messageDirection=r.MessageDirection.clientToServer,s.type=new r.ProtocolNotificationType(s.method)})(a||(e.WorkDoneProgressCancelNotification=a={}))}}),V0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.CallHierarchyPrepareRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/prepareCallHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.CallHierarchyPrepareRequest=r={}));var n;(function(a){a.method="callHierarchy/incomingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.CallHierarchyIncomingCallsRequest=n={}));var i;(function(a){a.method="callHierarchy/outgoingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.CallHierarchyOutgoingCallsRequest=i={}))}}),W0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.SemanticTokensRegistrationType=e.TokenFormat=void 0;var t=ki(),r;(function(u){u.Relative="relative"})(r||(e.TokenFormat=r={}));var n;(function(u){u.method="textDocument/semanticTokens",u.type=new t.RegistrationType(u.method)})(n||(e.SemanticTokensRegistrationType=n={}));var i;(function(u){u.method="textDocument/semanticTokens/full",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(i||(e.SemanticTokensRequest=i={}));var a;(function(u){u.method="textDocument/semanticTokens/full/delta",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(a||(e.SemanticTokensDeltaRequest=a={}));var s;(function(u){u.method="textDocument/semanticTokens/range",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(s||(e.SemanticTokensRangeRequest=s={}));var l;(function(u){u.method="workspace/semanticTokens/refresh",u.messageDirection=t.MessageDirection.serverToClient,u.type=new t.ProtocolRequestType0(u.method)})(l||(e.SemanticTokensRefreshRequest=l={}))}}),q0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowDocumentRequest=void 0;var t=ki(),r;(function(n){n.method="window/showDocument",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ShowDocumentRequest=r={}))}}),H0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedEditingRangeRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/linkedEditingRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.LinkedEditingRangeRequest=r={}))}}),U0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.DidRenameFilesNotification=e.WillRenameFilesRequest=e.DidCreateFilesNotification=e.WillCreateFilesRequest=e.FileOperationPatternKind=void 0;var t=ki(),r;(function(h){h.file="file",h.folder="folder"})(r||(e.FileOperationPatternKind=r={}));var n;(function(h){h.method="workspace/willCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(n||(e.WillCreateFilesRequest=n={}));var i;(function(h){h.method="workspace/didCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(i||(e.DidCreateFilesNotification=i={}));var a;(function(h){h.method="workspace/willRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(a||(e.WillRenameFilesRequest=a={}));var s;(function(h){h.method="workspace/didRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(s||(e.DidRenameFilesNotification=s={}));var l;(function(h){h.method="workspace/didDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(l||(e.DidDeleteFilesNotification=l={}));var u;(function(h){h.method="workspace/willDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(u||(e.WillDeleteFilesRequest=u={}))}}),Y0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=void 0;var t=ki(),r;(function(a){a.document="document",a.project="project",a.group="group",a.scheme="scheme",a.global="global"})(r||(e.UniquenessLevel=r={}));var n;(function(a){a.$import="import",a.$export="export",a.local="local"})(n||(e.MonikerKind=n={}));var i;(function(a){a.method="textDocument/moniker",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.MonikerRequest=i={}))}}),j0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeHierarchySubtypesRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/prepareTypeHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.TypeHierarchyPrepareRequest=r={}));var n;(function(a){a.method="typeHierarchy/supertypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.TypeHierarchySupertypesRequest=n={}));var i;(function(a){a.method="typeHierarchy/subtypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.TypeHierarchySubtypesRequest=i={}))}}),X0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineValueRefreshRequest=e.InlineValueRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/inlineValue",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.InlineValueRequest=r={}));var n;(function(i){i.method="workspace/inlineValue/refresh",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(n||(e.InlineValueRefreshRequest=n={}))}}),K0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/inlayHint",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.InlayHintRequest=r={}));var n;(function(a){a.method="inlayHint/resolve",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.InlayHintResolveRequest=n={}));var i;(function(a){a.method="workspace/inlayHint/refresh",a.messageDirection=t.MessageDirection.serverToClient,a.type=new t.ProtocolRequestType0(a.method)})(i||(e.InlayHintRefreshRequest=i={}))}}),Z0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=void 0;var t=Mv(),r=rW(),n=ki(),i;(function(h){function d(f){let p=f;return p&&r.boolean(p.retriggerRequest)}o(d,"is"),E(d,"is"),h.is=d})(i||(e.DiagnosticServerCancellationData=i={}));var a;(function(h){h.Full="full",h.Unchanged="unchanged"})(a||(e.DocumentDiagnosticReportKind=a={}));var s;(function(h){h.method="textDocument/diagnostic",h.messageDirection=n.MessageDirection.clientToServer,h.type=new n.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(s||(e.DocumentDiagnosticRequest=s={}));var l;(function(h){h.method="workspace/diagnostic",h.messageDirection=n.MessageDirection.clientToServer,h.type=new n.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(l||(e.WorkspaceDiagnosticRequest=l={}));var u;(function(h){h.method="workspace/diagnostic/refresh",h.messageDirection=n.MessageDirection.serverToClient,h.type=new n.ProtocolRequestType0(h.method)})(u||(e.DiagnosticRefreshRequest=u={}))}}),Q0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=void 0;var t=(hw(),tW(gR)),r=rW(),n=ki(),i;(function(g){g.Markup=1,g.Code=2;function y(v){return v===1||v===2}o(y,"is"),E(y,"is"),g.is=y})(i||(e.NotebookCellKind=i={}));var a;(function(g){function y(b,T){let k={executionOrder:b};return(T===!0||T===!1)&&(k.success=T),k}o(y,"create"),E(y,"create"),g.create=y;function v(b){let T=b;return r.objectLiteral(T)&&t.uinteger.is(T.executionOrder)&&(T.success===void 0||r.boolean(T.success))}o(v,"is"),E(v,"is"),g.is=v;function x(b,T){return b===T?!0:b==null||T===null||T===void 0?!1:b.executionOrder===T.executionOrder&&b.success===T.success}o(x,"equals"),E(x,"equals"),g.equals=x})(a||(e.ExecutionSummary=a={}));var s;(function(g){function y(T,k){return{kind:T,document:k}}o(y,"create"),E(y,"create"),g.create=y;function v(T){let k=T;return r.objectLiteral(k)&&i.is(k.kind)&&t.DocumentUri.is(k.document)&&(k.metadata===void 0||r.objectLiteral(k.metadata))}o(v,"is"),E(v,"is"),g.is=v;function x(T,k){let C=new Set;return T.document!==k.document&&C.add("document"),T.kind!==k.kind&&C.add("kind"),T.executionSummary!==k.executionSummary&&C.add("executionSummary"),(T.metadata!==void 0||k.metadata!==void 0)&&!b(T.metadata,k.metadata)&&C.add("metadata"),(T.executionSummary!==void 0||k.executionSummary!==void 0)&&!a.equals(T.executionSummary,k.executionSummary)&&C.add("executionSummary"),C}o(x,"diff"),E(x,"diff"),g.diff=x;function b(T,k){if(T===k)return!0;if(T==null||k===null||k===void 0||typeof T!=typeof k||typeof T!="object")return!1;let C=Array.isArray(T),w=Array.isArray(k);if(C!==w)return!1;if(C&&w){if(T.length!==k.length)return!1;for(let S=0;S0}o(lt,"hasId"),E(lt,"hasId"),me.hasId=lt})(O||(e.StaticRegistrationOptions=O={}));var $;(function(me){function lt(gt){let Ze=gt;return Ze&&(Ze.documentSelector===null||_.is(Ze.documentSelector))}o(lt,"is"),E(lt,"is"),me.is=lt})($||(e.TextDocumentRegistrationOptions=$={}));var V;(function(me){function lt(Ze){let Ee=Ze;return n.objectLiteral(Ee)&&(Ee.workDoneProgress===void 0||n.boolean(Ee.workDoneProgress))}o(lt,"is"),E(lt,"is"),me.is=lt;function gt(Ze){let Ee=Ze;return Ee&&n.boolean(Ee.workDoneProgress)}o(gt,"hasWorkDoneProgress"),E(gt,"hasWorkDoneProgress"),me.hasWorkDoneProgress=gt})(V||(e.WorkDoneProgressOptions=V={}));var G;(function(me){me.method="initialize",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(G||(e.InitializeRequest=G={}));var z;(function(me){me.unknownProtocolVersion=1})(z||(e.InitializeErrorCodes=z={}));var W;(function(me){me.method="initialized",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(W||(e.InitializedNotification=W={}));var H;(function(me){me.method="shutdown",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType0(me.method)})(H||(e.ShutdownRequest=H={}));var j;(function(me){me.method="exit",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType0(me.method)})(j||(e.ExitNotification=j={}));var Q;(function(me){me.method="workspace/didChangeConfiguration",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Q||(e.DidChangeConfigurationNotification=Q={}));var U;(function(me){me.Error=1,me.Warning=2,me.Info=3,me.Log=4,me.Debug=5})(U||(e.MessageType=U={}));var oe;(function(me){me.method="window/showMessage",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(oe||(e.ShowMessageNotification=oe={}));var te;(function(me){me.method="window/showMessageRequest",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType(me.method)})(te||(e.ShowMessageRequest=te={}));var le;(function(me){me.method="window/logMessage",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(le||(e.LogMessageNotification=le={}));var ie;(function(me){me.method="telemetry/event",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(ie||(e.TelemetryEventNotification=ie={}));var ae;(function(me){me.None=0,me.Full=1,me.Incremental=2})(ae||(e.TextDocumentSyncKind=ae={}));var Re;(function(me){me.method="textDocument/didOpen",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Re||(e.DidOpenTextDocumentNotification=Re={}));var be;(function(me){function lt(Ze){let Ee=Ze;return Ee!=null&&typeof Ee.text=="string"&&Ee.range!==void 0&&(Ee.rangeLength===void 0||typeof Ee.rangeLength=="number")}o(lt,"isIncremental"),E(lt,"isIncremental"),me.isIncremental=lt;function gt(Ze){let Ee=Ze;return Ee!=null&&typeof Ee.text=="string"&&Ee.range===void 0&&Ee.rangeLength===void 0}o(gt,"isFull"),E(gt,"isFull"),me.isFull=gt})(be||(e.TextDocumentContentChangeEvent=be={}));var Pe;(function(me){me.method="textDocument/didChange",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Pe||(e.DidChangeTextDocumentNotification=Pe={}));var Ge;(function(me){me.method="textDocument/didClose",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Ge||(e.DidCloseTextDocumentNotification=Ge={}));var Oe;(function(me){me.method="textDocument/didSave",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Oe||(e.DidSaveTextDocumentNotification=Oe={}));var ue;(function(me){me.Manual=1,me.AfterDelay=2,me.FocusOut=3})(ue||(e.TextDocumentSaveReason=ue={}));var ye;(function(me){me.method="textDocument/willSave",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(ye||(e.WillSaveTextDocumentNotification=ye={}));var ke;(function(me){me.method="textDocument/willSaveWaitUntil",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ke||(e.WillSaveTextDocumentWaitUntilRequest=ke={}));var ce;(function(me){me.method="workspace/didChangeWatchedFiles",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(ce||(e.DidChangeWatchedFilesNotification=ce={}));var re;(function(me){me.Created=1,me.Changed=2,me.Deleted=3})(re||(e.FileChangeType=re={}));var J;(function(me){function lt(gt){let Ze=gt;return n.objectLiteral(Ze)&&(r.URI.is(Ze.baseUri)||r.WorkspaceFolder.is(Ze.baseUri))&&n.string(Ze.pattern)}o(lt,"is"),E(lt,"is"),me.is=lt})(J||(e.RelativePattern=J={}));var se;(function(me){me.Create=1,me.Change=2,me.Delete=4})(se||(e.WatchKind=se={}));var ge;(function(me){me.method="textDocument/publishDiagnostics",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(ge||(e.PublishDiagnosticsNotification=ge={}));var Te;(function(me){me.Invoked=1,me.TriggerCharacter=2,me.TriggerForIncompleteCompletions=3})(Te||(e.CompletionTriggerKind=Te={}));var we;(function(me){me.method="textDocument/completion",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(we||(e.CompletionRequest=we={}));var Me;(function(me){me.method="completionItem/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Me||(e.CompletionResolveRequest=Me={}));var ve;(function(me){me.method="textDocument/hover",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ve||(e.HoverRequest=ve={}));var ne;(function(me){me.Invoked=1,me.TriggerCharacter=2,me.ContentChange=3})(ne||(e.SignatureHelpTriggerKind=ne={}));var q;(function(me){me.method="textDocument/signatureHelp",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(q||(e.SignatureHelpRequest=q={}));var he;(function(me){me.method="textDocument/definition",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(he||(e.DefinitionRequest=he={}));var X;(function(me){me.method="textDocument/references",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(X||(e.ReferencesRequest=X={}));var fe;(function(me){me.method="textDocument/documentHighlight",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(fe||(e.DocumentHighlightRequest=fe={}));var K;(function(me){me.method="textDocument/documentSymbol",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(K||(e.DocumentSymbolRequest=K={}));var qe;(function(me){me.method="textDocument/codeAction",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(qe||(e.CodeActionRequest=qe={}));var _e;(function(me){me.method="codeAction/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(_e||(e.CodeActionResolveRequest=_e={}));var Be;(function(me){me.method="workspace/symbol",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Be||(e.WorkspaceSymbolRequest=Be={}));var Ne;(function(me){me.method="workspaceSymbol/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Ne||(e.WorkspaceSymbolResolveRequest=Ne={}));var He;(function(me){me.method="textDocument/codeLens",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(He||(e.CodeLensRequest=He={}));var $e;(function(me){me.method="codeLens/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})($e||(e.CodeLensResolveRequest=$e={}));var Xe;(function(me){me.method="workspace/codeLens/refresh",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType0(me.method)})(Xe||(e.CodeLensRefreshRequest=Xe={}));var Fe;(function(me){me.method="textDocument/documentLink",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Fe||(e.DocumentLinkRequest=Fe={}));var Ke;(function(me){me.method="documentLink/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Ke||(e.DocumentLinkResolveRequest=Ke={}));var xe;(function(me){me.method="textDocument/formatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(xe||(e.DocumentFormattingRequest=xe={}));var mt;(function(me){me.method="textDocument/rangeFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(mt||(e.DocumentRangeFormattingRequest=mt={}));var Le;(function(me){me.method="textDocument/rangesFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Le||(e.DocumentRangesFormattingRequest=Le={}));var ft;(function(me){me.method="textDocument/onTypeFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ft||(e.DocumentOnTypeFormattingRequest=ft={}));var wt;(function(me){me.Identifier=1})(wt||(e.PrepareSupportDefaultBehavior=wt={}));var zt;(function(me){me.method="textDocument/rename",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(zt||(e.RenameRequest=zt={}));var St;(function(me){me.method="textDocument/prepareRename",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(St||(e.PrepareRenameRequest=St={}));var At;(function(me){me.method="workspace/executeCommand",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(At||(e.ExecuteCommandRequest=At={}));var bt;(function(me){me.method="workspace/applyEdit",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType("workspace/applyEdit")})(bt||(e.ApplyWorkspaceEditRequest=bt={}))}}),tyt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var t=Mv();function r(n,i,a,s){return t.ConnectionStrategy.is(s)&&(s={connectionStrategy:s}),(0,t.createMessageConnection)(n,i,a,s)}o(r,"createProtocolConnection"),E(r,"createProtocolConnection"),e.createProtocolConnection=r}}),ryt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:E(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.LSPErrorCodes=e.createProtocolConnection=void 0,r(Mv(),e),r((hw(),tW(gR)),e),r(ki(),e),r(eyt(),e);var n=tyt();Object.defineProperty(e,"createProtocolConnection",{enumerable:!0,get:E(function(){return n.createProtocolConnection},"get")});var i;(function(a){a.lspReservedErrorRangeStart=-32899,a.RequestFailed=-32803,a.ServerCancelled=-32802,a.ContentModified=-32801,a.RequestCancelled=-32800,a.lspReservedErrorRangeEnd=-32800})(i||(e.LSPErrorCodes=i={}))}}),nyt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:E(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var n=OTe();r(OTe(),e),r(ryt(),e);function i(a,s,l,u){return(0,n.createMessageConnection)(a,s,l,u)}o(i,"createProtocolConnection"),E(i,"createProtocolConnection"),e.createProtocolConnection=i}}),Pwe={};yp(Pwe,{AbstractAstReflection:o(()=>aW,"AbstractAstReflection"),AbstractCstNode:o(()=>oH,"AbstractCstNode"),AbstractLangiumParser:o(()=>cH,"AbstractLangiumParser"),AbstractParserErrorMessageProvider:o(()=>w_e,"AbstractParserErrorMessageProvider"),AbstractThreadedAsyncParser:o(()=>IEt,"AbstractThreadedAsyncParser"),AstUtils:o(()=>sW,"AstUtils"),BiMap:o(()=>uR,"BiMap"),Cancellation:o(()=>Jn,"Cancellation"),CompositeCstNodeImpl:o(()=>f_,"CompositeCstNodeImpl"),ContextCache:o(()=>b_,"ContextCache"),CstNodeBuilder:o(()=>x_e,"CstNodeBuilder"),CstUtils:o(()=>nW,"CstUtils"),DEFAULT_TOKENIZE_OPTIONS:o(()=>AH,"DEFAULT_TOKENIZE_OPTIONS"),DONE_RESULT:o(()=>Os,"DONE_RESULT"),DatatypeSymbol:o(()=>sR,"DatatypeSymbol"),DefaultAstNodeDescriptionProvider:o(()=>J_e,"DefaultAstNodeDescriptionProvider"),DefaultAstNodeLocator:o(()=>tLe,"DefaultAstNodeLocator"),DefaultAsyncParser:o(()=>xLe,"DefaultAsyncParser"),DefaultCommentProvider:o(()=>vLe,"DefaultCommentProvider"),DefaultConfigurationProvider:o(()=>rLe,"DefaultConfigurationProvider"),DefaultDocumentBuilder:o(()=>nLe,"DefaultDocumentBuilder"),DefaultDocumentValidator:o(()=>Q_e,"DefaultDocumentValidator"),DefaultHydrator:o(()=>TLe,"DefaultHydrator"),DefaultIndexManager:o(()=>iLe,"DefaultIndexManager"),DefaultJsonSerializer:o(()=>j_e,"DefaultJsonSerializer"),DefaultLangiumDocumentFactory:o(()=>F_e,"DefaultLangiumDocumentFactory"),DefaultLangiumDocuments:o(()=>z_e,"DefaultLangiumDocuments"),DefaultLangiumProfiler:o(()=>BEt,"DefaultLangiumProfiler"),DefaultLexer:o(()=>RH,"DefaultLexer"),DefaultLexerErrorMessageProvider:o(()=>sLe,"DefaultLexerErrorMessageProvider"),DefaultLinker:o(()=>G_e,"DefaultLinker"),DefaultNameProvider:o(()=>V_e,"DefaultNameProvider"),DefaultReferenceDescriptionProvider:o(()=>eLe,"DefaultReferenceDescriptionProvider"),DefaultReferences:o(()=>W_e,"DefaultReferences"),DefaultScopeComputation:o(()=>q_e,"DefaultScopeComputation"),DefaultScopeProvider:o(()=>Y_e,"DefaultScopeProvider"),DefaultServiceRegistry:o(()=>X_e,"DefaultServiceRegistry"),DefaultTokenBuilder:o(()=>g_,"DefaultTokenBuilder"),DefaultValueConverter:o(()=>gH,"DefaultValueConverter"),DefaultWorkspaceLock:o(()=>bLe,"DefaultWorkspaceLock"),DefaultWorkspaceManager:o(()=>aLe,"DefaultWorkspaceManager"),Deferred:o(()=>Jh,"Deferred"),Disposable:o(()=>Yg,"Disposable"),DisposableCache:o(()=>x_,"DisposableCache"),DocumentCache:o(()=>U_e,"DocumentCache"),DocumentState:o(()=>en,"DocumentState"),DocumentValidator:o(()=>Rl,"DocumentValidator"),EMPTY_SCOPE:o(()=>REt,"EMPTY_SCOPE"),EMPTY_STREAM:o(()=>Tv,"EMPTY_STREAM"),EmptyFileSystem:o(()=>yn,"EmptyFileSystem"),EmptyFileSystemProvider:o(()=>kLe,"EmptyFileSystemProvider"),ErrorWithLocation:o(()=>ER,"ErrorWithLocation"),GrammarAST:o(()=>$we,"GrammarAST"),GrammarUtils:o(()=>OW,"GrammarUtils"),IndentationAwareLexer:o(()=>NEt,"IndentationAwareLexer"),IndentationAwareTokenBuilder:o(()=>wLe,"IndentationAwareTokenBuilder"),JSDocDocumentationProvider:o(()=>yLe,"JSDocDocumentationProvider"),LangiumCompletionParser:o(()=>k_e,"LangiumCompletionParser"),LangiumParser:o(()=>C_e,"LangiumParser"),LangiumParserErrorMessageProvider:o(()=>uH,"LangiumParserErrorMessageProvider"),LeafCstNodeImpl:o(()=>aR,"LeafCstNodeImpl"),LexingMode:o(()=>Hg,"LexingMode"),MapScope:o(()=>AEt,"MapScope"),Module:o(()=>rV,"Module"),MultiMap:o(()=>ed,"MultiMap"),MultiMapScope:o(()=>H_e,"MultiMapScope"),OperationCancelled:o(()=>Pu,"OperationCancelled"),ParserWorker:o(()=>MEt,"ParserWorker"),ProfilingTask:o(()=>ELe,"ProfilingTask"),Reduction:o(()=>jC,"Reduction"),RefResolving:o(()=>gg,"RefResolving"),RegExpUtils:o(()=>$W,"RegExpUtils"),RootCstNodeImpl:o(()=>lH,"RootCstNodeImpl"),SimpleCache:o(()=>CH,"SimpleCache"),StreamImpl:o(()=>Nu,"StreamImpl"),StreamScope:o(()=>QG,"StreamScope"),TextDocument:o(()=>lR,"TextDocument"),TreeStreamImpl:o(()=>Cv,"TreeStreamImpl"),URI:o(()=>Yo,"URI"),UriTrie:o(()=>bH,"UriTrie"),UriUtils:o(()=>$s,"UriUtils"),VALIDATE_EACH_NODE:o(()=>Z_e,"VALIDATE_EACH_NODE"),ValidationCategory:o(()=>hR,"ValidationCategory"),ValidationRegistry:o(()=>K_e,"ValidationRegistry"),ValueConverter:o(()=>Iu,"ValueConverter"),WorkspaceCache:o(()=>wH,"WorkspaceCache"),assertCondition:o(()=>BW,"assertCondition"),assertUnreachable:o(()=>vp,"assertUnreachable"),createCompletionParser:o(()=>fH,"createCompletionParser"),createDefaultCoreModule:o(()=>hn,"createDefaultCoreModule"),createDefaultSharedCoreModule:o(()=>dn,"createDefaultSharedCoreModule"),createGrammarConfig:o(()=>rq,"createGrammarConfig"),createLangiumParser:o(()=>pH,"createLangiumParser"),createParser:o(()=>p_,"createParser"),delayNextTick:o(()=>y_,"delayNextTick"),diagnosticData:o(()=>qg,"diagnosticData"),eagerLoad:o(()=>PH,"eagerLoad"),getDiagnosticRange:o(()=>SH,"getDiagnosticRange"),indentationBuilderDefaultOptions:o(()=>iV,"indentationBuilderDefaultOptions"),inject:o(()=>Mr,"inject"),interruptAndCheck:o(()=>Ia,"interruptAndCheck"),isAstNode:o(()=>Zi,"isAstNode"),isAstNodeDescription:o(()=>iW,"isAstNodeDescription"),isAstNodeWithComment:o(()=>kH,"isAstNodeWithComment"),isCompositeCstNode:o(()=>Hh,"isCompositeCstNode"),isIMultiModeLexerDefinition:o(()=>w_,"isIMultiModeLexerDefinition"),isJSDoc:o(()=>LH,"isJSDoc"),isLeafCstNode:o(()=>Jg,"isLeafCstNode"),isLinkingError:o(()=>Tg,"isLinkingError"),isMultiReference:o(()=>Ou,"isMultiReference"),isNamed:o(()=>TH,"isNamed"),isOperationCancelled:o(()=>v0,"isOperationCancelled"),isReference:o(()=>Bs,"isReference"),isRootCstNode:o(()=>vR,"isRootCstNode"),isTokenTypeArray:o(()=>C_,"isTokenTypeArray"),isTokenTypeDictionary:o(()=>dR,"isTokenTypeDictionary"),loadGrammarFromJson:o(()=>Ma,"loadGrammarFromJson"),parseJSDoc:o(()=>_H,"parseJSDoc"),prepareLangiumParser:o(()=>mH,"prepareLangiumParser"),setInterruptionPeriod:o(()=>yH,"setInterruptionPeriod"),startCancelableOperation:o(()=>v_,"startCancelableOperation"),stream:o(()=>Bn,"stream"),toDiagnosticData:o(()=>EH,"toDiagnosticData"),toDiagnosticSeverity:o(()=>WC,"toDiagnosticSeverity")});nW={};yp(nW,{DefaultNameRegexp:o(()=>DW,"DefaultNameRegexp"),RangeComparison:o(()=>Mu,"RangeComparison"),compareRange:o(()=>_W,"compareRange"),findCommentNode:o(()=>IW,"findCommentNode"),findDeclarationNodeAtOffset:o(()=>nke,"findDeclarationNodeAtOffset"),findLeafNodeAtOffset:o(()=>SR,"findLeafNodeAtOffset"),findLeafNodeBeforeOffset:o(()=>MW,"findLeafNodeBeforeOffset"),flattenCst:o(()=>rke,"flattenCst"),getDatatypeNode:o(()=>tke,"getDatatypeNode"),getInteriorNodes:o(()=>ske,"getInteriorNodes"),getNextNode:o(()=>ike,"getNextNode"),getPreviousNode:o(()=>PW,"getPreviousNode"),getStartlineNode:o(()=>ake,"getStartlineNode"),inRange:o(()=>LW,"inRange"),isChildNode:o(()=>RW,"isChildNode"),isCommentNode:o(()=>W6,"isCommentNode"),streamCst:o(()=>Ev,"streamCst"),toDocumentSegment:o(()=>Av,"toDocumentSegment"),tokenToRange:o(()=>XC,"tokenToRange")});o(Zi,"isAstNode");E(Zi,"isAstNode");o(Bs,"isReference");E(Bs,"isReference");o(Ou,"isMultiReference");E(Ou,"isMultiReference");o(iW,"isAstNodeDescription");E(iW,"isAstNodeDescription");o(Tg,"isLinkingError");E(Tg,"isLinkingError");aW=class{static{o(this,"AbstractAstReflection")}static{E(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw new Error(`Type ${e.container.$type||"undefined"} not found.`);let r=t.properties[e.property]?.referenceType;if(!r)throw new Error(`Property ${e.property||"undefined"} of type ${e.container.$type} is not a reference.`);return r}getTypeMetaData(e){let t=this.types[e];return t||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return Zi(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});let n=r[t];if(n!==void 0)return n;{let i=this.types[e],a=i?i.superTypes.some(s=>this.isSubtype(s,t)):!1;return r[t]=a,a}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let r=this.getAllTypes(),n=[];for(let i of r)this.isSubtype(i,e)&&n.push(i);return this.allSubtypes[e]=n,n}}};o(Hh,"isCompositeCstNode");E(Hh,"isCompositeCstNode");o(Jg,"isLeafCstNode");E(Jg,"isLeafCstNode");o(vR,"isRootCstNode");E(vR,"isRootCstNode");Nu=class zh{static{o(this,"_StreamImpl")}static{E(this,"StreamImpl")}constructor(t,r){this.startFn=t,this.nextFn=r}iterator(){let t={state:this.startFn(),next:E(()=>this.nextFn(t.state),"next"),[Symbol.iterator]:()=>t};return t}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let t=this.iterator(),r=0,n=t.next();for(;!n.done;)r++,n=t.next();return r}toArray(){let t=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&t.push(n.value);while(!n.done);return t}toSet(){return new Set(this)}toMap(t,r){let n=this.map(i=>[t?t(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(t){return new zh(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return Os})}join(t=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=t),n+=Owe(i.value)),a=!0;while(!i.done);return n}indexOf(t,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===t)return i;a=n.next(),i++}return-1}every(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(!t(n.value))return!1;n=r.next()}return!0}some(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return!0;n=r.next()}return!1}forEach(t){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)t(i.value,n),i=r.next(),n++}map(t){return new zh(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Os:{done:!1,value:t(i)}})}filter(t){return new zh(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&t(n.value))return n;while(!n.done);return Os})}nonNullable(){return this.filter(t=>t!=null)}reduce(t,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=t(i,a.value),a=n.next();return i}reduceRight(t,r){return this.recursiveReduce(this.iterator(),t,r)}recursiveReduce(t,r,n){let i=t.next();if(i.done)return n;let a=this.recursiveReduce(t,r,n);return a===void 0?i.value:r(a,i.value)}find(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return n.value;n=r.next()}}findIndex(t){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(t(i.value))return n;i=r.next(),n++}return-1}includes(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===t)return!0;n=r.next()}return!1}flatMap(t){return new zh(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=t(i);if(YC(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Os})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let r=t>1?this.flat(t-1):this;return new zh(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(YC(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Os})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(t=1){return new zh(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>t?Os:this.nextFn(r.state)))}distinct(t){return new zh(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=t?t(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return Os})}exclude(t,r){let n=new Set;for(let i of t){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(Owe,"toString");E(Owe,"toString");o(YC,"isIterable");E(YC,"isIterable");Tv=new Nu(()=>{},()=>Os),Os=Object.freeze({done:!0,value:void 0});o(Bn,"stream");E(Bn,"stream");Cv=class extends Nu{static{o(this,"TreeStreamImpl")}static{E(this,"TreeStreamImpl")}constructor(e,t,r){super(()=>({iterators:r?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),n=>{for(n.pruned&&(n.iterators.pop(),n.pruned=!1);n.iterators.length>0;){let a=n.iterators[n.iterators.length-1].next();if(a.done)n.iterators.pop();else return n.iterators.push(t(a.value)[Symbol.iterator]()),a}return Os})}iterator(){let e={state:this.startFn(),next:E(()=>this.nextFn(e.state),"next"),prune:E(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(e){function t(a){return a.reduce((s,l)=>s+l,0)}o(t,"sum"),E(t,"sum"),e.sum=t;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),E(r,"product"),e.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min2"),E(n,"min"),e.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),E(i,"max"),e.max=i})(jC||(jC={}));sW={};yp(sW,{assignMandatoryProperties:o(()=>oW,"assignMandatoryProperties"),copyAstNode:o(()=>_6,"copyAstNode"),findRootNode:o(()=>yv,"findRootNode"),getContainerOfType:o(()=>e0,"getContainerOfType"),getDocument:o(()=>wc,"getDocument"),getReferenceNodes:o(()=>A6,"getReferenceNodes"),hasContainerOfType:o(()=>Bwe,"hasContainerOfType"),linkContentToContainer:o(()=>wv,"linkContentToContainer"),streamAllContents:o(()=>td,"streamAllContents"),streamAst:o(()=>kc,"streamAst"),streamContents:o(()=>fw,"streamContents"),streamReferences:o(()=>kv,"streamReferences")});o(wv,"linkContentToContainer");E(wv,"linkContentToContainer");o(e0,"getContainerOfType");E(e0,"getContainerOfType");o(Bwe,"hasContainerOfType");E(Bwe,"hasContainerOfType");o(wc,"getDocument");E(wc,"getDocument");o(yv,"findRootNode");E(yv,"findRootNode");o(A6,"getReferenceNodes");E(A6,"getReferenceNodes");o(fw,"streamContents");E(fw,"streamContents");o(td,"streamAllContents");E(td,"streamAllContents");o(kc,"streamAst");E(kc,"streamAst");o(R6,"isAstNodeInRange");E(R6,"isAstNodeInRange");o(kv,"streamReferences");E(kv,"streamReferences");o(oW,"assignMandatoryProperties");E(oW,"assignMandatoryProperties");o(lW,"copyDefaultValue");E(lW,"copyDefaultValue");o(_6,"copyAstNode");E(_6,"copyAstNode");$we={};yp($we,{AbstractElement:o(()=>xo,"AbstractElement"),AbstractParserRule:o(()=>_C,"AbstractParserRule"),AbstractRule:o(()=>ov,"AbstractRule"),AbstractType:o(()=>Uo,"AbstractType"),Action:o(()=>ip,"Action"),Alternatives:o(()=>LC,"Alternatives"),ArrayLiteral:o(()=>L6,"ArrayLiteral"),ArrayType:o(()=>D6,"ArrayType"),Assignment:o(()=>ap,"Assignment"),BooleanLiteral:o(()=>I6,"BooleanLiteral"),CharacterRange:o(()=>sp,"CharacterRange"),Condition:o(()=>op,"Condition"),Conjunction:o(()=>DC,"Conjunction"),CrossReference:o(()=>lp,"CrossReference"),Disjunction:o(()=>IC,"Disjunction"),EndOfFile:o(()=>M6,"EndOfFile"),Grammar:o(()=>Vh,"Grammar"),GrammarImport:o(()=>N6,"GrammarImport"),Group:o(()=>Cg,"Group"),InferredType:o(()=>P6,"InferredType"),InfixRule:o(()=>Du,"InfixRule"),InfixRuleOperatorList:o(()=>MC,"InfixRuleOperatorList"),InfixRuleOperators:o(()=>O6,"InfixRuleOperators"),Interface:o(()=>lv,"Interface"),Keyword:o(()=>cv,"Keyword"),LangiumGrammarAstReflection:o(()=>AW,"LangiumGrammarAstReflection"),LangiumGrammarTerminals:o(()=>iyt,"LangiumGrammarTerminals"),NamedArgument:o(()=>uv,"NamedArgument"),NegatedToken:o(()=>wg,"NegatedToken"),Negation:o(()=>B6,"Negation"),NumberLiteral:o(()=>$6,"NumberLiteral"),Parameter:o(()=>hv,"Parameter"),ParameterReference:o(()=>F6,"ParameterReference"),ParserRule:o(()=>xc,"ParserRule"),ReferenceType:o(()=>NC,"ReferenceType"),RegexToken:o(()=>kg,"RegexToken"),ReturnType:o(()=>z6,"ReturnType"),RuleCall:o(()=>Sg,"RuleCall"),SimpleType:o(()=>dv,"SimpleType"),StringLiteral:o(()=>G6,"StringLiteral"),TerminalAlternatives:o(()=>Eg,"TerminalAlternatives"),TerminalElement:o(()=>bo,"TerminalElement"),TerminalGroup:o(()=>Ag,"TerminalGroup"),TerminalRule:o(()=>Wh,"TerminalRule"),TerminalRuleCall:o(()=>Rg,"TerminalRuleCall"),Type:o(()=>PC,"Type"),TypeAttribute:o(()=>_g,"TypeAttribute"),TypeDefinition:o(()=>Lg,"TypeDefinition"),UnionType:o(()=>V6,"UnionType"),UnorderedGroup:o(()=>OC,"UnorderedGroup"),UntilToken:o(()=>Dg,"UntilToken"),ValueLiteral:o(()=>Ig,"ValueLiteral"),Wildcard:o(()=>fv,"Wildcard"),isAbstractElement:o(()=>xR,"isAbstractElement"),isAbstractParserRule:o(()=>t0,"isAbstractParserRule"),isAbstractRule:o(()=>Fwe,"isAbstractRule"),isAbstractType:o(()=>zwe,"isAbstractType"),isAction:o(()=>dp,"isAction"),isAlternatives:o(()=>bR,"isAlternatives"),isArrayLiteral:o(()=>Gwe,"isArrayLiteral"),isArrayType:o(()=>cW,"isArrayType"),isAssignment:o(()=>Uh,"isAssignment"),isBooleanLiteral:o(()=>uW,"isBooleanLiteral"),isCharacterRange:o(()=>hW,"isCharacterRange"),isCondition:o(()=>Vwe,"isCondition"),isConjunction:o(()=>dW,"isConjunction"),isCrossReference:o(()=>r0,"isCrossReference"),isDisjunction:o(()=>fW,"isDisjunction"),isEndOfFile:o(()=>pW,"isEndOfFile"),isGrammar:o(()=>Wwe,"isGrammar"),isGrammarImport:o(()=>qwe,"isGrammarImport"),isGroup:o(()=>n0,"isGroup"),isInferredType:o(()=>pw,"isInferredType"),isInfixRule:o(()=>Sv,"isInfixRule"),isInfixRuleOperatorList:o(()=>Hwe,"isInfixRuleOperatorList"),isInfixRuleOperators:o(()=>Uwe,"isInfixRuleOperators"),isInterface:o(()=>mW,"isInterface"),isKeyword:o(()=>Yh,"isKeyword"),isNamedArgument:o(()=>Ywe,"isNamedArgument"),isNegatedToken:o(()=>gW,"isNegatedToken"),isNegation:o(()=>yW,"isNegation"),isNumberLiteral:o(()=>jwe,"isNumberLiteral"),isParameter:o(()=>Xwe,"isParameter"),isParameterReference:o(()=>vW,"isParameterReference"),isParserRule:o(()=>zs,"isParserRule"),isReferenceType:o(()=>xW,"isReferenceType"),isRegexToken:o(()=>bW,"isRegexToken"),isReturnType:o(()=>TW,"isReturnType"),isRuleCall:o(()=>jh,"isRuleCall"),isSimpleType:o(()=>TR,"isSimpleType"),isStringLiteral:o(()=>Kwe,"isStringLiteral"),isTerminalAlternatives:o(()=>CW,"isTerminalAlternatives"),isTerminalElement:o(()=>Zwe,"isTerminalElement"),isTerminalGroup:o(()=>wW,"isTerminalGroup"),isTerminalRule:o(()=>Il,"isTerminalRule"),isTerminalRuleCall:o(()=>CR,"isTerminalRuleCall"),isType:o(()=>wR,"isType"),isTypeAttribute:o(()=>Qwe,"isTypeAttribute"),isTypeDefinition:o(()=>Jwe,"isTypeDefinition"),isUnionType:o(()=>kW,"isUnionType"),isUnorderedGroup:o(()=>kR,"isUnorderedGroup"),isUntilToken:o(()=>SW,"isUntilToken"),isValueLiteral:o(()=>eke,"isValueLiteral"),isWildcard:o(()=>EW,"isWildcard"),reflection:o(()=>Tr,"reflection")});iyt={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},xo={$type:"AbstractElement",cardinality:"cardinality"};o(xR,"isAbstractElement");E(xR,"isAbstractElement");_C={$type:"AbstractParserRule"};o(t0,"isAbstractParserRule");E(t0,"isAbstractParserRule");ov={$type:"AbstractRule"};o(Fwe,"isAbstractRule");E(Fwe,"isAbstractRule");Uo={$type:"AbstractType"};o(zwe,"isAbstractType");E(zwe,"isAbstractType");ip={$type:"Action",cardinality:"cardinality",feature:"feature",inferredType:"inferredType",operator:"operator",type:"type"};o(dp,"isAction");E(dp,"isAction");LC={$type:"Alternatives",cardinality:"cardinality",elements:"elements"};o(bR,"isAlternatives");E(bR,"isAlternatives");L6={$type:"ArrayLiteral",elements:"elements"};o(Gwe,"isArrayLiteral");E(Gwe,"isArrayLiteral");D6={$type:"ArrayType",elementType:"elementType"};o(cW,"isArrayType");E(cW,"isArrayType");ap={$type:"Assignment",cardinality:"cardinality",feature:"feature",operator:"operator",predicate:"predicate",terminal:"terminal"};o(Uh,"isAssignment");E(Uh,"isAssignment");I6={$type:"BooleanLiteral",true:"true"};o(uW,"isBooleanLiteral");E(uW,"isBooleanLiteral");sp={$type:"CharacterRange",cardinality:"cardinality",left:"left",lookahead:"lookahead",parenthesized:"parenthesized",right:"right"};o(hW,"isCharacterRange");E(hW,"isCharacterRange");op={$type:"Condition"};o(Vwe,"isCondition");E(Vwe,"isCondition");DC={$type:"Conjunction",left:"left",right:"right"};o(dW,"isConjunction");E(dW,"isConjunction");lp={$type:"CrossReference",cardinality:"cardinality",deprecatedSyntax:"deprecatedSyntax",isMulti:"isMulti",terminal:"terminal",type:"type"};o(r0,"isCrossReference");E(r0,"isCrossReference");IC={$type:"Disjunction",left:"left",right:"right"};o(fW,"isDisjunction");E(fW,"isDisjunction");M6={$type:"EndOfFile",cardinality:"cardinality"};o(pW,"isEndOfFile");E(pW,"isEndOfFile");Vh={$type:"Grammar",imports:"imports",interfaces:"interfaces",isDeclared:"isDeclared",name:"name",rules:"rules",types:"types"};o(Wwe,"isGrammar");E(Wwe,"isGrammar");N6={$type:"GrammarImport",path:"path"};o(qwe,"isGrammarImport");E(qwe,"isGrammarImport");Cg={$type:"Group",cardinality:"cardinality",elements:"elements",guardCondition:"guardCondition",predicate:"predicate"};o(n0,"isGroup");E(n0,"isGroup");P6={$type:"InferredType",name:"name"};o(pw,"isInferredType");E(pw,"isInferredType");Du={$type:"InfixRule",call:"call",dataType:"dataType",inferredType:"inferredType",name:"name",operators:"operators",parameters:"parameters",returnType:"returnType"};o(Sv,"isInfixRule");E(Sv,"isInfixRule");MC={$type:"InfixRuleOperatorList",associativity:"associativity",operators:"operators"};o(Hwe,"isInfixRuleOperatorList");E(Hwe,"isInfixRuleOperatorList");O6={$type:"InfixRuleOperators",precedences:"precedences"};o(Uwe,"isInfixRuleOperators");E(Uwe,"isInfixRuleOperators");lv={$type:"Interface",attributes:"attributes",name:"name",superTypes:"superTypes"};o(mW,"isInterface");E(mW,"isInterface");cv={$type:"Keyword",cardinality:"cardinality",predicate:"predicate",value:"value"};o(Yh,"isKeyword");E(Yh,"isKeyword");uv={$type:"NamedArgument",calledByName:"calledByName",parameter:"parameter",value:"value"};o(Ywe,"isNamedArgument");E(Ywe,"isNamedArgument");wg={$type:"NegatedToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(gW,"isNegatedToken");E(gW,"isNegatedToken");B6={$type:"Negation",value:"value"};o(yW,"isNegation");E(yW,"isNegation");$6={$type:"NumberLiteral",value:"value"};o(jwe,"isNumberLiteral");E(jwe,"isNumberLiteral");hv={$type:"Parameter",name:"name"};o(Xwe,"isParameter");E(Xwe,"isParameter");F6={$type:"ParameterReference",parameter:"parameter"};o(vW,"isParameterReference");E(vW,"isParameterReference");xc={$type:"ParserRule",dataType:"dataType",definition:"definition",entry:"entry",fragment:"fragment",inferredType:"inferredType",name:"name",parameters:"parameters",returnType:"returnType"};o(zs,"isParserRule");E(zs,"isParserRule");NC={$type:"ReferenceType",isMulti:"isMulti",referenceType:"referenceType"};o(xW,"isReferenceType");E(xW,"isReferenceType");kg={$type:"RegexToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",regex:"regex"};o(bW,"isRegexToken");E(bW,"isRegexToken");z6={$type:"ReturnType",name:"name"};o(TW,"isReturnType");E(TW,"isReturnType");Sg={$type:"RuleCall",arguments:"arguments",cardinality:"cardinality",predicate:"predicate",rule:"rule"};o(jh,"isRuleCall");E(jh,"isRuleCall");dv={$type:"SimpleType",primitiveType:"primitiveType",stringType:"stringType",typeRef:"typeRef"};o(TR,"isSimpleType");E(TR,"isSimpleType");G6={$type:"StringLiteral",value:"value"};o(Kwe,"isStringLiteral");E(Kwe,"isStringLiteral");Eg={$type:"TerminalAlternatives",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(CW,"isTerminalAlternatives");E(CW,"isTerminalAlternatives");bo={$type:"TerminalElement",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(Zwe,"isTerminalElement");E(Zwe,"isTerminalElement");Ag={$type:"TerminalGroup",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(wW,"isTerminalGroup");E(wW,"isTerminalGroup");Wh={$type:"TerminalRule",definition:"definition",fragment:"fragment",hidden:"hidden",name:"name",type:"type"};o(Il,"isTerminalRule");E(Il,"isTerminalRule");Rg={$type:"TerminalRuleCall",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",rule:"rule"};o(CR,"isTerminalRuleCall");E(CR,"isTerminalRuleCall");PC={$type:"Type",name:"name",type:"type"};o(wR,"isType");E(wR,"isType");_g={$type:"TypeAttribute",defaultValue:"defaultValue",isOptional:"isOptional",name:"name",type:"type"};o(Qwe,"isTypeAttribute");E(Qwe,"isTypeAttribute");Lg={$type:"TypeDefinition"};o(Jwe,"isTypeDefinition");E(Jwe,"isTypeDefinition");V6={$type:"UnionType",types:"types"};o(kW,"isUnionType");E(kW,"isUnionType");OC={$type:"UnorderedGroup",cardinality:"cardinality",elements:"elements"};o(kR,"isUnorderedGroup");E(kR,"isUnorderedGroup");Dg={$type:"UntilToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(SW,"isUntilToken");E(SW,"isUntilToken");Ig={$type:"ValueLiteral"};o(eke,"isValueLiteral");E(eke,"isValueLiteral");fv={$type:"Wildcard",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(EW,"isWildcard");E(EW,"isWildcard");AW=class extends aW{static{o(this,"LangiumGrammarAstReflection")}static{E(this,"LangiumGrammarAstReflection")}constructor(){super(...arguments),this.types={AbstractElement:{name:xo.$type,properties:{cardinality:{name:xo.cardinality}},superTypes:[]},AbstractParserRule:{name:_C.$type,properties:{},superTypes:[ov.$type,Uo.$type]},AbstractRule:{name:ov.$type,properties:{},superTypes:[]},AbstractType:{name:Uo.$type,properties:{},superTypes:[]},Action:{name:ip.$type,properties:{cardinality:{name:ip.cardinality},feature:{name:ip.feature},inferredType:{name:ip.inferredType},operator:{name:ip.operator},type:{name:ip.type,referenceType:Uo.$type}},superTypes:[xo.$type]},Alternatives:{name:LC.$type,properties:{cardinality:{name:LC.cardinality},elements:{name:LC.elements,defaultValue:[]}},superTypes:[xo.$type]},ArrayLiteral:{name:L6.$type,properties:{elements:{name:L6.elements,defaultValue:[]}},superTypes:[Ig.$type]},ArrayType:{name:D6.$type,properties:{elementType:{name:D6.elementType}},superTypes:[Lg.$type]},Assignment:{name:ap.$type,properties:{cardinality:{name:ap.cardinality},feature:{name:ap.feature},operator:{name:ap.operator},predicate:{name:ap.predicate},terminal:{name:ap.terminal}},superTypes:[xo.$type]},BooleanLiteral:{name:I6.$type,properties:{true:{name:I6.true,defaultValue:!1}},superTypes:[op.$type,Ig.$type]},CharacterRange:{name:sp.$type,properties:{cardinality:{name:sp.cardinality},left:{name:sp.left},lookahead:{name:sp.lookahead},parenthesized:{name:sp.parenthesized,defaultValue:!1},right:{name:sp.right}},superTypes:[bo.$type]},Condition:{name:op.$type,properties:{},superTypes:[]},Conjunction:{name:DC.$type,properties:{left:{name:DC.left},right:{name:DC.right}},superTypes:[op.$type]},CrossReference:{name:lp.$type,properties:{cardinality:{name:lp.cardinality},deprecatedSyntax:{name:lp.deprecatedSyntax,defaultValue:!1},isMulti:{name:lp.isMulti,defaultValue:!1},terminal:{name:lp.terminal},type:{name:lp.type,referenceType:Uo.$type}},superTypes:[xo.$type]},Disjunction:{name:IC.$type,properties:{left:{name:IC.left},right:{name:IC.right}},superTypes:[op.$type]},EndOfFile:{name:M6.$type,properties:{cardinality:{name:M6.cardinality}},superTypes:[xo.$type]},Grammar:{name:Vh.$type,properties:{imports:{name:Vh.imports,defaultValue:[]},interfaces:{name:Vh.interfaces,defaultValue:[]},isDeclared:{name:Vh.isDeclared,defaultValue:!1},name:{name:Vh.name},rules:{name:Vh.rules,defaultValue:[]},types:{name:Vh.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:N6.$type,properties:{path:{name:N6.path}},superTypes:[]},Group:{name:Cg.$type,properties:{cardinality:{name:Cg.cardinality},elements:{name:Cg.elements,defaultValue:[]},guardCondition:{name:Cg.guardCondition},predicate:{name:Cg.predicate}},superTypes:[xo.$type]},InferredType:{name:P6.$type,properties:{name:{name:P6.name}},superTypes:[Uo.$type]},InfixRule:{name:Du.$type,properties:{call:{name:Du.call},dataType:{name:Du.dataType},inferredType:{name:Du.inferredType},name:{name:Du.name},operators:{name:Du.operators},parameters:{name:Du.parameters,defaultValue:[]},returnType:{name:Du.returnType,referenceType:Uo.$type}},superTypes:[_C.$type]},InfixRuleOperatorList:{name:MC.$type,properties:{associativity:{name:MC.associativity},operators:{name:MC.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:O6.$type,properties:{precedences:{name:O6.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:lv.$type,properties:{attributes:{name:lv.attributes,defaultValue:[]},name:{name:lv.name},superTypes:{name:lv.superTypes,defaultValue:[],referenceType:Uo.$type}},superTypes:[Uo.$type]},Keyword:{name:cv.$type,properties:{cardinality:{name:cv.cardinality},predicate:{name:cv.predicate},value:{name:cv.value}},superTypes:[xo.$type]},NamedArgument:{name:uv.$type,properties:{calledByName:{name:uv.calledByName,defaultValue:!1},parameter:{name:uv.parameter,referenceType:hv.$type},value:{name:uv.value}},superTypes:[]},NegatedToken:{name:wg.$type,properties:{cardinality:{name:wg.cardinality},lookahead:{name:wg.lookahead},parenthesized:{name:wg.parenthesized,defaultValue:!1},terminal:{name:wg.terminal}},superTypes:[bo.$type]},Negation:{name:B6.$type,properties:{value:{name:B6.value}},superTypes:[op.$type]},NumberLiteral:{name:$6.$type,properties:{value:{name:$6.value}},superTypes:[Ig.$type]},Parameter:{name:hv.$type,properties:{name:{name:hv.name}},superTypes:[]},ParameterReference:{name:F6.$type,properties:{parameter:{name:F6.parameter,referenceType:hv.$type}},superTypes:[op.$type]},ParserRule:{name:xc.$type,properties:{dataType:{name:xc.dataType},definition:{name:xc.definition},entry:{name:xc.entry,defaultValue:!1},fragment:{name:xc.fragment,defaultValue:!1},inferredType:{name:xc.inferredType},name:{name:xc.name},parameters:{name:xc.parameters,defaultValue:[]},returnType:{name:xc.returnType,referenceType:Uo.$type}},superTypes:[_C.$type]},ReferenceType:{name:NC.$type,properties:{isMulti:{name:NC.isMulti,defaultValue:!1},referenceType:{name:NC.referenceType}},superTypes:[Lg.$type]},RegexToken:{name:kg.$type,properties:{cardinality:{name:kg.cardinality},lookahead:{name:kg.lookahead},parenthesized:{name:kg.parenthesized,defaultValue:!1},regex:{name:kg.regex}},superTypes:[bo.$type]},ReturnType:{name:z6.$type,properties:{name:{name:z6.name}},superTypes:[]},RuleCall:{name:Sg.$type,properties:{arguments:{name:Sg.arguments,defaultValue:[]},cardinality:{name:Sg.cardinality},predicate:{name:Sg.predicate},rule:{name:Sg.rule,referenceType:ov.$type}},superTypes:[xo.$type]},SimpleType:{name:dv.$type,properties:{primitiveType:{name:dv.primitiveType},stringType:{name:dv.stringType},typeRef:{name:dv.typeRef,referenceType:Uo.$type}},superTypes:[Lg.$type]},StringLiteral:{name:G6.$type,properties:{value:{name:G6.value}},superTypes:[Ig.$type]},TerminalAlternatives:{name:Eg.$type,properties:{cardinality:{name:Eg.cardinality},elements:{name:Eg.elements,defaultValue:[]},lookahead:{name:Eg.lookahead},parenthesized:{name:Eg.parenthesized,defaultValue:!1}},superTypes:[bo.$type]},TerminalElement:{name:bo.$type,properties:{cardinality:{name:bo.cardinality},lookahead:{name:bo.lookahead},parenthesized:{name:bo.parenthesized,defaultValue:!1}},superTypes:[xo.$type]},TerminalGroup:{name:Ag.$type,properties:{cardinality:{name:Ag.cardinality},elements:{name:Ag.elements,defaultValue:[]},lookahead:{name:Ag.lookahead},parenthesized:{name:Ag.parenthesized,defaultValue:!1}},superTypes:[bo.$type]},TerminalRule:{name:Wh.$type,properties:{definition:{name:Wh.definition},fragment:{name:Wh.fragment,defaultValue:!1},hidden:{name:Wh.hidden,defaultValue:!1},name:{name:Wh.name},type:{name:Wh.type}},superTypes:[ov.$type]},TerminalRuleCall:{name:Rg.$type,properties:{cardinality:{name:Rg.cardinality},lookahead:{name:Rg.lookahead},parenthesized:{name:Rg.parenthesized,defaultValue:!1},rule:{name:Rg.rule,referenceType:Wh.$type}},superTypes:[bo.$type]},Type:{name:PC.$type,properties:{name:{name:PC.name},type:{name:PC.type}},superTypes:[Uo.$type]},TypeAttribute:{name:_g.$type,properties:{defaultValue:{name:_g.defaultValue},isOptional:{name:_g.isOptional,defaultValue:!1},name:{name:_g.name},type:{name:_g.type}},superTypes:[]},TypeDefinition:{name:Lg.$type,properties:{},superTypes:[]},UnionType:{name:V6.$type,properties:{types:{name:V6.types,defaultValue:[]}},superTypes:[Lg.$type]},UnorderedGroup:{name:OC.$type,properties:{cardinality:{name:OC.cardinality},elements:{name:OC.elements,defaultValue:[]}},superTypes:[xo.$type]},UntilToken:{name:Dg.$type,properties:{cardinality:{name:Dg.cardinality},lookahead:{name:Dg.lookahead},parenthesized:{name:Dg.parenthesized,defaultValue:!1},terminal:{name:Dg.terminal}},superTypes:[bo.$type]},ValueLiteral:{name:Ig.$type,properties:{},superTypes:[]},Wildcard:{name:fv.$type,properties:{cardinality:{name:fv.cardinality},lookahead:{name:fv.lookahead},parenthesized:{name:fv.parenthesized,defaultValue:!1}},superTypes:[bo.$type]}}}},Tr=new AW;o(tke,"getDatatypeNode");E(tke,"getDatatypeNode");o(Ev,"streamCst");E(Ev,"streamCst");o(rke,"flattenCst");E(rke,"flattenCst");o(RW,"isChildNode");E(RW,"isChildNode");o(XC,"tokenToRange");E(XC,"tokenToRange");o(Av,"toDocumentSegment");E(Av,"toDocumentSegment");(function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"})(Mu||(Mu={}));o(_W,"compareRange");E(_W,"compareRange");o(LW,"inRange");E(LW,"inRange");DW=/^[\w\p{L}]$/u;o(nke,"findDeclarationNodeAtOffset");E(nke,"findDeclarationNodeAtOffset");o(IW,"findCommentNode");E(IW,"findCommentNode");o(W6,"isCommentNode");E(W6,"isCommentNode");o(SR,"findLeafNodeAtOffset");E(SR,"findLeafNodeAtOffset");o(MW,"findLeafNodeBeforeOffset");E(MW,"findLeafNodeBeforeOffset");o(NW,"binarySearch");E(NW,"binarySearch");o(PW,"getPreviousNode");E(PW,"getPreviousNode");o(ike,"getNextNode");E(ike,"getNextNode");o(ake,"getStartlineNode");E(ake,"getStartlineNode");o(ske,"getInteriorNodes");E(ske,"getInteriorNodes");o(oke,"getCommonParent");E(oke,"getCommonParent");o(CG,"getParentChain");E(CG,"getParentChain");OW={};yp(OW,{findAssignment:o(()=>XW,"findAssignment"),findNameAssignment:o(()=>MR,"findNameAssignment"),findNodeForKeyword:o(()=>jW,"findNodeForKeyword"),findNodeForProperty:o(()=>LR,"findNodeForProperty"),findNodesForKeyword:o(()=>pke,"findNodesForKeyword"),findNodesForKeywordInternal:o(()=>IR,"findNodesForKeywordInternal"),findNodesForProperty:o(()=>YW,"findNodesForProperty"),getActionAtElement:o(()=>ZW,"getActionAtElement"),getActionType:o(()=>JW,"getActionType"),getAllReachableRules:o(()=>_R,"getAllReachableRules"),getAllRulesUsedForCrossReferences:o(()=>fke,"getAllRulesUsedForCrossReferences"),getCrossReferenceTerminal:o(()=>HW,"getCrossReferenceTerminal"),getEntryRule:o(()=>VW,"getEntryRule"),getExplicitRuleType:o(()=>gw,"getExplicitRuleType"),getHiddenRules:o(()=>WW,"getHiddenRules"),getRuleType:o(()=>eq,"getRuleType"),getRuleTypeName:o(()=>xke,"getRuleTypeName"),getTypeName:o(()=>jg,"getTypeName"),isArrayCardinality:o(()=>gke,"isArrayCardinality"),isArrayOperator:o(()=>yke,"isArrayOperator"),isCommentTerminal:o(()=>UW,"isCommentTerminal"),isDataType:o(()=>vke,"isDataType"),isDataTypeRule:o(()=>mw,"isDataTypeRule"),isOptionalCardinality:o(()=>mke,"isOptionalCardinality"),terminalRegex:o(()=>yw,"terminalRegex")});ER=class extends Error{static{o(this,"ErrorWithLocation")}static{E(this,"ErrorWithLocation")}constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};o(vp,"assertUnreachable");E(vp,"assertUnreachable");o(BW,"assertCondition");E(BW,"assertCondition");$W={};yp($W,{NEWLINE_REGEXP:o(()=>cke,"NEWLINE_REGEXP"),escapeRegExp:o(()=>Nv,"escapeRegExp"),getTerminalParts:o(()=>hke,"getTerminalParts"),isMultilineComment:o(()=>FW,"isMultilineComment"),isWhitespace:o(()=>RR,"isWhitespace"),partialMatches:o(()=>zW,"partialMatches"),partialRegExp:o(()=>GW,"partialRegExp"),whitespaceCharacters:o(()=>dke,"whitespaceCharacters")});o(Dr,"cc");E(Dr,"cc");o(a6,"insertToSet");E(a6,"insertToSet");o(rv,"addFlag");E(rv,"addFlag");o(fg,"ASSERT_EXISTS");E(fg,"ASSERT_EXISTS");o(kC,"ASSERT_NEVER_REACH_HERE");E(kC,"ASSERT_NEVER_REACH_HERE");o(wG,"isCharacter");E(wG,"isCharacter");q6=[];for(let e=Dr("0");e<=Dr("9");e++)q6.push(e);H6=[Dr("_")].concat(q6);for(let e=Dr("a");e<=Dr("z");e++)H6.push(e);for(let e=Dr("A");e<=Dr("Z");e++)H6.push(e);BTe=[Dr(" "),Dr("\f"),Dr(` +`),Dr("\r"),Dr(" "),Dr("\v"),Dr(" "),Dr("\xA0"),Dr("\u1680"),Dr("\u2000"),Dr("\u2001"),Dr("\u2002"),Dr("\u2003"),Dr("\u2004"),Dr("\u2005"),Dr("\u2006"),Dr("\u2007"),Dr("\u2008"),Dr("\u2009"),Dr("\u200A"),Dr("\u2028"),Dr("\u2029"),Dr("\u202F"),Dr("\u205F"),Dr("\u3000"),Dr("\uFEFF")],ayt=/[0-9a-fA-F]/,MA=/[0-9]/,syt=/[1-9]/,lke=class{static{o(this,"RegExpParser")}static{E(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let t=this.disjunction();this.consumeChar("/");let r={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":rv(r,"global");break;case"i":rv(r,"ignoreCase");break;case"m":rv(r,"multiLine");break;case"u":rv(r,"unicode");break;case"y":rv(r,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break;case"<":{switch(this.popChar()){case"=":t="Lookbehind";break;case"!":t="NegativeLookbehind"}break}}fg(t);let r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return kC()}quantifier(e=!1){let t,r=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":let n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let i;this.isDigit()?(i=this.integerIncludingZero(),t={atLeast:n,atMost:i}):t={atLeast:n,atMost:1/0},this.consumeChar("}");break}if(e===!0&&t===void 0)return;fg(t);break}if(!(e===!0&&t===void 0)&&fg(t))return this.peekChar(0)==="?"?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(r),t}atom(){let e,t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),fg(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):kC()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Dr(` +`),Dr("\r"),Dr("\u2028"),Dr("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=q6;break;case"D":e=q6,t=!0;break;case"s":e=BTe;break;case"S":e=BTe,t=!0;break;case"w":e=H6;break;case"W":e=H6,t=!0;break}return fg(e)?{type:"Set",value:e,complement:t}:kC()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=Dr("\f");break;case"n":e=Dr(` +`);break;case"r":e=Dr("\r");break;case"t":e=Dr(" ");break;case"v":e=Dr("\v");break}return fg(e)?{type:"Character",value:e}:kC()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Dr("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:Dr(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:Dr(e)}}}characterClass(){let e=[],t=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),t=!0);this.isClassAtom();){let r=this.classAtom(),n=r.type==="Character";if(wG(r)&&this.isRangeDash()){this.consumeChar("-");let i=this.classAtom(),a=i.type==="Character";if(wG(i)){if(i.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}},AR=class{static{o(this,"BaseRegExpVisitor")}static{E(this,"BaseRegExpVisitor")}visitChildren(e){for(let t in e){let r=e[t];e.hasOwnProperty(t)&&(r.type!==void 0?this.visit(r):Array.isArray(r)&&r.forEach(n=>{this.visit(n)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Lookbehind":this.visitLookbehind(e);break;case"NegativeLookbehind":this.visitNegativeLookbehind(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitLookbehind(e){}visitNegativeLookbehind(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}},cke=/\r?\n/gm,uke=new lke,oyt=class extends AR{static{o(this,"TerminalRegExpVisitor")}static{E(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let t=String.fromCharCode(e.value);if(!this.multiline&&t===` +`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=Nv(t);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitSet(e){if(!this.multiline){let t=this.regex.substring(e.loc.begin,e.loc.end),r=new RegExp(t);this.multiline=!!` +`.match(r)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Vg=new oyt;o(hke,"getTerminalParts");E(hke,"getTerminalParts");o(FW,"isMultilineComment");E(FW,"isMultilineComment");dke=`\f +\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(RR,"isWhitespace");E(RR,"isWhitespace");o(Nv,"escapeRegExp");E(Nv,"escapeRegExp");o(zW,"partialMatches");E(zW,"partialMatches");o(GW,"partialRegExp");E(GW,"partialRegExp");o(VW,"getEntryRule");E(VW,"getEntryRule");o(WW,"getHiddenRules");E(WW,"getHiddenRules");o(_R,"getAllReachableRules");E(_R,"getAllReachableRules");o(qW,"ruleDfs");E(qW,"ruleDfs");o(fke,"getAllRulesUsedForCrossReferences");E(fke,"getAllRulesUsedForCrossReferences");o(HW,"getCrossReferenceTerminal");E(HW,"getCrossReferenceTerminal");o(UW,"isCommentTerminal");E(UW,"isCommentTerminal");o(YW,"findNodesForProperty");E(YW,"findNodesForProperty");o(LR,"findNodeForProperty");E(LR,"findNodeForProperty");o(DR,"findNodesForPropertyInternal");E(DR,"findNodesForPropertyInternal");o(pke,"findNodesForKeyword");E(pke,"findNodesForKeyword");o(jW,"findNodeForKeyword");E(jW,"findNodeForKeyword");o(IR,"findNodesForKeywordInternal");E(IR,"findNodesForKeywordInternal");o(XW,"findAssignment");E(XW,"findAssignment");o(MR,"findNameAssignment");E(MR,"findNameAssignment");o(KW,"findNameAssignmentInternal");E(KW,"findNameAssignmentInternal");o(ZW,"getActionAtElement");E(ZW,"getActionAtElement");o(mke,"isOptionalCardinality");E(mke,"isOptionalCardinality");o(gke,"isArrayCardinality");E(gke,"isArrayCardinality");o(yke,"isArrayOperator");E(yke,"isArrayOperator");o(mw,"isDataTypeRule");E(mw,"isDataTypeRule");o(QW,"isDataTypeRuleInternal");E(QW,"isDataTypeRuleInternal");o(vke,"isDataType");E(vke,"isDataType");o(U6,"isDataTypeInternal");E(U6,"isDataTypeInternal");o(gw,"getExplicitRuleType");E(gw,"getExplicitRuleType");o(jg,"getTypeName");E(jg,"getTypeName");o(JW,"getActionType");E(JW,"getActionType");o(xke,"getRuleTypeName");E(xke,"getRuleTypeName");o(eq,"getRuleType");E(eq,"getRuleType");o(yw,"terminalRegex");E(yw,"terminalRegex");tq=/[\s\S]/.source;o(i0,"abstractElementToRegex");E(i0,"abstractElementToRegex");o(bke,"terminalAlternativesToRegex");E(bke,"terminalAlternativesToRegex");o(Tke,"terminalGroupToRegex");E(Tke,"terminalGroupToRegex");o(Cke,"untilTokenToRegex");E(Cke,"untilTokenToRegex");o(wke,"negateTokenToRegex");E(wke,"negateTokenToRegex");o(kke,"characterRangeToRegex");E(kke,"characterRangeToRegex");o(s6,"keywordToRegex");E(s6,"keywordToRegex");o(Bu,"withCardinality");E(Bu,"withCardinality");o(rq,"createGrammarConfig");E(rq,"createGrammarConfig");lyt=typeof global=="object"&&global&&global.Object===Object&&global,Ske=lyt,cyt=typeof self=="object"&&self&&self.Object===Object&&self,uyt=Ske||cyt||Function("return this")(),Fu=uyt,hyt=Fu.Symbol,Ll=hyt,Eke=Object.prototype,dyt=Eke.hasOwnProperty,fyt=Eke.toString,cC=Ll?Ll.toStringTag:void 0;o(Ake,"getRawTag");E(Ake,"getRawTag");pyt=Ake,myt=Object.prototype,gyt=myt.toString;o(Rke,"objectToString");E(Rke,"objectToString");yyt=Rke,vyt="[object Null]",xyt="[object Undefined]",$Te=Ll?Ll.toStringTag:void 0;o(_ke,"baseGetTag");E(_ke,"baseGetTag");xp=_ke;o(Lke,"isObjectLike");E(Lke,"isObjectLike");Ac=Lke,byt="[object Symbol]";o(Dke,"isSymbol");E(Dke,"isSymbol");NR=Dke;o(Ike,"arrayMap");E(Ike,"arrayMap");vw=Ike,Tyt=Array.isArray,un=Tyt,Cyt=1/0,FTe=Ll?Ll.prototype:void 0,zTe=FTe?FTe.toString:void 0;o(nq,"baseToString");E(nq,"baseToString");wyt=nq,kyt=/\s/;o(Mke,"trimmedEndIndex");E(Mke,"trimmedEndIndex");Syt=Mke,Eyt=/^\s+/;o(Nke,"baseTrim");E(Nke,"baseTrim");Ayt=Nke;o(Pke,"isObject");E(Pke,"isObject");Dl=Pke,GTe=NaN,Ryt=/^[-+]0x[0-9a-f]+$/i,_yt=/^0b[01]+$/i,Lyt=/^0o[0-7]+$/i,Dyt=parseInt;o(Oke,"toNumber");E(Oke,"toNumber");Iyt=Oke,VTe=1/0,Myt=17976931348623157e292;o(Bke,"toFinite");E(Bke,"toFinite");Nyt=Bke;o($ke,"toInteger");E($ke,"toInteger");xw=$ke;o(Fke,"identity");E(Fke,"identity");bw=Fke,Pyt="[object AsyncFunction]",Oyt="[object Function]",Byt="[object GeneratorFunction]",$yt="[object Proxy]";o(zke,"isFunction");E(zke,"isFunction");rd=zke,Fyt=Fu["__core-js_shared__"],ez=Fyt,WTe=(function(){var e=/[^.]+$/.exec(ez&&ez.keys&&ez.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(Gke,"isMasked");E(Gke,"isMasked");zyt=Gke,Gyt=Function.prototype,Vyt=Gyt.toString;o(Vke,"toSource");E(Vke,"toSource");a0=Vke,Wyt=/[\\^$.*+?()[\]{}|]/g,qyt=/^\[object .+?Constructor\]$/,Hyt=Function.prototype,Uyt=Object.prototype,Yyt=Hyt.toString,jyt=Uyt.hasOwnProperty,Xyt=RegExp("^"+Yyt.call(jyt).replace(Wyt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(Wke,"baseIsNative");E(Wke,"baseIsNative");Kyt=Wke;o(qke,"getValue");E(qke,"getValue");Zyt=qke;o(Hke,"getNative");E(Hke,"getNative");s0=Hke,Qyt=s0(Fu,"WeakMap"),kG=Qyt,qTe=Object.create,Jyt=(function(){function e(){}return o(e,"object"),E(e,"object"),function(t){if(!Dl(t))return{};if(qTe)return qTe(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),e1t=Jyt;o(Uke,"apply");E(Uke,"apply");t1t=Uke;o(Yke,"noop");E(Yke,"noop");Da=Yke;o(jke,"copyArray");E(jke,"copyArray");r1t=jke,n1t=800,i1t=16,a1t=Date.now;o(Xke,"shortOut");E(Xke,"shortOut");s1t=Xke;o(Kke,"constant");E(Kke,"constant");o1t=Kke,l1t=(function(){try{var e=s0(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Y6=l1t,c1t=Y6?function(e,t){return Y6(e,"toString",{configurable:!0,enumerable:!1,value:o1t(t),writable:!0})}:bw,u1t=c1t,h1t=s1t(u1t),d1t=h1t;o(Zke,"arrayEach");E(Zke,"arrayEach");Qke=Zke;o(Jke,"baseFindIndex");E(Jke,"baseFindIndex");eSe=Jke;o(tSe,"baseIsNaN");E(tSe,"baseIsNaN");f1t=tSe;o(rSe,"strictIndexOf");E(rSe,"strictIndexOf");p1t=rSe;o(nSe,"baseIndexOf");E(nSe,"baseIndexOf");iq=nSe;o(iSe,"arrayIncludes");E(iSe,"arrayIncludes");aSe=iSe,m1t=9007199254740991,g1t=/^(?:0|[1-9]\d*)$/;o(sSe,"isIndex");E(sSe,"isIndex");PR=sSe;o(oSe,"baseAssignValue");E(oSe,"baseAssignValue");aq=oSe;o(lSe,"eq");E(lSe,"eq");Tw=lSe,y1t=Object.prototype,v1t=y1t.hasOwnProperty;o(cSe,"assignValue");E(cSe,"assignValue");OR=cSe;o(uSe,"copyObject");E(uSe,"copyObject");Cw=uSe,HTe=Math.max;o(hSe,"overRest");E(hSe,"overRest");x1t=hSe;o(dSe,"baseRest");E(dSe,"baseRest");sq=dSe,b1t=9007199254740991;o(fSe,"isLength");E(fSe,"isLength");oq=fSe;o(pSe,"isArrayLike");E(pSe,"isArrayLike");zu=pSe;o(mSe,"isIterateeCall");E(mSe,"isIterateeCall");BR=mSe;o(gSe,"createAssigner");E(gSe,"createAssigner");T1t=gSe,C1t=Object.prototype;o(ySe,"isPrototype");E(ySe,"isPrototype");ww=ySe;o(vSe,"baseTimes");E(vSe,"baseTimes");w1t=vSe,k1t="[object Arguments]";o(xSe,"baseIsArguments");E(xSe,"baseIsArguments");UTe=xSe,bSe=Object.prototype,S1t=bSe.hasOwnProperty,E1t=bSe.propertyIsEnumerable,A1t=UTe((function(){return arguments})())?UTe:function(e){return Ac(e)&&S1t.call(e,"callee")&&!E1t.call(e,"callee")},$R=A1t;o(TSe,"stubFalse");E(TSe,"stubFalse");R1t=TSe,CSe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,YTe=CSe&&typeof module=="object"&&module&&!module.nodeType&&module,_1t=YTe&&YTe.exports===CSe,jTe=_1t?Fu.Buffer:void 0,L1t=jTe?jTe.isBuffer:void 0,D1t=L1t||R1t,KC=D1t,I1t="[object Arguments]",M1t="[object Array]",N1t="[object Boolean]",P1t="[object Date]",O1t="[object Error]",B1t="[object Function]",$1t="[object Map]",F1t="[object Number]",z1t="[object Object]",G1t="[object RegExp]",V1t="[object Set]",W1t="[object String]",q1t="[object WeakMap]",H1t="[object ArrayBuffer]",U1t="[object DataView]",Y1t="[object Float32Array]",j1t="[object Float64Array]",X1t="[object Int8Array]",K1t="[object Int16Array]",Z1t="[object Int32Array]",Q1t="[object Uint8Array]",J1t="[object Uint8ClampedArray]",evt="[object Uint16Array]",tvt="[object Uint32Array]",oi={};oi[Y1t]=oi[j1t]=oi[X1t]=oi[K1t]=oi[Z1t]=oi[Q1t]=oi[J1t]=oi[evt]=oi[tvt]=!0;oi[I1t]=oi[M1t]=oi[H1t]=oi[N1t]=oi[U1t]=oi[P1t]=oi[O1t]=oi[B1t]=oi[$1t]=oi[F1t]=oi[z1t]=oi[G1t]=oi[V1t]=oi[W1t]=oi[q1t]=!1;o(wSe,"baseIsTypedArray");E(wSe,"baseIsTypedArray");rvt=wSe;o(kSe,"baseUnary");E(kSe,"baseUnary");kw=kSe,SSe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,BC=SSe&&typeof module=="object"&&module&&!module.nodeType&&module,nvt=BC&&BC.exports===SSe,tz=nvt&&Ske.process,ivt=(function(){try{var e=BC&&BC.require&&BC.require("util").types;return e||tz&&tz.binding&&tz.binding("util")}catch{}})(),fp=ivt,XTe=fp&&fp.isTypedArray,avt=XTe?kw(XTe):rvt,lq=avt,svt=Object.prototype,ovt=svt.hasOwnProperty;o(ESe,"arrayLikeKeys");E(ESe,"arrayLikeKeys");ASe=ESe;o(RSe,"overArg");E(RSe,"overArg");_Se=RSe,lvt=_Se(Object.keys,Object),cvt=lvt,uvt=Object.prototype,hvt=uvt.hasOwnProperty;o(LSe,"baseKeys");E(LSe,"baseKeys");DSe=LSe;o(ISe,"keys");E(ISe,"keys");jo=ISe,dvt=Object.prototype,fvt=dvt.hasOwnProperty,pvt=T1t(function(e,t){if(ww(t)||zu(t)){Cw(t,jo(t),e);return}for(var r in t)fvt.call(t,r)&&OR(e,r,t[r])}),Xo=pvt;o(MSe,"nativeKeysIn");E(MSe,"nativeKeysIn");mvt=MSe,gvt=Object.prototype,yvt=gvt.hasOwnProperty;o(NSe,"baseKeysIn");E(NSe,"baseKeysIn");vvt=NSe;o(PSe,"keysIn");E(PSe,"keysIn");FR=PSe,xvt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,bvt=/^\w*$/;o(OSe,"isKey");E(OSe,"isKey");cq=OSe,Tvt=s0(Object,"create"),ZC=Tvt;o(BSe,"hashClear");E(BSe,"hashClear");Cvt=BSe;o($Se,"hashDelete");E($Se,"hashDelete");wvt=$Se,kvt="__lodash_hash_undefined__",Svt=Object.prototype,Evt=Svt.hasOwnProperty;o(FSe,"hashGet");E(FSe,"hashGet");Avt=FSe,Rvt=Object.prototype,_vt=Rvt.hasOwnProperty;o(zSe,"hashHas");E(zSe,"hashHas");Lvt=zSe,Dvt="__lodash_hash_undefined__";o(GSe,"hashSet");E(GSe,"hashSet");Ivt=GSe;o(o0,"Hash");E(o0,"Hash");o0.prototype.clear=Cvt;o0.prototype.delete=wvt;o0.prototype.get=Avt;o0.prototype.has=Lvt;o0.prototype.set=Ivt;KTe=o0;o(VSe,"listCacheClear");E(VSe,"listCacheClear");Mvt=VSe;o(WSe,"assocIndexOf");E(WSe,"assocIndexOf");zR=WSe,Nvt=Array.prototype,Pvt=Nvt.splice;o(qSe,"listCacheDelete");E(qSe,"listCacheDelete");Ovt=qSe;o(HSe,"listCacheGet");E(HSe,"listCacheGet");Bvt=HSe;o(USe,"listCacheHas");E(USe,"listCacheHas");$vt=USe;o(YSe,"listCacheSet");E(YSe,"listCacheSet");Fvt=YSe;o(l0,"ListCache");E(l0,"ListCache");l0.prototype.clear=Mvt;l0.prototype.delete=Ovt;l0.prototype.get=Bvt;l0.prototype.has=$vt;l0.prototype.set=Fvt;GR=l0,zvt=s0(Fu,"Map"),QC=zvt;o(jSe,"mapCacheClear");E(jSe,"mapCacheClear");Gvt=jSe;o(XSe,"isKeyable");E(XSe,"isKeyable");Vvt=XSe;o(KSe,"getMapData");E(KSe,"getMapData");VR=KSe;o(ZSe,"mapCacheDelete");E(ZSe,"mapCacheDelete");Wvt=ZSe;o(QSe,"mapCacheGet");E(QSe,"mapCacheGet");qvt=QSe;o(JSe,"mapCacheHas");E(JSe,"mapCacheHas");Hvt=JSe;o(eEe,"mapCacheSet");E(eEe,"mapCacheSet");Uvt=eEe;o(c0,"MapCache");E(c0,"MapCache");c0.prototype.clear=Gvt;c0.prototype.delete=Wvt;c0.prototype.get=qvt;c0.prototype.has=Hvt;c0.prototype.set=Uvt;WR=c0,Yvt="Expected a function";o(qR,"memoize");E(qR,"memoize");qR.Cache=WR;jvt=qR,Xvt=500;o(tEe,"memoizeCapped");E(tEe,"memoizeCapped");Kvt=tEe,Zvt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Qvt=/\\(\\)?/g,Jvt=Kvt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Zvt,function(r,n,i,a){t.push(i?a.replace(Qvt,"$1"):n||r)}),t}),ext=Jvt;o(rEe,"toString2");E(rEe,"toString");txt=rEe;o(nEe,"castPath");E(nEe,"castPath");HR=nEe,rxt=1/0;o(iEe,"toKey");E(iEe,"toKey");Sw=iEe;o(aEe,"baseGet");E(aEe,"baseGet");uq=aEe;o(sEe,"get");E(sEe,"get");nxt=sEe;o(oEe,"arrayPush");E(oEe,"arrayPush");hq=oEe,ZTe=Ll?Ll.isConcatSpreadable:void 0;o(lEe,"isFlattenable");E(lEe,"isFlattenable");ixt=lEe;o(dq,"baseFlatten");E(dq,"baseFlatten");fq=dq;o(cEe,"flatten");E(cEe,"flatten");Sc=cEe,axt=_Se(Object.getPrototypeOf,Object),uEe=axt;o(hEe,"baseSlice");E(hEe,"baseSlice");dEe=hEe;o(fEe,"arrayReduce");E(fEe,"arrayReduce");sxt=fEe;o(pEe,"stackClear");E(pEe,"stackClear");oxt=pEe;o(mEe,"stackDelete");E(mEe,"stackDelete");lxt=mEe;o(gEe,"stackGet");E(gEe,"stackGet");cxt=gEe;o(yEe,"stackHas");E(yEe,"stackHas");uxt=yEe,hxt=200;o(vEe,"stackSet");E(vEe,"stackSet");dxt=vEe;o(u0,"Stack");E(u0,"Stack");u0.prototype.clear=oxt;u0.prototype.delete=lxt;u0.prototype.get=cxt;u0.prototype.has=uxt;u0.prototype.set=dxt;$C=u0;o(xEe,"baseAssign");E(xEe,"baseAssign");fxt=xEe;o(bEe,"baseAssignIn");E(bEe,"baseAssignIn");pxt=bEe,TEe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,QTe=TEe&&typeof module=="object"&&module&&!module.nodeType&&module,mxt=QTe&&QTe.exports===TEe,JTe=mxt?Fu.Buffer:void 0,eCe=JTe?JTe.allocUnsafe:void 0;o(CEe,"cloneBuffer");E(CEe,"cloneBuffer");gxt=CEe;o(wEe,"arrayFilter");E(wEe,"arrayFilter");pq=wEe;o(kEe,"stubArray");E(kEe,"stubArray");SEe=kEe,yxt=Object.prototype,vxt=yxt.propertyIsEnumerable,tCe=Object.getOwnPropertySymbols,xxt=tCe?function(e){return e==null?[]:(e=Object(e),pq(tCe(e),function(t){return vxt.call(e,t)}))}:SEe,mq=xxt;o(EEe,"copySymbols");E(EEe,"copySymbols");bxt=EEe,Txt=Object.getOwnPropertySymbols,Cxt=Txt?function(e){for(var t=[];e;)hq(t,mq(e)),e=uEe(e);return t}:SEe,AEe=Cxt;o(REe,"copySymbolsIn");E(REe,"copySymbolsIn");wxt=REe;o(_Ee,"baseGetAllKeys");E(_Ee,"baseGetAllKeys");LEe=_Ee;o(DEe,"getAllKeys");E(DEe,"getAllKeys");SG=DEe;o(IEe,"getAllKeysIn");E(IEe,"getAllKeysIn");MEe=IEe,kxt=s0(Fu,"DataView"),EG=kxt,Sxt=s0(Fu,"Promise"),AG=Sxt,Ext=s0(Fu,"Set"),vv=Ext,rCe="[object Map]",Axt="[object Object]",nCe="[object Promise]",iCe="[object Set]",aCe="[object WeakMap]",sCe="[object DataView]",Rxt=a0(EG),_xt=a0(QC),Lxt=a0(AG),Dxt=a0(vv),Ixt=a0(kG),pg=xp;(EG&&pg(new EG(new ArrayBuffer(1)))!=sCe||QC&&pg(new QC)!=rCe||AG&&pg(AG.resolve())!=nCe||vv&&pg(new vv)!=iCe||kG&&pg(new kG)!=aCe)&&(pg=E(function(e){var t=xp(e),r=t==Axt?e.constructor:void 0,n=r?a0(r):"";if(n)switch(n){case Rxt:return sCe;case _xt:return rCe;case Lxt:return nCe;case Dxt:return iCe;case Ixt:return aCe}return t},"getTag"));Rv=pg,Mxt=Object.prototype,Nxt=Mxt.hasOwnProperty;o(NEe,"initCloneArray");E(NEe,"initCloneArray");Pxt=NEe,Oxt=Fu.Uint8Array,j6=Oxt;o(PEe,"cloneArrayBuffer");E(PEe,"cloneArrayBuffer");gq=PEe;o(OEe,"cloneDataView");E(OEe,"cloneDataView");Bxt=OEe,$xt=/\w*$/;o(BEe,"cloneRegExp");E(BEe,"cloneRegExp");Fxt=BEe,oCe=Ll?Ll.prototype:void 0,lCe=oCe?oCe.valueOf:void 0;o($Ee,"cloneSymbol");E($Ee,"cloneSymbol");zxt=$Ee;o(FEe,"cloneTypedArray");E(FEe,"cloneTypedArray");Gxt=FEe,Vxt="[object Boolean]",Wxt="[object Date]",qxt="[object Map]",Hxt="[object Number]",Uxt="[object RegExp]",Yxt="[object Set]",jxt="[object String]",Xxt="[object Symbol]",Kxt="[object ArrayBuffer]",Zxt="[object DataView]",Qxt="[object Float32Array]",Jxt="[object Float64Array]",ebt="[object Int8Array]",tbt="[object Int16Array]",rbt="[object Int32Array]",nbt="[object Uint8Array]",ibt="[object Uint8ClampedArray]",abt="[object Uint16Array]",sbt="[object Uint32Array]";o(zEe,"initCloneByTag");E(zEe,"initCloneByTag");obt=zEe;o(GEe,"initCloneObject");E(GEe,"initCloneObject");lbt=GEe,cbt="[object Map]";o(VEe,"baseIsMap");E(VEe,"baseIsMap");ubt=VEe,cCe=fp&&fp.isMap,hbt=cCe?kw(cCe):ubt,dbt=hbt,fbt="[object Set]";o(WEe,"baseIsSet");E(WEe,"baseIsSet");pbt=WEe,uCe=fp&&fp.isSet,mbt=uCe?kw(uCe):pbt,gbt=mbt,ybt=1,vbt=2,xbt=4,qEe="[object Arguments]",bbt="[object Array]",Tbt="[object Boolean]",Cbt="[object Date]",wbt="[object Error]",HEe="[object Function]",kbt="[object GeneratorFunction]",Sbt="[object Map]",Ebt="[object Number]",UEe="[object Object]",Abt="[object RegExp]",Rbt="[object Set]",_bt="[object String]",Lbt="[object Symbol]",Dbt="[object WeakMap]",Ibt="[object ArrayBuffer]",Mbt="[object DataView]",Nbt="[object Float32Array]",Pbt="[object Float64Array]",Obt="[object Int8Array]",Bbt="[object Int16Array]",$bt="[object Int32Array]",Fbt="[object Uint8Array]",zbt="[object Uint8ClampedArray]",Gbt="[object Uint16Array]",Vbt="[object Uint32Array]",Qn={};Qn[qEe]=Qn[bbt]=Qn[Ibt]=Qn[Mbt]=Qn[Tbt]=Qn[Cbt]=Qn[Nbt]=Qn[Pbt]=Qn[Obt]=Qn[Bbt]=Qn[$bt]=Qn[Sbt]=Qn[Ebt]=Qn[UEe]=Qn[Abt]=Qn[Rbt]=Qn[_bt]=Qn[Lbt]=Qn[Fbt]=Qn[zbt]=Qn[Gbt]=Qn[Vbt]=!0;Qn[wbt]=Qn[HEe]=Qn[Dbt]=!1;o(FC,"baseClone");E(FC,"baseClone");Wbt=FC,qbt=4;o(YEe,"clone");E(YEe,"clone");Ya=YEe;o(jEe,"compact");E(jEe,"compact");Ew=jEe,Hbt="__lodash_hash_undefined__";o(XEe,"setCacheAdd");E(XEe,"setCacheAdd");Ubt=XEe;o(KEe,"setCacheHas");E(KEe,"setCacheHas");Ybt=KEe;o(JC,"SetCache");E(JC,"SetCache");JC.prototype.add=JC.prototype.push=Ubt;JC.prototype.has=Ybt;yq=JC;o(ZEe,"arraySome");E(ZEe,"arraySome");QEe=ZEe;o(JEe,"cacheHas");E(JEe,"cacheHas");vq=JEe,jbt=1,Xbt=2;o(e4e,"equalArrays");E(e4e,"equalArrays");t4e=e4e;o(r4e,"mapToArray");E(r4e,"mapToArray");Kbt=r4e;o(n4e,"setToArray");E(n4e,"setToArray");xq=n4e,Zbt=1,Qbt=2,Jbt="[object Boolean]",e2t="[object Date]",t2t="[object Error]",r2t="[object Map]",n2t="[object Number]",i2t="[object RegExp]",a2t="[object Set]",s2t="[object String]",o2t="[object Symbol]",l2t="[object ArrayBuffer]",c2t="[object DataView]",hCe=Ll?Ll.prototype:void 0,rz=hCe?hCe.valueOf:void 0;o(i4e,"equalByTag");E(i4e,"equalByTag");u2t=i4e,h2t=1,d2t=Object.prototype,f2t=d2t.hasOwnProperty;o(a4e,"equalObjects");E(a4e,"equalObjects");p2t=a4e,m2t=1,dCe="[object Arguments]",fCe="[object Array]",NA="[object Object]",g2t=Object.prototype,pCe=g2t.hasOwnProperty;o(s4e,"baseIsEqualDeep");E(s4e,"baseIsEqualDeep");y2t=s4e;o(bq,"baseIsEqual");E(bq,"baseIsEqual");o4e=bq,v2t=1,x2t=2;o(l4e,"baseIsMatch");E(l4e,"baseIsMatch");b2t=l4e;o(c4e,"isStrictComparable");E(c4e,"isStrictComparable");u4e=c4e;o(h4e,"getMatchData");E(h4e,"getMatchData");T2t=h4e;o(d4e,"matchesStrictComparable");E(d4e,"matchesStrictComparable");f4e=d4e;o(p4e,"baseMatches");E(p4e,"baseMatches");C2t=p4e;o(m4e,"baseHasIn");E(m4e,"baseHasIn");w2t=m4e;o(g4e,"hasPath");E(g4e,"hasPath");y4e=g4e;o(v4e,"hasIn");E(v4e,"hasIn");k2t=v4e,S2t=1,E2t=2;o(x4e,"baseMatchesProperty");E(x4e,"baseMatchesProperty");A2t=x4e;o(b4e,"baseProperty");E(b4e,"baseProperty");R2t=b4e;o(T4e,"basePropertyDeep");E(T4e,"basePropertyDeep");_2t=T4e;o(C4e,"property");E(C4e,"property");L2t=C4e;o(w4e,"baseIteratee");E(w4e,"baseIteratee");Gu=w4e;o(k4e,"arrayAggregator");E(k4e,"arrayAggregator");D2t=k4e;o(S4e,"createBaseFor");E(S4e,"createBaseFor");I2t=S4e,M2t=I2t(),N2t=M2t;o(E4e,"baseForOwn");E(E4e,"baseForOwn");P2t=E4e;o(A4e,"createBaseEach");E(A4e,"createBaseEach");O2t=A4e,B2t=O2t(P2t),h0=B2t;o(R4e,"baseAggregator");E(R4e,"baseAggregator");$2t=R4e;o(_4e,"createAggregator");E(_4e,"createAggregator");F2t=_4e,L4e=Object.prototype,z2t=L4e.hasOwnProperty,G2t=sq(function(e,t){e=Object(e);var r=-1,n=t.length,i=n>2?t[2]:void 0;for(i&&BR(t[0],t[1],i)&&(n=1);++r{t.accept(e)})}},Gs=class extends Vu{static{o(this,"NonTerminal")}static{E(this,"NonTerminal")}constructor(e){super([]),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},Pv=class extends Vu{static{o(this,"Rule")}static{E(this,"Rule")}constructor(e){super(e.definition),this.orgText="",Xo(this,_c(e,t=>t!==void 0))}},Co=class extends Vu{static{o(this,"Alternative")}static{E(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,Xo(this,_c(e,t=>t!==void 0))}},Ua=class extends Vu{static{o(this,"Option")}static{E(this,"Option")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Zo=class extends Vu{static{o(this,"RepetitionMandatory")}static{E(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Qo=class extends Vu{static{o(this,"RepetitionMandatoryWithSeparator")}static{E(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Mi=class extends Vu{static{o(this,"Repetition")}static{E(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},wo=class extends Vu{static{o(this,"RepetitionWithSeparator")}static{E(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},ko=class extends Vu{static{o(this,"Alternation")}static{E(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,Xo(this,_c(e,t=>t!==void 0))}},ci=class{static{o(this,"Terminal")}static{E(this,"Terminal")}constructor(e){this.idx=1,Xo(this,_c(e,t=>t!==void 0))}accept(e){e.visit(this)}};o(C3e,"serializeGrammar");E(C3e,"serializeGrammar");o(zC,"serializeProduction");E(zC,"serializeProduction");Ov=class{static{o(this,"GAstVisitor")}static{E(this,"GAstVisitor")}visit(e){let t=e;switch(t.constructor){case Gs:return this.visitNonTerminal(t);case Co:return this.visitAlternative(t);case Ua:return this.visitOption(t);case Zo:return this.visitRepetitionMandatory(t);case Qo:return this.visitRepetitionMandatoryWithSeparator(t);case wo:return this.visitRepetitionWithSeparator(t);case Mi:return this.visitRepetition(t);case ko:return this.visitAlternation(t);case ci:return this.visitTerminal(t);case Pv:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};o(w3e,"isSequenceProd");E(w3e,"isSequenceProd");o(tw,"isOptionalProd");E(tw,"isOptionalProd");o(k3e,"isBranchingProd");E(k3e,"isBranchingProd");o(Tc,"getProductionDslName");E(Tc,"getProductionDslName");jR=class{static{o(this,"RestWalker")}static{E(this,"RestWalker")}walk(e,t=[]){Ir(e.definition,(r,n)=>{let i=Ha(e.definition,n+1);if(r instanceof Gs)this.walkProdRef(r,i,t);else if(r instanceof ci)this.walkTerminal(r,i,t);else if(r instanceof Co)this.walkFlat(r,i,t);else if(r instanceof Ua)this.walkOption(r,i,t);else if(r instanceof Zo)this.walkAtLeastOne(r,i,t);else if(r instanceof Qo)this.walkAtLeastOneSep(r,i,t);else if(r instanceof wo)this.walkManySep(r,i,t);else if(r instanceof Mi)this.walkMany(r,i,t);else if(r instanceof ko)this.walkOr(r,i,t);else throw Error("non exhaustive match")})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){let n=t.concat(r);this.walk(e,n)}walkOption(e,t,r){let n=t.concat(r);this.walk(e,n)}walkAtLeastOne(e,t,r){let n=[new Ua({definition:e.definition})].concat(t,r);this.walk(e,n)}walkAtLeastOneSep(e,t,r){let n=RG(e,t,r);this.walk(e,n)}walkMany(e,t,r){let n=[new Ua({definition:e.definition})].concat(t,r);this.walk(e,n)}walkManySep(e,t,r){let n=RG(e,t,r);this.walk(e,n)}walkOr(e,t,r){let n=t.concat(r);Ir(e.definition,i=>{let a=new Co({definition:[i]});this.walk(a,n)})}};o(RG,"restForRepetitionWithSeparator");E(RG,"restForRepetitionWithSeparator");o(Bv,"first");E(Bv,"first");o(S3e,"firstForSequence");E(S3e,"firstForSequence");o(E3e,"firstForBranching");E(E3e,"firstForBranching");o(A3e,"firstForTerminal");E(A3e,"firstForTerminal");R3e="_~IN~_",RTt=class extends jR{static{o(this,"ResyncFollowsWalker")}static{E(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,r){}walkProdRef(e,t,r){let n=L3e(e.referencedRule,e.idx)+this.topProd.name,i=t.concat(r),a=new Co({definition:i}),s=Bv(a);this.follows[n]=s}};o(_3e,"computeAllProdsFollows");E(_3e,"computeAllProdsFollows");o(L3e,"buildBetweenProdsFollowPrefix");E(L3e,"buildBetweenProdsFollowPrefix");o6={},_Tt=new lke;o(Aw,"getRegExpAst");E(Aw,"getRegExpAst");o(D3e,"clearRegExpParserCache");E(D3e,"clearRegExpParserCache");I3e="Complement Sets are not supported for first char optimization",K6=`Unable to use "first char" lexer optimizations: +`;o(M3e,"getOptimizedStartCodesIndices");E(M3e,"getOptimizedStartCodesIndices");o(Z6,"firstCharOptimizedIndices");E(Z6,"firstCharOptimizedIndices");o(SC,"addOptimizedIdxToResult");E(SC,"addOptimizedIdxToResult");o(N3e,"handleIgnoreCase");E(N3e,"handleIgnoreCase");o(_G,"findCode");E(_G,"findCode");o(Q6,"isWholeOptional");E(Q6,"isWholeOptional");LTt=class extends AR{static{o(this,"CharCodeFinder")}static{E(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return;case"Lookbehind":this.visitLookbehind(e);return;case"NegativeLookbehind":this.visitNegativeLookbehind(e);return}super.visitChildren(e)}}visitCharacter(e){qs(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?_G(e,this.targetCharCodes)===void 0&&(this.found=!0):_G(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(XR,"canMatchCharCode");E(XR,"canMatchCharCode");Kg="PATTERN",EC="defaultMode",PA="modes";o(P3e,"analyzeTokenTypes");E(P3e,"analyzeTokenTypes");o(O3e,"validatePatterns");E(O3e,"validatePatterns");o(B3e,"validateRegExpPattern");E(B3e,"validateRegExpPattern");o($3e,"findMissingPatterns");E($3e,"findMissingPatterns");o(F3e,"findInvalidPatterns");E(F3e,"findInvalidPatterns");DTt=/[^\\][$]/;o(z3e,"findEndOfInputAnchor");E(z3e,"findEndOfInputAnchor");o(G3e,"findEmptyMatchRegExps");E(G3e,"findEmptyMatchRegExps");ITt=/[^\\[][\^]|^\^/;o(V3e,"findStartOfInputAnchor");E(V3e,"findStartOfInputAnchor");o(W3e,"findUnsupportedFlags");E(W3e,"findUnsupportedFlags");o(q3e,"findDuplicatePatterns");E(q3e,"findDuplicatePatterns");o(H3e,"findInvalidGroupType");E(H3e,"findInvalidGroupType");o(U3e,"findModesThatDoNotExist");E(U3e,"findModesThatDoNotExist");o(Y3e,"findUnreachablePatterns");E(Y3e,"findUnreachablePatterns");o(j3e,"tryToMatchStrToPattern");E(j3e,"tryToMatchStrToPattern");o(X3e,"noMetaChar");E(X3e,"noMetaChar");o(K3e,"usesLookAheadOrBehind");E(K3e,"usesLookAheadOrBehind");o(LG,"addStickyFlag");E(LG,"addStickyFlag");o(Z3e,"performRuntimeChecks");E(Z3e,"performRuntimeChecks");o(Q3e,"performWarningRuntimeChecks");E(Q3e,"performWarningRuntimeChecks");o(J3e,"cloneEmptyGroups");E(J3e,"cloneEmptyGroups");o(Eq,"isCustomPattern");E(Eq,"isCustomPattern");o(e5e,"isShortPattern");E(e5e,"isShortPattern");MTt={test:E(function(e){let t=e.length;for(let r=this.lastIndex;r${e.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(e,t,r,n,i,a){return`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${r} characters.`}};(function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Ni||(Ni={}));RC={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:IG,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(RC);Fs=class{static{o(this,"Lexer")}static{E(this,"Lexer")}constructor(e,t=RC){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(n,i)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let a=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${n}>`);let{time:s,value:l}=kq(i),u=s>10?console.warn:console.log;return this.traceInitIndent time: ${s}ms`),this.traceInitIndent--,l}else return i()},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=Xo({},RC,t);let r=this.config.traceInitPerf;r===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof r=="number"&&(this.traceInitMaxIdent=r,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,i=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===RC.lineTerminatorsPattern)this.config.lineTerminatorsPattern=MTt;else if(this.config.lineTerminatorCharacters===RC.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),un(e)?n={modes:{defaultMode:Ya(e)},defaultMode:EC}:(i=!1,n=Ya(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Z3e(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Q3e(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},Ir(n.modes,(s,l)=>{n.modes[l]=YR(s,u=>Kh(u))});let a=jo(n.modes);if(Ir(n.modes,(s,l)=>{this.TRACE_INIT(`Mode: <${l}> processing`,()=>{if(this.modes.push(l),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(O3e(s,a))}),ei(this.lexerDefinitionErrors)){Fv(s);let u;this.TRACE_INIT("analyzeTokenTypes",()=>{u=P3e(s,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[l]=u.patternIdxToConfig,this.charCodeToPatternIdxToConfig[l]=u.charCodeToPatternIdxToConfig,this.emptyGroups=Xo({},this.emptyGroups,u.emptyGroups),this.hasCustom=u.hasCustom||this.hasCustom,this.canModeBeOptimized[l]=u.canBeOptimized}})}),this.defaultMode=n.defaultMode,!ei(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let l=hr(this.lexerDefinitionErrors,u=>u.message).join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+l)}Ir(this.lexerDefinitionWarning,s=>{wq(s.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(i&&(this.handleModes=Da),this.trackStartLines===!1&&(this.computeNewColumn=bw),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=Da),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let s=Ko(this.canModeBeOptimized,(l,u,h)=>(u===!1&&l.push(h),l),[]);if(t.ensureOptimizations&&!ei(s))throw Error(`Lexer Modes: < ${s.join(", ")} > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{D3e()}),this.TRACE_INIT("toFastProperties",()=>{Sq(this)})})}tokenize(e,t=this.defaultMode){if(!ei(this.lexerDefinitionErrors)){let n=hr(this.lexerDefinitionErrors,i=>i.message).join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let r,n,i,a,s,l,u,h,d,f,p,m,g,y,v,x=e,b=x.length,T=0,k=0,C=this.hasCustom?0:Math.floor(e.length/10),w=new Array(C),S=[],R=this.trackStartLines?1:void 0,L=this.trackStartLines?1:void 0,N=J3e(this.emptyGroups),I=this.trackStartLines,_=this.config.lineTerminatorsPattern,A=0,M=[],D=[],P=[],B=[];Object.freeze(B);let O=!1,$=E(W=>{if(P.length===1&&W.tokenType.PUSH_MODE===void 0){let H=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(W);S.push({offset:W.startOffset,line:W.startLine,column:W.startColumn,length:W.image.length,message:H})}else{P.pop();let H=Xg(P);M=this.patternIdxToConfig[H],D=this.charCodeToPatternIdxToConfig[H],A=M.length;let j=this.canModeBeOptimized[H]&&this.config.safeMode===!1;D&&j?O=!0:O=!1}},"pop_mode");function V(W){P.push(W),D=this.charCodeToPatternIdxToConfig[W],M=this.patternIdxToConfig[W],A=M.length,A=M.length;let H=this.canModeBeOptimized[W]&&this.config.safeMode===!1;D&&H?O=!0:O=!1}o(V,"push_mode"),E(V,"push_mode"),V.call(this,t);let G,z=this.config.recoveryEnabled;for(;Tl.length){l=a,d=a.length,u=h,G=te;break}}}break}}if(d!==-1){if(f=G.group,f!==void 0&&(l=l!==null?l:e.substring(T,T+d),p=G.tokenTypeIdx,m=this.createTokenInstance(l,T,p,G.tokenType,R,L,d),this.handlePayload(m,u),f===!1?k=this.addToken(w,k,m):N[f].push(m)),I===!0&&G.canLineTerminator===!0){let Q=0,U,oe;_.lastIndex=0;do l=l!==null?l:e.substring(T,T+d),U=_.test(l),U===!0&&(oe=_.lastIndex-1,Q++);while(U===!0);Q!==0?(R=R+Q,L=d-oe,this.updateTokenEndLineColumnLocation(m,f,oe,Q,R,L,d)):L=this.computeNewColumn(L,d)}else L=this.computeNewColumn(L,d);T=T+d,this.handleModes(G,$,V,m)}else{let Q=T,U=R,oe=L,te=z===!1;for(;te===!1&&T ${Ug(e)} <--`:`token of type --> ${e.name} <--`} but found --> '${t.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:e,ruleName:t}){return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` +but found: '`+Rc(t).image+"'";if(n)return a+n+l;{let u=Ko(e,(p,m)=>p.concat(m),[]),h=hr(u,p=>`[${hr(p,m=>Ug(m)).join(", ")}]`),f=`one of these possible Token sequences: +${hr(h,(p,m)=>` ${m+1}. ${p}`).join(` +`)}`;return a+f+l}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` +but found: '`+Rc(t).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: + <${hr(e,h=>`[${hr(h,d=>Ug(d)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(pv);PTt={buildRuleNotFoundError(e,t){return"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+`<- +inside top level rule: ->`+e.name+"<-"}},Wg={buildDuplicateFoundError(e,t){function r(d){return d instanceof ci?d.terminalType.name:d instanceof Gs?d.nonTerminalName:""}o(r,"getExtraProductionArgument2"),E(r,"getExtraProductionArgument");let n=e.name,i=Rc(t),a=i.idx,s=Tc(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} + appears more than once (${t.length} times) in the top level rule: ->${n}<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,` +`),h},buildNamespaceConflictError(e){return`Namespace conflict found in grammar. +The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>. +To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(e){let t=hr(e.prefixPath,i=>Ug(i)).join(", "),r=e.alternation.idx===0?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix +in inside <${e.topLevelRule.name}> Rule, +<${t}> may appears as a prefix path in all these alternatives. +See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`},buildAlternationAmbiguityError(e){let t=e.alternation.idx===0?"":e.alternation.idx,r=e.prefixPath.length===0,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in inside <${e.topLevelRule.name}> Rule, +`;if(r)n+=`These alternatives are all empty (match no tokens), making them indistinguishable. +Only the last alternative may be empty. +`;else{let i=hr(e.prefixPath,a=>Ug(a)).join(", ");n+=`<${i}> may appears as a prefix path in all these alternatives. +`}return n+=`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n},buildEmptyRepetitionError(e){let t=Tc(e.repetition);return e.repetition.idx!==0&&(t+=e.repetition.idx),`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens. +This could lead to an infinite loop.`},buildTokenNameError(e){return"deprecated"},buildEmptyAlternationError(e){return`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in inside <${e.topLevelRule.name}> Rule. +Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(e){return`An Alternation cannot have more than 256 alternatives: + inside <${e.topLevelRule.name}> Rule. + has ${e.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(e){let t=e.topLevelRule.name,r=hr(e.leftRecursionPath,a=>a.name),n=`${t} --> ${r.concat([t]).join(" --> ")}`;return`Left Recursion found in grammar. +rule: <${t}> can be invoked from itself (directly or indirectly) +without consuming any Tokens. The grammar path that causes this is: + ${n} + To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(e){return"deprecated"},buildDuplicateRuleNameError(e){let t;return e.topLevelRule instanceof Pv?t=e.topLevelRule.name:t=e.topLevelRule,`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};o(d5e,"resolveGrammar");E(d5e,"resolveGrammar");OTt=class extends Ov{static{o(this,"GastRefResolverVisitor")}static{E(this,"GastRefResolverVisitor")}constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){Ir(ha(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{let r=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:r,type:Vs.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}},BTt=class extends jR{static{o(this,"AbstractNextPossibleTokensWalker")}static{E(this,"AbstractNextPossibleTokensWalker")}constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=Ya(this.path.ruleStack).reverse(),this.occurrenceStack=Ya(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,r){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let n=t.concat(r);this.updateExpectedNext(),this.walk(e.referencedRule,n)}}updateExpectedNext(){ei(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},$Tt=class extends BTt{static{o(this,"NextAfterTokenWalker")}static{E(this,"NextAfterTokenWalker")}constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,r){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let n=t.concat(r),i=new Co({definition:n});this.possibleTokTypes=Bv(i),this.found=!0}}},KR=class extends jR{static{o(this,"AbstractNextTerminalAfterProductionWalker")}static{E(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},FTt=class extends KR{static{o(this,"NextTerminalAfterManyWalker")}static{E(this,"NextTerminalAfterManyWalker")}walkMany(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkMany(e,t,r)}},ACe=class extends KR{static{o(this,"NextTerminalAfterManySepWalker")}static{E(this,"NextTerminalAfterManySepWalker")}walkManySep(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkManySep(e,t,r)}},zTt=class extends KR{static{o(this,"NextTerminalAfterAtLeastOneWalker")}static{E(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOne(e,t,r)}},RCe=class extends KR{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}static{E(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOneSep(e,t,r)}};o(J6,"possiblePathsFrom");E(J6,"possiblePathsFrom");o(Mq,"nextPossibleTokensAfter");E(Mq,"nextPossibleTokensAfter");o(f5e,"expandTopLevelRule");E(f5e,"expandTopLevelRule");(function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"})(wi||(wi={}));o(ZR,"getProdType");E(ZR,"getProdType");o(MG,"getLookaheadPaths");E(MG,"getLookaheadPaths");o(p5e,"buildLookaheadFuncForOr");E(p5e,"buildLookaheadFuncForOr");o(m5e,"buildLookaheadFuncForOptionalProd");E(m5e,"buildLookaheadFuncForOptionalProd");o(g5e,"buildAlternativesLookAheadFunc");E(g5e,"buildAlternativesLookAheadFunc");o(y5e,"buildSingleAlternativeLookaheadFunction");E(y5e,"buildSingleAlternativeLookaheadFunction");GTt=class extends jR{static{o(this,"RestDefinitionFinderWalker")}static{E(this,"RestDefinitionFinderWalker")}constructor(e,t,r){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=r}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,r,n){return e.idx===this.targetOccurrence&&this.targetProdType===t?(this.restDef=r.concat(n),!0):!1}walkOption(e,t,r){this.checkIsTarget(e,wi.OPTION,t,r)||super.walkOption(e,t,r)}walkAtLeastOne(e,t,r){this.checkIsTarget(e,wi.REPETITION_MANDATORY,t,r)||super.walkOption(e,t,r)}walkAtLeastOneSep(e,t,r){this.checkIsTarget(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}walkMany(e,t,r){this.checkIsTarget(e,wi.REPETITION,t,r)||super.walkOption(e,t,r)}walkManySep(e,t,r){this.checkIsTarget(e,wi.REPETITION_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}},v5e=class extends Ov{static{o(this,"InsideDefinitionFinderVisitor")}static{E(this,"InsideDefinitionFinderVisitor")}constructor(e,t,r){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=r,this.result=[]}checkIsTarget(e,t){e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,wi.OPTION)}visitRepetition(e){this.checkIsTarget(e,wi.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,wi.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,wi.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,wi.ALTERNATION)}};o(NG,"initializeArrayOfArrays");E(NG,"initializeArrayOfArrays");o(u6,"pathToHashKeys");E(u6,"pathToHashKeys");o(x5e,"isUniquePrefixHash");E(x5e,"isUniquePrefixHash");o(Nq,"lookAheadSequenceFromAlternatives");E(Nq,"lookAheadSequenceFromAlternatives");o(_w,"getLookaheadPathsForOr");E(_w,"getLookaheadPathsForOr");o(Lw,"getLookaheadPathsForOptionalProd");E(Lw,"getLookaheadPathsForOptionalProd");o(eR,"containsPath");E(eR,"containsPath");o(b5e,"isStrictPrefixOfPath");E(b5e,"isStrictPrefixOfPath");o(Pq,"areTokenCategoriesNotUsed");E(Pq,"areTokenCategoriesNotUsed");o(T5e,"validateLookahead");E(T5e,"validateLookahead");o(C5e,"validateGrammar");E(C5e,"validateGrammar");o(w5e,"validateDuplicateProductions");E(w5e,"validateDuplicateProductions");o(k5e,"identifyProductionForDuplicates");E(k5e,"identifyProductionForDuplicates");o(Oq,"getExtraProductionArgument");E(Oq,"getExtraProductionArgument");VTt=class extends Ov{static{o(this,"OccurrenceValidationCollector")}static{E(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(S5e,"validateRuleDoesNotAlreadyExist");E(S5e,"validateRuleDoesNotAlreadyExist");o(E5e,"validateRuleIsOverridden");E(E5e,"validateRuleIsOverridden");o(Bq,"validateNoLeftRecursion");E(Bq,"validateNoLeftRecursion");o(GC,"getFirstNoneTerminal");E(GC,"getFirstNoneTerminal");$q=class extends Ov{static{o(this,"OrCollector")}static{E(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(A5e,"validateEmptyOrAlternative");E(A5e,"validateEmptyOrAlternative");o(R5e,"validateAmbiguousAlternationAlternatives");E(R5e,"validateAmbiguousAlternationAlternatives");WTt=class extends Ov{static{o(this,"RepetitionCollector")}static{E(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(_5e,"validateTooManyAlts");E(_5e,"validateTooManyAlts");o(L5e,"validateSomeNonEmptyLookaheadPath");E(L5e,"validateSomeNonEmptyLookaheadPath");o(D5e,"checkAlternativesAmbiguities");E(D5e,"checkAlternativesAmbiguities");o(I5e,"checkPrefixAlternativesAmbiguities");E(I5e,"checkPrefixAlternativesAmbiguities");o(M5e,"checkTerminalAndNoneTerminalsNameSpace");E(M5e,"checkTerminalAndNoneTerminalsNameSpace");o(N5e,"resolveGrammar2");E(N5e,"resolveGrammar");o(P5e,"validateGrammar2");E(P5e,"validateGrammar");O5e="MismatchedTokenException",B5e="NoViableAltException",$5e="EarlyExitException",F5e="NotAllInputParsedException",z5e=[O5e,B5e,$5e,F5e];Object.freeze(z5e);o(nw,"isRecognitionException");E(nw,"isRecognitionException");QR=class extends Error{static{o(this,"RecognitionException")}static{E(this,"RecognitionException")}constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},G5e=class extends QR{static{o(this,"MismatchedTokenException")}static{E(this,"MismatchedTokenException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=O5e}},qTt=class extends QR{static{o(this,"NoViableAltException")}static{E(this,"NoViableAltException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=B5e}},HTt=class extends QR{static{o(this,"NotAllInputParsedException")}static{E(this,"NotAllInputParsedException")}constructor(e,t){super(e,t),this.name=F5e}},UTt=class extends QR{static{o(this,"EarlyExitException")}static{E(this,"EarlyExitException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=$5e}},nz={},V5e="InRuleRecoveryException",YTt=class extends Error{static{o(this,"InRuleRecoveryException")}static{E(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=V5e}},jTt=class{static{o(this,"Recoverable")}static{E(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=wr(e,"recoveryEnabled")?e.recoveryEnabled:Qh.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=W5e)}getTokenToInsert(e){let t=Rw(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,r,n){let i=this.findReSyncTokenType(),a=this.exportLexerState(),s=[],l=!1,u=this.LA(1),h=this.LA(1),d=E(()=>{let f=this.LA(0),p=this.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:f,ruleName:this.getCurrRuleFullName()}),m=new G5e(p,u,this.LA(0));m.resyncedTokens=ew(s),this.SAVE_ERROR(m)},"generateErrorMessage");for(;!l;)if(this.tokenMatcher(h,n)){d();return}else if(r.call(this)){d(),e.apply(this,t);return}else this.tokenMatcher(h,i)?l=!0:(h=this.SKIP_TOKEN(),this.addToResyncTokens(h,s));this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(e,t,r){return!(r===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))}getFollowsForInRuleRecovery(e,t){let r=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(r)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let r=this.SKIP_TOKEN();return this.consumeToken(),r}throw new YTt("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e)||ei(t))return!1;let r=this.LA(1);return _v(t,i=>this.tokenMatcher(r,i))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let t=this.getCurrFollowKey(),r=this.getFollowSetFromFollowKey(t);return qs(r,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),t=this.LA(1),r=2;for(;;){let n=_v(e,i=>Iq(t,i));if(n!==void 0)return n;t=this.LA(r),r++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return nz;let e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(r)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return hr(e,(r,n)=>n===0?nz:{ruleName:this.shortRuleNameToFullName(r),idxInCallingRule:t[n],inRule:this.shortRuleNameToFullName(e[n-1])})}flattenFollowSet(){let e=hr(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return Sc(e)}getFollowSetFromFollowKey(e){if(e===nz)return[pp];let t=e.ruleName+e.idxInCallingRule+R3e+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,pp)||t.push(e),t}reSyncTo(e){let t=[],r=this.LA(1);for(;this.tokenMatcher(r,e)===!1;)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,t);return ew(t)}attemptInRepetitionRecovery(e,t,r,n,i,a,s){}getCurrentGrammarPath(e,t){let r=this.getHumanReadableRuleStack(),n=Ya(this.RULE_OCCURRENCE_STACK);return{ruleStack:r,occurrenceStack:n,lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return hr(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(W5e,"attemptInRepetitionRecovery");E(W5e,"attemptInRepetitionRecovery");XTt=4,bp=8,KTt=8,q5e=1<Bq(t,t,Wg))}validateEmptyOrAlternatives(e){return _l(e,t=>A5e(t,Wg))}validateAmbiguousAlternationAlternatives(e,t){return _l(e,r=>R5e(r,t,Wg))}validateSomeNonEmptyLookaheadPath(e,t){return L5e(e,t,Wg)}buildLookaheadForAlternation(e){return p5e(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,g5e)}buildLookaheadForOptional(e){return m5e(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ZR(e.prodType),y5e)}},ZTt=class{static{o(this,"LooksAhead")}static{E(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=wr(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Qh.dynamicTokensEnabled,this.maxLookahead=wr(e,"maxLookahead")?e.maxLookahead:Qh.maxLookahead,this.lookaheadStrategy=wr(e,"lookaheadStrategy")?e.lookaheadStrategy:new Fq({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ir(e,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{let{alternation:r,repetition:n,option:i,repetitionMandatory:a,repetitionMandatoryWithSeparator:s,repetitionWithSeparator:l}=U5e(t);Ir(r,u=>{let h=u.idx===0?"":u.idx;this.TRACE_INIT(`${Tc(u)}${h}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:u.idx,rule:t,maxLookahead:u.maxLookahead||this.maxLookahead,hasPredicates:u.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),f=d6(this.fullRuleNameToShort[t.name],q5e,u.idx);this.setLaFuncCache(f,d)})}),Ir(n,u=>{this.computeLookaheadFunc(t,u.idx,PG,"Repetition",u.maxLookahead,Tc(u))}),Ir(i,u=>{this.computeLookaheadFunc(t,u.idx,H5e,"Option",u.maxLookahead,Tc(u))}),Ir(a,u=>{this.computeLookaheadFunc(t,u.idx,OG,"RepetitionMandatory",u.maxLookahead,Tc(u))}),Ir(s,u=>{this.computeLookaheadFunc(t,u.idx,h6,"RepetitionMandatoryWithSeparator",u.maxLookahead,Tc(u))}),Ir(l,u=>{this.computeLookaheadFunc(t,u.idx,BG,"RepetitionWithSeparator",u.maxLookahead,Tc(u))})})})}computeLookaheadFunc(e,t,r,n,i,a){this.TRACE_INIT(`${a}${t===0?"":t}`,()=>{let s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:n}),l=d6(this.fullRuleNameToShort[e.name],r,t);this.setLaFuncCache(l,s)})}getKeyForAutomaticLookahead(e,t){let r=this.getLastExplicitRuleShortName();return d6(r,e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},QTt=class extends Ov{static{o(this,"DslMethodsCollectorVisitor")}static{E(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},OA=new QTt;o(U5e,"collectMethods");E(U5e,"collectMethods");o($G,"setNodeLocationOnlyOffset");E($G,"setNodeLocationOnlyOffset");o(FG,"setNodeLocationFull");E(FG,"setNodeLocationFull");o(Y5e,"addTerminalToCst");E(Y5e,"addTerminalToCst");o(j5e,"addNoneTerminalToCst");E(j5e,"addNoneTerminalToCst");JTt="name";o(zq,"defineNameProp");E(zq,"defineNameProp");o(X5e,"defaultVisit");E(X5e,"defaultVisit");o(K5e,"createBaseSemanticVisitorConstructor");E(K5e,"createBaseSemanticVisitorConstructor");o(Z5e,"createBaseVisitorConstructorWithDefaults");E(Z5e,"createBaseVisitorConstructorWithDefaults");(function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"})(zG||(zG={}));o(Q5e,"validateVisitor");E(Q5e,"validateVisitor");o(J5e,"validateMissingCstMethods");E(J5e,"validateMissingCstMethods");eCt=class{static{o(this,"TreeBuilder")}static{E(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=wr(e,"nodeLocationTracking")?e.nodeLocationTracking:Qh.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Da,this.cstFinallyStateUpdate=Da,this.cstPostTerminal=Da,this.cstPostNonTerminal=Da,this.cstPostRule=Da;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=FG,this.setNodeLocationFromNode=FG,this.cstPostRule=Da,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=$G,this.setNodeLocationFromNode=$G,this.cstPostRule=Da,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=Da,this.setInitialNodeLocation=Da;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?(r.endOffset=t.endOffset,r.endLine=t.endLine,r.endColumn=t.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)}cstPostRuleOnlyOffset(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?r.endOffset=t.endOffset:r.startOffset=NaN}cstPostTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];Y5e(r,t,e),this.setNodeLocationFromToken(r.location,t)}cstPostNonTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];j5e(r,t,e),this.setNodeLocationFromNode(r.location,e.location)}getBaseCstVisitorConstructor(){if(Kh(this.baseCstVisitorConstructor)){let e=K5e(this.className,jo(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(Kh(this.baseCstVisitorWithDefaultsConstructor)){let e=Z5e(this.className,jo(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},tCt=class{static{o(this,"LexerAdapter")}static{E(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):tR}LA(e){let t=this.currIdx+e;return t<0||this.tokVectorLength<=t?tR:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},rCt=class{static{o(this,"RecognizerApi")}static{E(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,t,r){return this.consumeInternal(t,e,r)}subrule(e,t,r){return this.subruleInternal(t,e,r)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,r=rR){if(qs(this.definedRulesNames,e)){let a={message:Wg.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Vs.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);let n=this.defineRule(e,t,r);return this[e]=n,n}OVERRIDE_RULE(e,t,r=rR){let n=E5e(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(n);let i=this.defineRule(e,t,r);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);let r=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if(nw(n))return!1;throw n}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return C3e(ha(this.gastProductionsCache))}},nCt=class{static{o(this,"RecognizerEngine")}static{E(this,"RecognizerEngine")}initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=rw,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},wr(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if(un(e)){if(ei(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if(un(e))this.tokensMap=Ko(e,(i,a)=>(i[a.name]=a,i),{});else if(wr(e,"modes")&&Ec(Sc(ha(e.modes)),u5e)){let i=Sc(ha(e.modes)),a=Cq(i);this.tokensMap=Ko(a,(s,l)=>(s[l.name]=l,s),{})}else if(Dl(e))this.tokensMap=Ya(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=pp;let r=wr(e,"modes")?Sc(ha(e.modes)):ha(e),n=Ec(r,i=>ei(i.categoryMatches));this.tokenMatcher=n?rw:$v,Fv(ha(this.tokensMap))}defineRule(e,t,r){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let n=wr(r,"resyncEnabled")?r.resyncEnabled:rR.resyncEnabled,i=wr(r,"recoveryValueFunc")?r.recoveryValueFunc:rR.recoveryValueFunc,a=this.ruleShortNameIdx<a.call(this)&&s.call(this),"lookAheadFunc")}}else i=e;if(n.call(this)===!0)return i.call(this)}atLeastOneInternal(e,t){let r=this.getKeyForAutomaticLookahead(OG,e);return this.atLeastOneInternalLogic(e,t,r)}atLeastOneInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),i;if(typeof t!="function"){i=t.DEF;let a=t.GATE;if(a!==void 0){let s=n;n=E(()=>a.call(this)&&s.call(this),"lookAheadFunc")}}else i=t;if(n.call(this)===!0){let a=this.doSingleRepetition(i);for(;n.call(this)===!0&&a===!0;)a=this.doSingleRepetition(i)}else throw this.raiseEarlyExitException(e,wi.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],n,OG,e,zTt)}atLeastOneSepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(h6,e);this.atLeastOneSepFirstInternalLogic(e,t,r)}atLeastOneSepFirstInternalLogic(e,t,r){let n=t.DEF,i=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let s=E(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),i)===!0;)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,s,n,RCe],s,h6,e,RCe)}else throw this.raiseEarlyExitException(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)}manyInternal(e,t){let r=this.getKeyForAutomaticLookahead(PG,e);return this.manyInternalLogic(e,t,r)}manyInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),i;if(typeof t!="function"){i=t.DEF;let s=t.GATE;if(s!==void 0){let l=n;n=E(()=>s.call(this)&&l.call(this),"lookaheadFunction")}}else i=t;let a=!0;for(;n.call(this)===!0&&a===!0;)a=this.doSingleRepetition(i);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],n,PG,e,FTt,a)}manySepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(BG,e);this.manySepFirstInternalLogic(e,t,r)}manySepFirstInternalLogic(e,t,r){let n=t.DEF,i=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let s=E(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),i)===!0;)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,s,n,ACe],s,BG,e,ACe)}}repetitionSepSecondInternal(e,t,r,n,i){for(;r();)this.CONSUME(t),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,r,n,i],r,h6,e,i)}doSingleRepetition(e){let t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){let r=this.getKeyForAutomaticLookahead(q5e,t),n=un(e)?e:e.DEF,a=this.getLaFuncFromCache(r).call(this,n);if(a!==void 0)return n[a].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new HTt(t,e))}}subruleInternal(e,t,r){let n;try{let i=r!==void 0?r.ARGS:void 0;return this.subruleIdx=t,n=e.apply(this,i),this.cstPostNonTerminal(n,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),n}catch(i){throw this.subruleInternalError(i,r,e.ruleName)}}subruleInternalError(e,t,r){throw nw(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:r),delete e.partialCstResult),e}consumeInternal(e,t,r){let n;try{let i=this.LA(1);this.tokenMatcher(i,e)===!0?(this.consumeToken(),n=i):this.consumeInternalError(e,i,r)}catch(i){n=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,n),n}consumeInternalError(e,t,r){let n,i=this.LA(0);throw r!==void 0&&r.ERR_MSG?n=r.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new G5e(n,t,i))}consumeInternalRecovery(e,t,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){let n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(i){throw i.name===V5e?r:i}}else throw r}saveRecogState(){let e=this.errors,t=Ya(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),pp)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},iCt=class{static{o(this,"ErrorHandler")}static{E(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=wr(e,"errorMessageProvider")?e.errorMessageProvider:Qh.errorMessageProvider}SAVE_ERROR(e){if(nw(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:Ya(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return Ya(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],s=Lw(e,i,t,this.maxLookahead)[0],l=[];for(let h=1;h<=this.maxLookahead;h++)l.push(this.LA(h));let u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:s,actual:l,previous:this.LA(0),customUserDescription:r,ruleName:n});throw this.SAVE_ERROR(new UTt(u,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){let r=this.getCurrRuleFullName(),n=this.getGAstProductions()[r],i=_w(e,n,this.maxLookahead),a=[];for(let u=1;u<=this.maxLookahead;u++)a.push(this.LA(u));let s=this.LA(0),l=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:i,actual:a,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new qTt(l,this.LA(1),s))}},aCt=class{static{o(this,"ContentAssist")}static{E(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,t){let r=this.gastProductionsCache[e];if(Kh(r))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Mq([r],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let t=Rc(e.ruleStack),n=this.getGAstProductions()[t];return new $Tt(n,e).startWalking()}},JR={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(JR);_Ce=!0,LCe=Math.pow(2,bp)-1,eAe=xv({name:"RECORDING_PHASE_TOKEN",pattern:Fs.NA});Fv([eAe]);tAe=Rw(eAe,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(tAe);sCt={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},oCt=class{static{o(this,"GastRecorder")}static{E(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let t=e>0?e:"";this[`CONSUME${t}`]=function(r,n){return this.consumeInternalRecord(r,e,n)},this[`SUBRULE${t}`]=function(r,n){return this.subruleInternalRecord(r,e,n)},this[`OPTION${t}`]=function(r){return this.optionInternalRecord(r,e)},this[`OR${t}`]=function(r){return this.orInternalRecord(r,e)},this[`MANY${t}`]=function(r){this.manyInternalRecord(e,r)},this[`MANY_SEP${t}`]=function(r){this.manySepFirstInternalRecord(e,r)},this[`AT_LEAST_ONE${t}`]=function(r){this.atLeastOneInternalRecord(e,r)},this[`AT_LEAST_ONE_SEP${t}`]=function(r){this.atLeastOneSepFirstInternalRecord(e,r)}}this.consume=function(e,t,r){return this.consumeInternalRecord(t,e,r)},this.subrule=function(e,t,r){return this.subruleInternalRecord(t,e,r)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let t=0;t<10;t++){let r=t>0?t:"";delete e[`CONSUME${r}`],delete e[`SUBRULE${r}`],delete e[`OPTION${r}`],delete e[`OR${r}`],delete e[`MANY${r}`],delete e[`MANY_SEP${r}`],delete e[`AT_LEAST_ONE${r}`],delete e[`AT_LEAST_ONE_SEP${r}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return tR}topLevelRuleRecord(e,t){try{let r=new Pv({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),t.call(this),this.recordingProdStack.pop(),r}catch(r){if(r.KNOWN_RECORDER_ERROR!==!0)try{r.message=r.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw r}throw r}}optionInternalRecord(e,t){return nv.call(this,Ua,e,t)}atLeastOneInternalRecord(e,t){nv.call(this,Zo,t,e)}atLeastOneSepFirstInternalRecord(e,t){nv.call(this,Qo,t,e,_Ce)}manyInternalRecord(e,t){nv.call(this,Mi,t,e)}manySepFirstInternalRecord(e,t){nv.call(this,wo,t,e,_Ce)}orInternalRecord(e,t){return rAe.call(this,e,t)}subruleInternalRecord(e,t,r){if(iw(t),!e||wr(e,"ruleName")===!1){let s=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let n=Xg(this.recordingProdStack),i=e.ruleName,a=new Gs({idx:t,nonTerminalName:i,label:r?.LABEL,referencedRule:void 0});return n.definition.push(a),this.outputCst?sCt:JR}consumeInternalRecord(e,t,r){if(iw(t),!Lq(e)){let a=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw a.KNOWN_RECORDER_ERROR=!0,a}let n=Xg(this.recordingProdStack),i=new ci({idx:t,terminalType:e,label:r?.LABEL});return n.definition.push(i),tAe}};o(nv,"recordProd");E(nv,"recordProd");o(rAe,"recordOrProd");E(rAe,"recordOrProd");o(GG,"getIdxSuffix");E(GG,"getIdxSuffix");o(iw,"assertMethodIdxIsValid");E(iw,"assertMethodIdxIsValid");lCt=class{static{o(this,"PerformanceTracer")}static{E(this,"PerformanceTracer")}initPerformanceTracer(e){if(wr(e,"traceInitPerf")){let t=e.traceInitPerf,r=typeof t=="number";this.traceInitMaxIdent=r?t:1/0,this.traceInitPerf=r?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Qh.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;let r=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:n,value:i}=kq(t),a=n>10?console.warn:console.log;return this.traceInitIndent time: ${n}ms`),this.traceInitIndent--,i}else return t()}};o(nAe,"applyMixins");E(nAe,"applyMixins");tR=Rw(pp,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(tR);Qh=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:pv,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),rR=Object.freeze({recoveryValueFunc:E(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(Vs||(Vs={}));o(VG,"EMPTY_ALT");E(VG,"EMPTY_ALT");Gq=class iAe{static{o(this,"_Parser")}static{E(this,"Parser")}static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{Sq(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ir(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=N5e({rules:ha(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(ei(n)&&this.skipValidations===!1){let i=P5e({rules:ha(this.gastProductionsCache),tokenTypes:ha(this.tokensMap),errMsgProvider:Wg,grammarName:r}),a=T5e({lookaheadStrategy:this.lookaheadStrategy,rules:ha(this.gastProductionsCache),tokenTypes:ha(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),ei(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=_3e(ha(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:ha(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(ha(this.gastProductionsCache))})),!iAe.DEFER_DEFINITION_ERRORS_HANDLING&&!ei(this.definitionErrors))throw t=hr(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: + ${t.join(` +------------------------------- +`)}`)})}constructor(t,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(t,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),wr(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=wr(r,"skipValidations")?r.skipValidations:Qh.skipValidations}};Gq.DEFER_DEFINITION_ERRORS_HANDLING=!1;nAe(Gq,[jTt,ZTt,eCt,tCt,nCt,rCt,iCt,aCt,oCt,lCt]);cCt=class extends Gq{static{o(this,"EmbeddedActionsParser")}static{E(this,"EmbeddedActionsParser")}constructor(e,t=Qh){let r=Ya(t);r.outputCst=!1,super(e,r)}};o(aAe,"arrayMap2");E(aAe,"arrayMap");sAe=aAe;o(oAe,"listCacheClear2");E(oAe,"listCacheClear");uCt=oAe;o(lAe,"eq2");E(lAe,"eq");cAe=lAe;o(uAe,"assocIndexOf2");E(uAe,"assocIndexOf");e_=uAe,hCt=Array.prototype,dCt=hCt.splice;o(hAe,"listCacheDelete2");E(hAe,"listCacheDelete");fCt=hAe;o(dAe,"listCacheGet2");E(dAe,"listCacheGet");pCt=dAe;o(fAe,"listCacheHas2");E(fAe,"listCacheHas");mCt=fAe;o(pAe,"listCacheSet2");E(pAe,"listCacheSet");gCt=pAe;o(d0,"ListCache2");E(d0,"ListCache");d0.prototype.clear=uCt;d0.prototype.delete=fCt;d0.prototype.get=pCt;d0.prototype.has=mCt;d0.prototype.set=gCt;t_=d0;o(mAe,"stackClear2");E(mAe,"stackClear");yCt=mAe;o(gAe,"stackDelete2");E(gAe,"stackDelete");vCt=gAe;o(yAe,"stackGet2");E(yAe,"stackGet");xCt=yAe;o(vAe,"stackHas2");E(vAe,"stackHas");bCt=vAe,TCt=typeof global=="object"&&global&&global.Object===Object&&global,xAe=TCt,CCt=typeof self=="object"&&self&&self.Object===Object&&self,wCt=xAe||CCt||Function("return this")(),nd=wCt,kCt=nd.Symbol,$u=kCt,bAe=Object.prototype,SCt=bAe.hasOwnProperty,ECt=bAe.toString,uC=$u?$u.toStringTag:void 0;o(TAe,"getRawTag2");E(TAe,"getRawTag");ACt=TAe,RCt=Object.prototype,_Ct=RCt.toString;o(CAe,"objectToString2");E(CAe,"objectToString");LCt=CAe,DCt="[object Null]",ICt="[object Undefined]",DCe=$u?$u.toStringTag:void 0;o(wAe,"baseGetTag2");E(wAe,"baseGetTag");zv=wAe;o(kAe,"isObject2");E(kAe,"isObject");Vq=kAe,MCt="[object AsyncFunction]",NCt="[object Function]",PCt="[object GeneratorFunction]",OCt="[object Proxy]";o(SAe,"isFunction2");E(SAe,"isFunction");EAe=SAe,BCt=nd["__core-js_shared__"],iz=BCt,ICe=(function(){var e=/[^.]+$/.exec(iz&&iz.keys&&iz.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(AAe,"isMasked2");E(AAe,"isMasked");$Ct=AAe,FCt=Function.prototype,zCt=FCt.toString;o(RAe,"toSource2");E(RAe,"toSource");f0=RAe,GCt=/[\\^$.*+?()[\]{}|]/g,VCt=/^\[object .+?Constructor\]$/,WCt=Function.prototype,qCt=Object.prototype,HCt=WCt.toString,UCt=qCt.hasOwnProperty,YCt=RegExp("^"+HCt.call(UCt).replace(GCt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(_Ae,"baseIsNative2");E(_Ae,"baseIsNative");jCt=_Ae;o(LAe,"getValue2");E(LAe,"getValue");XCt=LAe;o(DAe,"getNative2");E(DAe,"getNative");Gv=DAe,KCt=Gv(nd,"Map"),aw=KCt,ZCt=Gv(Object,"create"),sw=ZCt;o(IAe,"hashClear2");E(IAe,"hashClear");QCt=IAe;o(MAe,"hashDelete2");E(MAe,"hashDelete");JCt=MAe,ewt="__lodash_hash_undefined__",twt=Object.prototype,rwt=twt.hasOwnProperty;o(NAe,"hashGet2");E(NAe,"hashGet");nwt=NAe,iwt=Object.prototype,awt=iwt.hasOwnProperty;o(PAe,"hashHas2");E(PAe,"hashHas");swt=PAe,owt="__lodash_hash_undefined__";o(OAe,"hashSet2");E(OAe,"hashSet");lwt=OAe;o(p0,"Hash2");E(p0,"Hash");p0.prototype.clear=QCt;p0.prototype.delete=JCt;p0.prototype.get=nwt;p0.prototype.has=swt;p0.prototype.set=lwt;MCe=p0;o(BAe,"mapCacheClear2");E(BAe,"mapCacheClear");cwt=BAe;o($Ae,"isKeyable2");E($Ae,"isKeyable");uwt=$Ae;o(FAe,"getMapData2");E(FAe,"getMapData");r_=FAe;o(zAe,"mapCacheDelete2");E(zAe,"mapCacheDelete");hwt=zAe;o(GAe,"mapCacheGet2");E(GAe,"mapCacheGet");dwt=GAe;o(VAe,"mapCacheHas2");E(VAe,"mapCacheHas");fwt=VAe;o(WAe,"mapCacheSet2");E(WAe,"mapCacheSet");pwt=WAe;o(m0,"MapCache2");E(m0,"MapCache");m0.prototype.clear=cwt;m0.prototype.delete=hwt;m0.prototype.get=dwt;m0.prototype.has=fwt;m0.prototype.set=pwt;n_=m0,mwt=200;o(qAe,"stackSet2");E(qAe,"stackSet");gwt=qAe;o(g0,"Stack2");E(g0,"Stack");g0.prototype.clear=yCt;g0.prototype.delete=vCt;g0.prototype.get=xCt;g0.prototype.has=bCt;g0.prototype.set=gwt;f6=g0,ywt="__lodash_hash_undefined__";o(HAe,"setCacheAdd2");E(HAe,"setCacheAdd");vwt=HAe;o(UAe,"setCacheHas2");E(UAe,"setCacheHas");xwt=UAe;o(ow,"SetCache2");E(ow,"SetCache");ow.prototype.add=ow.prototype.push=vwt;ow.prototype.has=xwt;YAe=ow;o(jAe,"arraySome2");E(jAe,"arraySome");bwt=jAe;o(XAe,"cacheHas2");E(XAe,"cacheHas");KAe=XAe,Twt=1,Cwt=2;o(ZAe,"equalArrays2");E(ZAe,"equalArrays");QAe=ZAe,wwt=nd.Uint8Array,NCe=wwt;o(JAe,"mapToArray2");E(JAe,"mapToArray");kwt=JAe;o(e6e,"setToArray2");E(e6e,"setToArray");Wq=e6e,Swt=1,Ewt=2,Awt="[object Boolean]",Rwt="[object Date]",_wt="[object Error]",Lwt="[object Map]",Dwt="[object Number]",Iwt="[object RegExp]",Mwt="[object Set]",Nwt="[object String]",Pwt="[object Symbol]",Owt="[object ArrayBuffer]",Bwt="[object DataView]",PCe=$u?$u.prototype:void 0,az=PCe?PCe.valueOf:void 0;o(t6e,"equalByTag2");E(t6e,"equalByTag");$wt=t6e;o(r6e,"arrayPush2");E(r6e,"arrayPush");n6e=r6e,Fwt=Array.isArray,Ws=Fwt;o(i6e,"baseGetAllKeys2");E(i6e,"baseGetAllKeys");zwt=i6e;o(a6e,"arrayFilter2");E(a6e,"arrayFilter");s6e=a6e;o(o6e,"stubArray2");E(o6e,"stubArray");Gwt=o6e,Vwt=Object.prototype,Wwt=Vwt.propertyIsEnumerable,OCe=Object.getOwnPropertySymbols,qwt=OCe?function(e){return e==null?[]:(e=Object(e),s6e(OCe(e),function(t){return Wwt.call(e,t)}))}:Gwt,Hwt=qwt;o(l6e,"baseTimes2");E(l6e,"baseTimes");Uwt=l6e;o(c6e,"isObjectLike2");E(c6e,"isObjectLike");Lv=c6e,Ywt="[object Arguments]";o(u6e,"baseIsArguments2");E(u6e,"baseIsArguments");BCe=u6e,h6e=Object.prototype,jwt=h6e.hasOwnProperty,Xwt=h6e.propertyIsEnumerable,Kwt=BCe((function(){return arguments})())?BCe:function(e){return Lv(e)&&jwt.call(e,"callee")&&!Xwt.call(e,"callee")},i_=Kwt;o(d6e,"stubFalse2");E(d6e,"stubFalse");Zwt=d6e,f6e=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$Ce=f6e&&typeof module=="object"&&module&&!module.nodeType&&module,Qwt=$Ce&&$Ce.exports===f6e,FCe=Qwt?nd.Buffer:void 0,Jwt=FCe?FCe.isBuffer:void 0,ekt=Jwt||Zwt,nR=ekt,tkt=9007199254740991,rkt=/^(?:0|[1-9]\d*)$/;o(p6e,"isIndex2");E(p6e,"isIndex");m6e=p6e,nkt=9007199254740991;o(g6e,"isLength2");E(g6e,"isLength");qq=g6e,ikt="[object Arguments]",akt="[object Array]",skt="[object Boolean]",okt="[object Date]",lkt="[object Error]",ckt="[object Function]",ukt="[object Map]",hkt="[object Number]",dkt="[object Object]",fkt="[object RegExp]",pkt="[object Set]",mkt="[object String]",gkt="[object WeakMap]",ykt="[object ArrayBuffer]",vkt="[object DataView]",xkt="[object Float32Array]",bkt="[object Float64Array]",Tkt="[object Int8Array]",Ckt="[object Int16Array]",wkt="[object Int32Array]",kkt="[object Uint8Array]",Skt="[object Uint8ClampedArray]",Ekt="[object Uint16Array]",Akt="[object Uint32Array]",li={};li[xkt]=li[bkt]=li[Tkt]=li[Ckt]=li[wkt]=li[kkt]=li[Skt]=li[Ekt]=li[Akt]=!0;li[ikt]=li[akt]=li[ykt]=li[skt]=li[vkt]=li[okt]=li[lkt]=li[ckt]=li[ukt]=li[hkt]=li[dkt]=li[fkt]=li[pkt]=li[mkt]=li[gkt]=!1;o(y6e,"baseIsTypedArray2");E(y6e,"baseIsTypedArray");Rkt=y6e;o(v6e,"baseUnary2");E(v6e,"baseUnary");_kt=v6e,x6e=typeof exports=="object"&&exports&&!exports.nodeType&&exports,VC=x6e&&typeof module=="object"&&module&&!module.nodeType&&module,Lkt=VC&&VC.exports===x6e,sz=Lkt&&xAe.process,Dkt=(function(){try{var e=VC&&VC.require&&VC.require("util").types;return e||sz&&sz.binding&&sz.binding("util")}catch{}})(),zCe=Dkt,GCe=zCe&&zCe.isTypedArray,Ikt=GCe?_kt(GCe):Rkt,Hq=Ikt,Mkt=Object.prototype,Nkt=Mkt.hasOwnProperty;o(b6e,"arrayLikeKeys2");E(b6e,"arrayLikeKeys");Pkt=b6e,Okt=Object.prototype;o(T6e,"isPrototype2");E(T6e,"isPrototype");C6e=T6e;o(w6e,"overArg2");E(w6e,"overArg");Bkt=w6e,$kt=Bkt(Object.keys,Object),Fkt=$kt,zkt=Object.prototype,Gkt=zkt.hasOwnProperty;o(k6e,"baseKeys2");E(k6e,"baseKeys");S6e=k6e;o(E6e,"isArrayLike2");E(E6e,"isArrayLike");a_=E6e;o(A6e,"keys2");E(A6e,"keys");Uq=A6e;o(R6e,"getAllKeys2");E(R6e,"getAllKeys");VCe=R6e,Vkt=1,Wkt=Object.prototype,qkt=Wkt.hasOwnProperty;o(_6e,"equalObjects2");E(_6e,"equalObjects");Hkt=_6e,Ukt=Gv(nd,"DataView"),WG=Ukt,Ykt=Gv(nd,"Promise"),qG=Ykt,jkt=Gv(nd,"Set"),bv=jkt,Xkt=Gv(nd,"WeakMap"),HG=Xkt,WCe="[object Map]",Kkt="[object Object]",qCe="[object Promise]",HCe="[object Set]",UCe="[object WeakMap]",YCe="[object DataView]",Zkt=f0(WG),Qkt=f0(aw),Jkt=f0(qG),eSt=f0(bv),tSt=f0(HG),mg=zv;(WG&&mg(new WG(new ArrayBuffer(1)))!=YCe||aw&&mg(new aw)!=WCe||qG&&mg(qG.resolve())!=qCe||bv&&mg(new bv)!=HCe||HG&&mg(new HG)!=UCe)&&(mg=E(function(e){var t=zv(e),r=t==Kkt?e.constructor:void 0,n=r?f0(r):"";if(n)switch(n){case Zkt:return YCe;case Qkt:return WCe;case Jkt:return qCe;case eSt:return HCe;case tSt:return UCe}return t},"getTag"));UG=mg,rSt=1,jCe="[object Arguments]",XCe="[object Array]",BA="[object Object]",nSt=Object.prototype,KCe=nSt.hasOwnProperty;o(L6e,"baseIsEqualDeep2");E(L6e,"baseIsEqualDeep");iSt=L6e;o(Yq,"baseIsEqual2");E(Yq,"baseIsEqual");D6e=Yq,aSt=1,sSt=2;o(I6e,"baseIsMatch2");E(I6e,"baseIsMatch");oSt=I6e;o(M6e,"isStrictComparable2");E(M6e,"isStrictComparable");N6e=M6e;o(P6e,"getMatchData2");E(P6e,"getMatchData");lSt=P6e;o(O6e,"matchesStrictComparable2");E(O6e,"matchesStrictComparable");B6e=O6e;o($6e,"baseMatches2");E($6e,"baseMatches");cSt=$6e,uSt="[object Symbol]";o(F6e,"isSymbol2");E(F6e,"isSymbol");s_=F6e,hSt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dSt=/^\w*$/;o(z6e,"isKey2");E(z6e,"isKey");jq=z6e,fSt="Expected a function";o(o_,"memoize2");E(o_,"memoize");o_.Cache=n_;pSt=o_,mSt=500;o(G6e,"memoizeCapped2");E(G6e,"memoizeCapped");gSt=G6e,ySt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vSt=/\\(\\)?/g,xSt=gSt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ySt,function(r,n,i,a){t.push(i?a.replace(vSt,"$1"):n||r)}),t}),bSt=xSt,TSt=1/0,ZCe=$u?$u.prototype:void 0,QCe=ZCe?ZCe.toString:void 0;o(Xq,"baseToString2");E(Xq,"baseToString");CSt=Xq;o(V6e,"toString3");E(V6e,"toString");wSt=V6e;o(W6e,"castPath2");E(W6e,"castPath");q6e=W6e,kSt=1/0;o(H6e,"toKey2");E(H6e,"toKey");l_=H6e;o(U6e,"baseGet2");E(U6e,"baseGet");Y6e=U6e;o(j6e,"get2");E(j6e,"get");SSt=j6e;o(X6e,"baseHasIn2");E(X6e,"baseHasIn");ESt=X6e;o(K6e,"hasPath2");E(K6e,"hasPath");ASt=K6e;o(Z6e,"hasIn2");E(Z6e,"hasIn");RSt=Z6e,_St=1,LSt=2;o(Q6e,"baseMatchesProperty2");E(Q6e,"baseMatchesProperty");DSt=Q6e;o(J6e,"identity2");E(J6e,"identity");Kq=J6e;o(eRe,"baseProperty2");E(eRe,"baseProperty");ISt=eRe;o(tRe,"basePropertyDeep2");E(tRe,"basePropertyDeep");MSt=tRe;o(rRe,"property2");E(rRe,"property");NSt=rRe;o(nRe,"baseIteratee2");E(nRe,"baseIteratee");c_=nRe;o(iRe,"createBaseFor2");E(iRe,"createBaseFor");PSt=iRe,OSt=PSt(),BSt=OSt;o(aRe,"baseForOwn2");E(aRe,"baseForOwn");$St=aRe;o(sRe,"createBaseEach2");E(sRe,"createBaseEach");FSt=sRe,zSt=FSt($St),u_=zSt;o(oRe,"baseMap2");E(oRe,"baseMap");GSt=oRe;o(lRe,"map2");E(lRe,"map");qh=lRe;o(cRe,"baseFilter2");E(cRe,"baseFilter");VSt=cRe;o(uRe,"filter2");E(uRe,"filter");WSt=uRe;o(Zg,"buildATNKey");E(Zg,"buildATNKey");mp=1,qSt=2,hRe=4,dRe=5,Dw=7,HSt=8,USt=9,YSt=10,jSt=11,fRe=12,Zq=class{static{o(this,"AbstractTransition")}static{E(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},Qq=class extends Zq{static{o(this,"AtomTransition")}static{E(this,"AtomTransition")}constructor(e,t){super(e),this.tokenType=t}},pRe=class extends Zq{static{o(this,"EpsilonTransition")}static{E(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},Jq=class extends Zq{static{o(this,"RuleTransition")}static{E(this,"RuleTransition")}constructor(e,t,r){super(e),this.rule=t,this.followState=r}isEpsilon(){return!0}};o(mRe,"createATN");E(mRe,"createATN");o(gRe,"createRuleStartAndStopATNStates");E(gRe,"createRuleStartAndStopATNStates");o(eH,"atom");E(eH,"atom");o(yRe,"repetition");E(yRe,"repetition");o(vRe,"repetitionSep");E(vRe,"repetitionSep");o(xRe,"repetitionMandatory");E(xRe,"repetitionMandatory");o(bRe,"repetitionMandatorySep");E(bRe,"repetitionMandatorySep");o(TRe,"alternation");E(TRe,"alternation");o(CRe,"option");E(CRe,"option");o(Tp,"block");E(Tp,"block");o(tH,"plus");E(tH,"plus");o(rH,"star");E(rH,"star");o(wRe,"optional");E(wRe,"optional");o(id,"defineDecisionState");E(id,"defineDecisionState");o(y0,"makeAlts");E(y0,"makeAlts");o(kRe,"getProdType2");E(kRe,"getProdType");o(SRe,"makeBlock");E(SRe,"makeBlock");o(h_,"tokenRef");E(h_,"tokenRef");o(ERe,"ruleRef");E(ERe,"ruleRef");o(ARe,"buildRuleHandle");E(ARe,"buildRuleHandle");o($i,"epsilon");E($i,"epsilon");o(da,"newState");E(da,"newState");o(d_,"addTransition");E(d_,"addTransition");o(RRe,"removeState");E(RRe,"removeState");iR={},YG=class{static{o(this,"ATNConfigSet")}static{E(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let t=nH(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return qh(this.configs,e=>e.alt)}get key(){let e="";for(let t in this.map)e+=t+":";return e}};o(nH,"getATNConfigKey");E(nH,"getATNConfigKey");o(_Re,"baseExtremum");E(_Re,"baseExtremum");XSt=_Re;o(LRe,"baseLt");E(LRe,"baseLt");KSt=LRe;o(DRe,"min");E(DRe,"min");ZSt=DRe,JCe=$u?$u.isConcatSpreadable:void 0;o(IRe,"isFlattenable2");E(IRe,"isFlattenable");QSt=IRe;o(iH,"baseFlatten2");E(iH,"baseFlatten");MRe=iH;o(NRe,"flatMap2");E(NRe,"flatMap");JSt=NRe;o(PRe,"baseFindIndex2");E(PRe,"baseFindIndex");eEt=PRe;o(ORe,"baseIsNaN2");E(ORe,"baseIsNaN");tEt=ORe;o(BRe,"strictIndexOf2");E(BRe,"strictIndexOf");rEt=BRe;o($Re,"baseIndexOf2");E($Re,"baseIndexOf");nEt=$Re;o(FRe,"arrayIncludes2");E(FRe,"arrayIncludes");iEt=FRe;o(zRe,"arrayIncludesWith2");E(zRe,"arrayIncludesWith");aEt=zRe;o(GRe,"noop2");E(GRe,"noop");sEt=GRe,oEt=1/0,lEt=bv&&1/Wq(new bv([,-0]))[1]==oEt?function(e){return new bv(e)}:sEt,cEt=lEt,uEt=200;o(VRe,"baseUniq2");E(VRe,"baseUniq");hEt=VRe;o(WRe,"uniqBy");E(WRe,"uniqBy");dEt=WRe;o(qRe,"flatten2");E(qRe,"flatten");fEt=qRe;o(HRe,"arrayEach2");E(HRe,"arrayEach");pEt=HRe;o(URe,"castFunction2");E(URe,"castFunction");mEt=URe;o(YRe,"forEach2");E(YRe,"forEach");oz=YRe,gEt="[object Map]",yEt="[object Set]",vEt=Object.prototype,xEt=vEt.hasOwnProperty;o(jRe,"isEmpty2");E(jRe,"isEmpty");bEt=jRe;o(XRe,"arrayReduce2");E(XRe,"arrayReduce");TEt=XRe;o(KRe,"baseReduce2");E(KRe,"baseReduce");CEt=KRe;o(ZRe,"reduce2");E(ZRe,"reduce");ewe=ZRe;o(QRe,"createDFACache");E(QRe,"createDFACache");JRe=class{static{o(this,"PredicateSet")}static{E(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="",t=this.predicates.length;for(let r=0;rconsole.log(r))}initialize(e){this.atn=mRe(e.rules),this.dfas=e_e(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:t,rule:r,hasPredicates:n,dynamicTokensEnabled:i}=e,a=this.dfas,s=this.logging,l=Zg(r,"Alternation",t),h=this.atn.decisionMap[l].decision,d=qh(MG({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:r}),f=>qh(f,p=>p[0]));if(jG(d,!1)&&!i){let f=ewe(d,(p,m,g)=>(oz(m,y=>{y&&(p[y.tokenTypeIdx]=g,oz(y.categoryMatches,v=>{p[v]=g}))}),p),{});return n?function(p){var m;let g=this.LA(1),y=f[g.tokenTypeIdx];if(p!==void 0&&y!==void 0){let v=(m=p[y])===null||m===void 0?void 0:m.GATE;if(v!==void 0&&v.call(this)===!1)return}return y}:function(){let p=this.LA(1);return f[p.tokenTypeIdx]}}else return n?function(f){let p=new JRe,m=f===void 0?0:f.length;for(let y=0;yqh(f,p=>p[0]));if(jG(d)&&d[0][0]&&!i){let f=d[0],p=fEt(f);if(p.length===1&&bEt(p[0].categoryMatches)){let g=p[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===g}}else{let m=ewe(p,(g,y)=>(y!==void 0&&(g[y.tokenTypeIdx]=!0,oz(y.categoryMatches,v=>{g[v]=!0})),g),{});return function(){let g=this.LA(1);return m[g.tokenTypeIdx]===!0}}}return function(){let f=p6.call(this,a,h,twe,s);return typeof f=="object"?!1:f===0}}};o(jG,"isLL1Sequence");E(jG,"isLL1Sequence");o(e_e,"initATNSimulator");E(e_e,"initATNSimulator");o(p6,"adaptivePredict");E(p6,"adaptivePredict");o(t_e,"performLookahead");E(t_e,"performLookahead");o(r_e,"computeLookaheadTarget");E(r_e,"computeLookaheadTarget");o(n_e,"reportLookaheadAmbiguity");E(n_e,"reportLookaheadAmbiguity");o(i_e,"buildAmbiguityError");E(i_e,"buildAmbiguityError");o(a_e,"getProductionDslName2");E(a_e,"getProductionDslName");o(s_e,"buildAdaptivePredictError");E(s_e,"buildAdaptivePredictError");o(o_e,"getExistingTargetState");E(o_e,"getExistingTargetState");o(l_e,"computeReachSet");E(l_e,"computeReachSet");o(c_e,"getReachableTarget");E(c_e,"getReachableTarget");o(u_e,"getUniqueAlt");E(u_e,"getUniqueAlt");o(aH,"newDFAState");E(aH,"newDFAState");o(XG,"addDFAEdge");E(XG,"addDFAEdge");o(sH,"addDFAState");E(sH,"addDFAState");o(h_e,"computeStartState");E(h_e,"computeStartState");o(lw,"closure");E(lw,"closure");o(d_e,"getEpsilonTarget");E(d_e,"getEpsilonTarget");o(f_e,"hasConfigInRuleStopState");E(f_e,"hasConfigInRuleStopState");o(p_e,"allConfigsInRuleStopStates");E(p_e,"allConfigsInRuleStopStates");o(m_e,"hasConflictTerminatingPrediction");E(m_e,"hasConflictTerminatingPrediction");o(g_e,"getConflictingAltSets");E(g_e,"getConflictingAltSets");o(y_e,"hasConflictingAltSet");E(y_e,"hasConflictingAltSet");o(v_e,"hasStateAssociatedWithOneAlt");E(v_e,"hasStateAssociatedWithOneAlt");hw();x_e=class{static{o(this,"CstNodeBuilder")}static{E(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]??this.rootNode}buildRootNode(e){return this.rootNode=new lH(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let t=new f_;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){let r=new aR(e.startOffset,e.image.length,XC(e),e.tokenType,!t);return r.grammarSource=t,r.root=this.rootNode,this.current.content.push(r),r}removeNode(e){let t=e.container;if(t){let r=t.content.indexOf(e);r>=0&&t.content.splice(r,1)}}addHiddenNodes(e){let t=[];for(let i of e){let a=new aR(i.startOffset,i.image.length,XC(i),i.tokenType,!0);a.root=this.rootNode,t.push(a)}let r=this.current,n=!1;if(r.content.length>0){r.content.push(...t);return}for(;r.container;){let i=r.container.content.indexOf(r);if(i>0){r.container.content.splice(i,0,...t),n=!0;break}r=r.container}n||this.rootNode.content.unshift(...t)}construct(e){let t=this.current;typeof e.$type=="string"&&!e.$infix&&(this.current.astNode=e),e.$cstNode=t;let r=this.nodeStack.pop();r?.content.length===0&&this.removeNode(r)}},oH=class{static{o(this,"AbstractCstNode")}static{E(this,"AbstractCstNode")}get hidden(){return!1}get astNode(){let e=typeof this._astNode?.$type=="string"?this._astNode:this.container?.astNode;if(!e)throw new Error("This node has no associated AST element");return e}set astNode(e){this._astNode=e}get text(){return this.root.fullText.substring(this.offset,this.end)}},aR=class extends oH{static{o(this,"LeafCstNodeImpl")}static{E(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,r,n,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=n,this._length=t,this._range=r}},f_=class extends oH{static{o(this,"CompositeCstNodeImpl")}static{E(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new kEt(this)}get offset(){return this.firstNonHiddenNode?.offset??0}get length(){return this.end-this.offset}get end(){return this.lastNonHiddenNode?.end??0}get range(){let e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(this._rangeCache===void 0){let{range:r}=e,{range:n}=t;this._rangeCache={start:r.start,end:n.end.line=0;e--){let t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}},kEt=class b_e extends Array{static{o(this,"_CstNodeContainer")}static{E(this,"CstNodeContainer")}constructor(t){super(),this.parent=t,Object.setPrototypeOf(this,b_e.prototype)}push(...t){return this.addParents(t),super.push(...t)}unshift(...t){return this.addParents(t),super.unshift(...t)}splice(t,r,...n){return this.addParents(n),super.splice(t,r,...n)}addParents(t){for(let r of t)r.container=this.parent}},lH=class extends f_{static{o(this,"RootCstNodeImpl")}static{E(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}},sR=Symbol("Datatype");o(m6,"isDataTypeNode");E(m6,"isDataTypeNode");rwe="\u200B",T_e=E(e=>e.endsWith(rwe)?e:e+rwe,"withRuleSuffix"),cH=class{static{o(this,"AbstractLangiumParser")}static{E(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let t=this.lexer.definition,r=e.LanguageMetaData.mode==="production";e.shared.profilers.LangiumProfiler?.isActive("parsing")?this.wrapper=new EEt(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider},e.shared.profilers.LangiumProfiler.createTask("parsing",e.LanguageMetaData.languageId)):this.wrapper=new S_e(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider})}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},C_e=class extends cH{static{o(this,"LangiumParser")}static{E(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new x_e,this.stack=[],this.assignmentMap=new Map,this.operatorPrecedence=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){let r=this.computeRuleType(e),n;Sv(e)&&(n=e.name,this.registerPrecedenceMap(e));let i=this.wrapper.DEFINE_RULE(T_e(e.name),this.startImplementation(r,n,t).bind(this));return this.allRules.set(e.name,i),zs(e)&&e.entry&&(this.mainRule=i),i}registerPrecedenceMap(e){let t=e.name,r=new Map;for(let n=0;n0&&(t=this.construct()),t===void 0)throw new Error("No result from parser");if(this.stack.length>0)throw new Error("Parser stack is not empty after parsing");return t}startImplementation(e,t,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let a={$type:e};this.stack.push(a),e===sR?a.value="":t!==void 0&&(a.$infixName=t)}return r(n),i?this.construct():void 0}}extractHiddenTokens(e){let t=this.lexerResult.hidden;if(!t.length)return[];let r=e.startOffset;for(let n=0;nr)return t.splice(0,n);return t.splice(0,t.length)}consume(e,t,r){let n=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(n)){let i=this.extractHiddenTokens(n);this.nodeBuilder.addHiddenNodes(i);let a=this.nodeBuilder.buildLeafNode(n,r),{assignment:s,crossRef:l}=this.getAssignment(r),u=this.current;if(s){let h=Yh(r)?n.image:this.converter.convert(n.image,a);this.assign(s.operator,s.feature,h,a,l)}else if(m6(u)){let h=n.image;Yh(r)||(h=this.converter.convert(h,a).toString()),u.value+=h}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,t,r,n,i){let a;!this.isRecording()&&!r&&(a=this.nodeBuilder.buildCompositeNode(n));let s;try{s=this.wrapper.wrapSubrule(e,t,i)}finally{this.isRecording()||(s===void 0&&!r&&(s=this.construct()),s!==void 0&&a&&a.length>0&&this.performSubruleAssignment(s,n,a))}}performSubruleAssignment(e,t,r){let{assignment:n,crossRef:i}=this.getAssignment(t);if(n)this.assign(n.operator,n.feature,e,r,i);else if(!n){let a=this.current;if(m6(a))a.value+=e.toString();else if(typeof e=="object"&&e){let l=this.assignWithoutOverride(e,a);this.stack.pop(),this.stack.push(l)}}}action(e,t){if(!this.isRecording()){let r=this.current;if(t.feature&&t.operator){r=this.construct(),this.nodeBuilder.removeNode(r.$cstNode),this.nodeBuilder.buildCompositeNode(t).content.push(r.$cstNode);let i={$type:e};this.stack.push(i),this.assign(t.operator,t.feature,r,r.$cstNode)}else r.$type=e}}construct(){if(this.isRecording())return;let e=this.stack.pop();return this.nodeBuilder.construct(e),"$infixName"in e?this.constructInfix(e,this.operatorPrecedence.get(e.$infixName)):m6(e)?this.converter.convert(e.value,e.$cstNode):(oW(this.astReflection,e),e)}constructInfix(e,t){let r=e.parts;if(!Array.isArray(r)||r.length===0)return;let n=e.operators;if(!Array.isArray(n)||r.length<2)return r[0];let i=0,a=-1;for(let g=0;ga?(a=v.precedence,i=g):v.precedence===a&&(v.rightAssoc||(i=g))}let s=n.slice(0,i),l=n.slice(i+1),u=r.slice(0,i+1),h=r.slice(i+1),d={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:u,operators:s},f={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:h,operators:l},p=this.constructInfix(d,t),m=this.constructInfix(f,t);return{$type:e.$type,$cstNode:e.$cstNode,left:p,operator:n[i],right:m}}getAssignment(e){if(!this.assignmentMap.has(e)){let t=e0(e,Uh);this.assignmentMap.set(e,{assignment:t,crossRef:t&&r0(t.terminal)?t.terminal.isMulti?"multi":"single":void 0})}return this.assignmentMap.get(e)}assign(e,t,r,n,i){let a=this.current,s;switch(i==="single"&&typeof r=="string"?s=this.linker.buildReference(a,t,n,r):i==="multi"&&typeof r=="string"?s=this.linker.buildMultiReference(a,t,n,r):s=r,e){case"=":{a[t]=s;break}case"?=":{a[t]=!0;break}case"+=":Array.isArray(a[t])||(a[t]=[]),a[t].push(s)}}assignWithoutOverride(e,t){for(let[n,i]of Object.entries(t)){let a=e[n];a===void 0?e[n]=i:Array.isArray(a)&&Array.isArray(i)&&(i.push(...a),e[n]=i)}let r=e.$cstNode;return r&&(r.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},w_e=class{static{o(this,"AbstractParserErrorMessageProvider")}static{E(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return pv.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return pv.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return pv.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return pv.buildEarlyExitMessage(e)}},uH=class extends w_e{static{o(this,"LangiumParserErrorMessageProvider")}static{E(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},k_e=class extends cH{static{o(this,"LangiumCompletionParser")}static{E(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){let r=this.wrapper.DEFINE_RULE(T_e(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{let r=this.keepStackSize();try{e(t)}finally{this.resetStackSize(r)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,r){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,r,n,i){this.before(n),this.wrapper.wrapSubrule(e,t,i),this.after(n)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}},SEt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new uH},S_e=class extends cCt{static{o(this,"ChevrotainWrapper")}static{E(this,"ChevrotainWrapper")}constructor(e,t){let r=t&&"maxLookahead"in t;super(e,{...SEt,lookaheadStrategy:r?new Fq({maxLookahead:t.maxLookahead}):new wEt({logging:t.skipValidations?()=>{}:void 0}),...t})}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t,r){return this.RULE(e,t,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t,void 0)}wrapSubrule(e,t,r){return this.subrule(e,t,{ARGS:[r]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}rule(e){return e.call(this,{})}},EEt=class extends S_e{static{o(this,"ProfilerWrapper")}static{E(this,"ProfilerWrapper")}constructor(e,t,r){super(e,t),this.task=r}rule(e){this.task.start(),this.task.startSubTask(this.ruleName(e));try{return super.rule(e)}finally{this.task.stopSubTask(this.ruleName(e)),this.task.stop()}}ruleName(e){return e.ruleName}subrule(e,t,r){this.task.startSubTask(this.ruleName(t));try{return super.subrule(e,t,r)}finally{this.task.stopSubTask(this.ruleName(t))}}};o(p_,"createParser");E(p_,"createParser");o(E_e,"buildRules");E(E_e,"buildRules");o(A_e,"buildInfixRule");E(A_e,"buildInfixRule");o(gp,"buildElement");E(gp,"buildElement");o(R_e,"buildAction");E(R_e,"buildAction");o(__e,"buildRuleCall");E(__e,"buildRuleCall");o(L_e,"buildRuleCallPredicate");E(L_e,"buildRuleCallPredicate");o(Cc,"buildPredicate");E(Cc,"buildPredicate");o(D_e,"buildAlternatives");E(D_e,"buildAlternatives");o(I_e,"buildUnorderedGroup");E(I_e,"buildUnorderedGroup");o(M_e,"buildGroup");E(M_e,"buildGroup");o(cw,"getGuardCondition");E(cw,"getGuardCondition");o(hH,"buildCrossReference");E(hH,"buildCrossReference");o(N_e,"buildKeyword");E(N_e,"buildKeyword");o(dH,"wrap");E(dH,"wrap");o(m_,"getRule");E(m_,"getRule");o(P_e,"getRuleName");E(P_e,"getRuleName");o(oR,"getToken");E(oR,"getToken");o(fH,"createCompletionParser");E(fH,"createCompletionParser");o(pH,"createLangiumParser");E(pH,"createLangiumParser");o(mH,"prepareLangiumParser");E(mH,"prepareLangiumParser");g_=class{static{o(this,"DefaultTokenBuilder")}static{E(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,t){let r=Bn(_R(e,!1)),n=this.buildTerminalTokens(r),i=this.buildKeywordTokens(r,n,t);return i.push(...n),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(Il).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(e){let t=yw(e),r=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,n={name:e.name,PATTERN:r};return typeof r=="function"&&(n.LINE_BREAKS=!0),e.hidden&&(n.GROUP=RR(t)?Fs.SKIPPED:"hidden"),n}requiresCustomPattern(e){return!!(e.flags.includes("u")||e.flags.includes("s"))}regexPatternFunction(e){let t=new RegExp(e,e.flags+"y");return(r,n)=>(t.lastIndex=n,t.exec(r))}buildKeywordTokens(e,t,r){return e.filter(t0).flatMap(n=>td(n).filter(Yh)).distinct(n=>n.value).toArray().sort((n,i)=>i.value.length-n.value.length).map(n=>this.buildKeywordToken(n,t,!!r?.caseInsensitive))}buildKeywordToken(e,t,r){let n=this.buildKeywordPattern(e,r),i={name:e.value,PATTERN:n,LONGER_ALT:this.findLongerAlt(e,t)};return typeof n=="function"&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp(Nv(e.value),"i"):e.value}findLongerAlt(e,t){return t.reduce((r,n)=>{let i=n?.PATTERN;return i?.source&&zW("^"+i.source+"$",e.value)&&r.push(n),r},[])}},gH=class{static{o(this,"DefaultValueConverter")}static{E(this,"DefaultValueConverter")}convert(e,t){let r=t.grammarSource;if(r0(r)&&(r=HW(r)),jh(r)){let n=r.rule.ref;if(!n)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(n,e,t)}return e}runConverter(e,t,r){switch(e.name.toUpperCase()){case"INT":return Iu.convertInt(t);case"STRING":return Iu.convertString(t);case"ID":return Iu.convertID(t)}switch(eq(e)?.toLowerCase()){case"number":return Iu.convertNumber(t);case"boolean":return Iu.convertBoolean(t);case"bigint":return Iu.convertBigint(t);case"date":return Iu.convertDate(t);default:return t}}};(function(e){function t(h){let d="";for(let f=1;f{this.resolve=r=>(e(r),this),this.reject=r=>(t(r),this)})}},nwe=class KG{static{o(this,"_FullTextDocument")}static{E(this,"FullTextDocument")}constructor(t,r,n,i){this._uri=t,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){let r=this.offsetAt(t.start),n=this.offsetAt(t.end);return this._content.substring(r,n)}return this._content}update(t,r){for(let n of t)if(KG.isIncremental(n)){let i=xH(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,d=ZG(n.text,!1,a);if(u-l===d.length)for(let p=0,m=d.length;pt?i=s:n=s+1}let a=n-1;return t=this.ensureBeforeEOL(t,r[a]),{line:a,character:t-r[a]}}offsetAt(t){let r=this.getLineOffsets();if(t.line>=r.length)return this._content.length;if(t.line<0)return 0;let n=r[t.line];if(t.character<=0)return n;let i=t.line+1r&&vH(this._content.charCodeAt(t-1));)t--;return t}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(e){function t(i,a,s,l){return new nwe(i,a,s,l)}o(t,"create"),E(t,"create"),e.create=t;function r(i,a,s){if(i instanceof nwe)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),E(r,"update"),e.update=r;function n(i,a){let s=i.getText(),l=cR(a.map(B_e),(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),u=0,h=[];for(let d of l){let f=i.offsetAt(d.range.start);if(fu&&h.push(s.substring(u,f)),d.newText.length&&h.push(d.newText),u=i.offsetAt(d.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),E(n,"applyEdits"),e.applyEdits=n})(lR||(lR={}));o(cR,"mergeSort");E(cR,"mergeSort");o(ZG,"computeLineOffsets");E(ZG,"computeLineOffsets");o(vH,"isEOL");E(vH,"isEOL");o(xH,"getWellformedRange");E(xH,"getWellformedRange");o(B_e,"getWellformedEdit");E(B_e,"getWellformedEdit");(()=>{"use strict";var e={975:I=>{function _(D){if(typeof D!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(D))}o(_,"e2"),E(_,"e");function A(D,P){for(var B,O="",$=0,V=-1,G=0,z=0;z<=D.length;++z){if(z2){var W=O.lastIndexOf("/");if(W!==O.length-1){W===-1?(O="",$=0):$=(O=O.slice(0,W)).length-1-O.lastIndexOf("/"),V=z,G=0;continue}}else if(O.length===2||O.length===1){O="",$=0,V=z,G=0;continue}}P&&(O.length>0?O+="/..":O="..",$=2)}else O.length>0?O+="/"+D.slice(V+1,z):O=D.slice(V+1,z),$=z-V-1;V=z,G=0}else B===46&&G!==-1?++G:G=-1}return O}o(A,"r2"),E(A,"r");var M={resolve:E(function(){for(var D,P="",B=!1,O=arguments.length-1;O>=-1&&!B;O--){var $;O>=0?$=arguments[O]:(D===void 0&&(D=process.cwd()),$=D),_($),$.length!==0&&(P=$+"/"+P,B=$.charCodeAt(0)===47)}return P=A(P,!B),B?P.length>0?"/"+P:"/":P.length>0?P:"."},"resolve"),normalize:E(function(D){if(_(D),D.length===0)return".";var P=D.charCodeAt(0)===47,B=D.charCodeAt(D.length-1)===47;return(D=A(D,!P)).length!==0||P||(D="."),D.length>0&&B&&(D+="/"),P?"/"+D:D},"normalize"),isAbsolute:E(function(D){return _(D),D.length>0&&D.charCodeAt(0)===47},"isAbsolute"),join:E(function(){if(arguments.length===0)return".";for(var D,P=0;P0&&(D===void 0?D=B:D+="/"+B)}return D===void 0?".":M.normalize(D)},"join"),relative:E(function(D,P){if(_(D),_(P),D===P||(D=M.resolve(D))===(P=M.resolve(P)))return"";for(var B=1;Bz){if(P.charCodeAt(V+H)===47)return P.slice(V+H+1);if(H===0)return P.slice(V+H)}else $>z&&(D.charCodeAt(B+H)===47?W=H:H===0&&(W=0));break}var j=D.charCodeAt(B+H);if(j!==P.charCodeAt(V+H))break;j===47&&(W=H)}var Q="";for(H=B+W+1;H<=O;++H)H!==O&&D.charCodeAt(H)!==47||(Q.length===0?Q+="..":Q+="/..");return Q.length>0?Q+P.slice(V+W):(V+=W,P.charCodeAt(V)===47&&++V,P.slice(V))},"relative"),_makeLong:E(function(D){return D},"_makeLong"),dirname:E(function(D){if(_(D),D.length===0)return".";for(var P=D.charCodeAt(0),B=P===47,O=-1,$=!0,V=D.length-1;V>=1;--V)if((P=D.charCodeAt(V))===47){if(!$){O=V;break}}else $=!1;return O===-1?B?"/":".":B&&O===1?"//":D.slice(0,O)},"dirname"),basename:E(function(D,P){if(P!==void 0&&typeof P!="string")throw new TypeError('"ext" argument must be a string');_(D);var B,O=0,$=-1,V=!0;if(P!==void 0&&P.length>0&&P.length<=D.length){if(P.length===D.length&&P===D)return"";var G=P.length-1,z=-1;for(B=D.length-1;B>=0;--B){var W=D.charCodeAt(B);if(W===47){if(!V){O=B+1;break}}else z===-1&&(V=!1,z=B+1),G>=0&&(W===P.charCodeAt(G)?--G==-1&&($=B):(G=-1,$=z))}return O===$?$=z:$===-1&&($=D.length),D.slice(O,$)}for(B=D.length-1;B>=0;--B)if(D.charCodeAt(B)===47){if(!V){O=B+1;break}}else $===-1&&(V=!1,$=B+1);return $===-1?"":D.slice(O,$)},"basename"),extname:E(function(D){_(D);for(var P=-1,B=0,O=-1,$=!0,V=0,G=D.length-1;G>=0;--G){var z=D.charCodeAt(G);if(z!==47)O===-1&&($=!1,O=G+1),z===46?P===-1?P=G:V!==1&&(V=1):P!==-1&&(V=-1);else if(!$){B=G+1;break}}return P===-1||O===-1||V===0||V===1&&P===O-1&&P===B+1?"":D.slice(P,O)},"extname"),format:E(function(D){if(D===null||typeof D!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof D);return(function(P,B){var O=B.dir||B.root,$=B.base||(B.name||"")+(B.ext||"");return O?O===B.root?O+$:O+"/"+$:$})(0,D)},"format"),parse:E(function(D){_(D);var P={root:"",dir:"",base:"",ext:"",name:""};if(D.length===0)return P;var B,O=D.charCodeAt(0),$=O===47;$?(P.root="/",B=1):B=0;for(var V=-1,G=0,z=-1,W=!0,H=D.length-1,j=0;H>=B;--H)if((O=D.charCodeAt(H))!==47)z===-1&&(W=!1,z=H+1),O===46?V===-1?V=H:j!==1&&(j=1):V!==-1&&(j=-1);else if(!W){G=H+1;break}return V===-1||z===-1||j===0||j===1&&V===z-1&&V===G+1?z!==-1&&(P.base=P.name=G===0&&$?D.slice(1,z):D.slice(G,z)):(G===0&&$?(P.name=D.slice(1,V),P.base=D.slice(1,z)):(P.name=D.slice(G,V),P.base=D.slice(G,z)),P.ext=D.slice(V,z)),G>0?P.dir=D.slice(0,G-1):$&&(P.dir="/"),P},"parse"),sep:"/",delimiter:":",win32:null,posix:null};M.posix=M,I.exports=M}},t={};function r(I){var _=t[I];if(_!==void 0)return _.exports;var A=t[I]={exports:{}};return e[I](A,A.exports,r),A.exports}o(r,"r"),E(r,"r"),r.d=(I,_)=>{for(var A in _)r.o(_,A)&&!r.o(I,A)&&Object.defineProperty(I,A,{enumerable:!0,get:_[A]})},r.o=(I,_)=>Object.prototype.hasOwnProperty.call(I,_),r.r=I=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(I,"__esModule",{value:!0})};var n={};let i;r.r(n),r.d(n,{URI:E(()=>p,"URI"),Utils:E(()=>N,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(I,_){if(!I.scheme&&_)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${I.authority}", path: "${I.path}", query: "${I.query}", fragment: "${I.fragment}"}`);if(I.scheme&&!a.test(I.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(I.path){if(I.authority){if(!s.test(I.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(I.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"a"),E(u,"a");let h="",d="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"l")}static{E(this,"l")}static isUri(_){return _ instanceof p||!!_&&typeof _.authority=="string"&&typeof _.fragment=="string"&&typeof _.path=="string"&&typeof _.query=="string"&&typeof _.scheme=="string"&&typeof _.fsPath=="string"&&typeof _.with=="function"&&typeof _.toString=="function"}scheme;authority;path;query;fragment;constructor(_,A,M,D,P,B=!1){typeof _=="object"?(this.scheme=_.scheme||h,this.authority=_.authority||h,this.path=_.path||h,this.query=_.query||h,this.fragment=_.fragment||h):(this.scheme=(function(O,$){return O||$?O:"file"})(_,B),this.authority=A||h,this.path=(function(O,$){switch(O){case"https":case"http":case"file":$?$[0]!==d&&($=d+$):$=d}return $})(this.scheme,M||h),this.query=D||h,this.fragment=P||h,u(this,B))}get fsPath(){return b(this,!1)}with(_){if(!_)return this;let{scheme:A,authority:M,path:D,query:P,fragment:B}=_;return A===void 0?A=this.scheme:A===null&&(A=h),M===void 0?M=this.authority:M===null&&(M=h),D===void 0?D=this.path:D===null&&(D=h),P===void 0?P=this.query:P===null&&(P=h),B===void 0?B=this.fragment:B===null&&(B=h),A===this.scheme&&M===this.authority&&D===this.path&&P===this.query&&B===this.fragment?this:new g(A,M,D,P,B)}static parse(_,A=!1){let M=f.exec(_);return M?new g(M[2]||h,w(M[4]||h),w(M[5]||h),w(M[7]||h),w(M[9]||h),A):new g(h,h,h,h,h)}static file(_){let A=h;if(i&&(_=_.replace(/\\/g,d)),_[0]===d&&_[1]===d){let M=_.indexOf(d,2);M===-1?(A=_.substring(2),_=d):(A=_.substring(2,M),_=_.substring(M)||d)}return new g("file",A,_,h,h)}static from(_){let A=new g(_.scheme,_.authority,_.path,_.query,_.fragment);return u(A,!0),A}toString(_=!1){return T(this,_)}toJSON(){return this}static revive(_){if(_){if(_ instanceof p)return _;{let A=new g(_);return A._formatted=_.external,A._fsPath=_._sep===m?_.fsPath:null,A}}return _}}let m=i?1:void 0;class g extends p{static{o(this,"d")}static{E(this,"d")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(_=!1){return _?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let _={$mid:1};return this._fsPath&&(_.fsPath=this._fsPath,_._sep=m),this._formatted&&(_.external=this._formatted),this.path&&(_.path=this.path),this.scheme&&(_.scheme=this.scheme),this.authority&&(_.authority=this.authority),this.query&&(_.query=this.query),this.fragment&&(_.fragment=this.fragment),_}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(I,_,A){let M,D=-1;for(let P=0;P=97&&B<=122||B>=65&&B<=90||B>=48&&B<=57||B===45||B===46||B===95||B===126||_&&B===47||A&&B===91||A&&B===93||A&&B===58)D!==-1&&(M+=encodeURIComponent(I.substring(D,P)),D=-1),M!==void 0&&(M+=I.charAt(P));else{M===void 0&&(M=I.substr(0,P));let O=y[B];O!==void 0?(D!==-1&&(M+=encodeURIComponent(I.substring(D,P)),D=-1),M+=O):D===-1&&(D=P)}}return D!==-1&&(M+=encodeURIComponent(I.substring(D))),M!==void 0?M:I}o(v,"m"),E(v,"m");function x(I){let _;for(let A=0;A1&&I.scheme==="file"?`//${I.authority}${I.path}`:I.path.charCodeAt(0)===47&&(I.path.charCodeAt(1)>=65&&I.path.charCodeAt(1)<=90||I.path.charCodeAt(1)>=97&&I.path.charCodeAt(1)<=122)&&I.path.charCodeAt(2)===58?_?I.path.substr(1):I.path[1].toLowerCase()+I.path.substr(2):I.path,i&&(A=A.replace(/\//g,"\\")),A}o(b,"v"),E(b,"v");function T(I,_){let A=_?x:v,M="",{scheme:D,authority:P,path:B,query:O,fragment:$}=I;if(D&&(M+=D,M+=":"),(P||D==="file")&&(M+=d,M+=d),P){let V=P.indexOf("@");if(V!==-1){let G=P.substr(0,V);P=P.substr(V+1),V=G.lastIndexOf(":"),V===-1?M+=A(G,!1,!1):(M+=A(G.substr(0,V),!1,!1),M+=":",M+=A(G.substr(V+1),!1,!0)),M+="@"}P=P.toLowerCase(),V=P.lastIndexOf(":"),V===-1?M+=A(P,!1,!0):(M+=A(P.substr(0,V),!1,!0),M+=P.substr(V))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58){let V=B.charCodeAt(1);V>=65&&V<=90&&(B=`/${String.fromCharCode(V+32)}:${B.substr(3)}`)}else if(B.length>=2&&B.charCodeAt(1)===58){let V=B.charCodeAt(0);V>=65&&V<=90&&(B=`${String.fromCharCode(V+32)}:${B.substr(2)}`)}M+=A(B,!0,!1)}return O&&(M+="?",M+=A(O,!1,!1)),$&&(M+="#",M+=_?$:v($,!1,!1)),M}o(T,"b"),E(T,"b");function k(I){try{return decodeURIComponent(I)}catch{return I.length>3?I.substr(0,3)+k(I.substr(3)):I}}o(k,"C"),E(k,"C");let C=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function w(I){return I.match(C)?I.replace(C,(_=>k(_))):I}o(w,"w"),E(w,"w");var S=r(975);let R=S.posix||S,L="/";var N;(function(I){I.joinPath=function(_,...A){return _.with({path:R.join(_.path,...A)})},I.resolvePath=function(_,...A){let M=_.path,D=!1;M[0]!==L&&(M=L+M,D=!0);let P=R.resolve(M,...A);return D&&P[0]===L&&!_.authority&&(P=P.substring(1)),_.with({path:P})},I.dirname=function(_){if(_.path.length===0||_.path===L)return _;let A=R.dirname(_.path);return A.length===1&&A.charCodeAt(0)===46&&(A=""),_.with({path:A})},I.basename=function(_){return R.basename(_.path)},I.extname=function(_){return R.extname(_.path)}})(N||(N={})),$_e=n})();({URI:Yo,Utils:hC}=$_e);(function(e){e.basename=hC.basename,e.dirname=hC.dirname,e.extname=hC.extname,e.joinPath=hC.joinPath,e.resolvePath=hC.resolvePath;let t=typeof process=="object"&&process?.platform==="win32";function r(s,l){return s?.toString()===l?.toString()}o(r,"equals"),E(r,"equals"),e.equals=r;function n(s,l){let u=typeof s=="string"?Yo.parse(s).path:s.path,h=typeof l=="string"?Yo.parse(l).path:l.path,d=u.split("/").filter(y=>y.length>0),f=h.split("/").filter(y=>y.length>0);if(t){let y=/^[A-Z]:$/;if(d[0]&&y.test(d[0])&&(d[0]=d[0].toLowerCase()),f[0]&&y.test(f[0])&&(f[0]=f[0].toLowerCase()),d[0]!==f[0])return h.substring(1)}let p=0;for(;p({name:n.name,uri:$s.joinPath(Yo.parse(t),n.name).toString(),element:n.element})):[]}all(){return this.collectValues(this.root)}findAll(e){let t=this.getNode($s.normalize(e),!1);return t?this.collectValues(t):[]}getNode(e,t){let r=e.split("/");e.charAt(e.length-1)==="/"&&r.pop();let n=this.root;for(let i of r){let a=n.children.get(i);if(!a)if(t)a={name:i,children:new Map,parent:n},n.children.set(i,a);else return;n=a}return n}collectValues(e){let t=[];e.element&&t.push(e.element);for(let r of e.children.values())t.push(...this.collectValues(r));return t}};(function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"})(en||(en={}));F_e=class{static{o(this,"DefaultLangiumDocumentFactory")}static{E(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=Jn.CancellationToken.None){let r=await this.fileSystemProvider.readFile(e);return this.createAsync(e,r,t)}fromTextDocument(e,t,r){return t=t??Yo.parse(e.uri),Jn.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromString(e,t,r){return Jn.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,r){if(typeof t=="string"){let n=this.parse(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else if("$model"in t){let n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}else{let n=this.parse(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}async createAsync(e,t,r){if(typeof t=="string"){let n=await this.parseAsync(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else{let n=await this.parseAsync(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}createLangiumDocument(e,t,r,n){let i;if(r)i={parseResult:e,uri:t,state:en.Parsed,references:[],textDocument:r};else{let a=this.createTextDocumentGetter(t,n);i={parseResult:e,uri:t,state:en.Parsed,references:[],get textDocument(){return a()}}}return e.value.$document=i,i}async update(e,t){let r=e.parseResult.value.$cstNode?.root.fullText,n=this.textDocuments?.get(e.uri.toString()),i=n?n.getText():await this.fileSystemProvider.readFile(e.uri);if(n)Object.defineProperty(e,"textDocument",{value:n});else{let a=this.createTextDocumentGetter(e.uri,i);Object.defineProperty(e,"textDocument",{get:a})}return r!==i&&(e.parseResult=await this.parseAsync(e.uri,i,t),e.parseResult.value.$document=e),e.state=en.Parsed,e}parse(e,t,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,r)}parseAsync(e,t,r){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,r)}createTextDocumentGetter(e,t){let r=this.serviceRegistry,n;return()=>n??(n=lR.create(e.toString(),r.getServices(e).LanguageMetaData.languageId,0,t??""))}},z_e=class{static{o(this,"DefaultLangiumDocuments")}static{E(this,"DefaultLangiumDocuments")}constructor(e){this.documentTrie=new bH,this.services=e,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.documentBuilder=()=>e.workspace.DocumentBuilder}get all(){return Bn(this.documentTrie.all())}addDocument(e){let t=e.uri.toString();if(this.documentTrie.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentTrie.insert(t,e)}getDocument(e){let t=e.toString();return this.documentTrie.find(t)}getDocuments(e){let t=e.toString();return this.documentTrie.findAll(t)}async getOrCreateDocument(e,t){let r=this.getDocument(e);return r||(r=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(r),r)}createDocument(e,t,r){if(r)return this.langiumDocumentFactory.fromString(t,e,r).then(n=>(this.addDocument(n),n));{let n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentTrie.has(e.toString())}invalidateDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&this.documentBuilder().resetToState(r,en.Changed),r}deleteDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&(r.state=en.Changed,this.documentTrie.delete(t)),r}deleteDocuments(e){let t=e.toString(),r=this.documentTrie.findAll(t);for(let n of r)n.state=en.Changed;return this.documentTrie.delete(t),r}},gg=Symbol("RefResolving"),G_e=class{static{o(this,"DefaultLinker")}static{E(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async link(e,t=Jn.CancellationToken.None){if(this.profiler?.isActive("linking")){let r=this.profiler.createTask("linking",this.languageId);r.start();try{for(let n of kc(e.parseResult.value))await Ia(t),kv(n).forEach(i=>{let a=`${n.$type}:${i.property}`;r.startSubTask(a);try{this.doLink(i,e)}finally{r.stopSubTask(a)}})}finally{r.stop()}}else for(let r of kc(e.parseResult.value))await Ia(t),kv(r).forEach(n=>this.doLink(n,e))}doLink(e,t){let r=e.reference;if("_ref"in r&&r._ref===void 0){r._ref=gg;try{let n=this.getCandidate(e);if(Tg(n))r._ref=n;else{r._nodeDescription=n;let i=this.loadAstNode(n);r._ref=i??this.createLinkingError(e,n)}}catch(n){console.error(`An error occurred while resolving reference to '${r.$refText}':`,n);let i=n.message??String(n);r._ref={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${i}`}}t.references.push(r)}else if("_items"in r&&r._items===void 0){r._items=gg;try{let n=this.getCandidates(e),i=[];if(Tg(n))r._linkingError=n;else for(let a of n){let s=this.loadAstNode(a);s&&i.push({ref:s,$nodeDescription:a})}r._items=i}catch(n){r._linkingError={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${n}`},r._items=[]}t.references.push(r)}}unlink(e){for(let t of e.references)"_ref"in t?(t._ref=void 0,delete t._nodeDescription):"_items"in t&&(t._items=void 0,delete t._linkingError);e.references=[]}getCandidate(e){return this.scopeProvider.getScope(e).getElement(e.reference.$refText)??this.createLinkingError(e)}getCandidates(e){let r=this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct(n=>`${n.documentUri}#${n.path}`).toArray();return r.length>0?r:this.createLinkingError(e)}buildReference(e,t,r,n){let i=this,a={$refNode:r,$refText:n,_ref:void 0,get ref(){if(Zi(this._ref))return this._ref;if(iW(this._nodeDescription)){let s=i.loadAstNode(this._nodeDescription);this._ref=s??i.createLinkingError({reference:a,container:e,property:t},this._nodeDescription)}else if(this._ref===void 0){this._ref=gg;let s=yv(e).$document,l=i.getLinkedNode({reference:a,container:e,property:t});if(l.error&&s&&s.state0))return this._linkingError=i.createLinkingError({reference:a,container:e,property:t})}};return a}throwCyclicReferenceError(e,t,r){throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`)}getLinkedNode(e){try{let t=this.getCandidate(e);if(Tg(t))return{error:t};let r=this.loadAstNode(t);return r?{node:r,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(t){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,t);let r=t.message??String(t);return{error:{info:e,message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`}}}}loadAstNode(e){if(e.node)return e.node;let t=this.langiumDocuments().getDocument(e.documentUri);if(t)return this.astNodeLocator.getAstNode(t.parseResult.value,e.path)}createLinkingError(e,t){let r=yv(e.container).$document;r&&r.stater0(t)&&t.isMulti)}findDeclarations(e){if(e){let t=XW(e),r=e.astNode;if(t&&r){let n=r[t.feature];if(Bs(n)||Ou(n))return A6(n);if(Array.isArray(n)){for(let i of n)if((Bs(i)||Ou(i))&&i.$refNode&&i.$refNode.offset<=e.offset&&i.$refNode.end>=e.end)return A6(i)}}if(r){let n=this.nameProvider.getNameNode(r);if(n&&(n===e||RW(e,n)))return this.getSelfNodes(r)}}return[]}getSelfNodes(e){if(this.hasMultiReference){let t=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e)),r=this.getNodeFromReferenceDescription(t.head());if(r){for(let n of kv(r))if(Ou(n.reference)&&n.reference.items.some(i=>i.ref===e))return n.reference.items.map(i=>i.ref)}return[e]}else return[e]}getNodeFromReferenceDescription(e){if(!e)return;let t=this.documents.getDocument(e.sourceUri);if(t)return this.nodeLocator.getAstNode(t.parseResult.value,e.sourcePath)}findDeclarationNodes(e){let t=this.findDeclarations(e),r=[];for(let n of t){let i=this.nameProvider.getNameNode(n)??n.$cstNode;i&&r.push(i)}return r}findReferences(e,t){let r=[];t.includeDeclaration&&r.push(...this.getSelfReferences(e));let n=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(n=n.filter(i=>$s.equals(i.sourceUri,t.documentUri))),r.push(...n),Bn(r)}getSelfReferences(e){let t=this.getSelfNodes(e),r=[];for(let n of t){let i=this.nameProvider.getNameNode(n);if(i){let a=wc(n),s=this.nodeLocator.getAstNodePath(n);r.push({sourceUri:a.uri,sourcePath:s,targetUri:a.uri,targetPath:s,segment:Av(i),local:!0})}}return r}},ed=class{static{o(this,"MultiMap")}static{E(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[t,r]of e)this.add(t,r)}get size(){return jC.sum(Bn(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(t===void 0)return this.map.delete(e);{let r=this.map.get(e);if(r){let n=r.indexOf(t);if(n>=0)return r.length===1?this.map.delete(e):r.splice(n,1),!0}return!1}}get(e){return this.map.get(e)??[]}getStream(e){let t=this.map.get(e);return t?Bn(t):Tv}has(e,t){if(t===void 0)return this.map.has(e);{let r=this.map.get(e);return r?r.indexOf(t)>=0:!1}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,r)=>t.forEach(n=>e(n,r,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return Bn(this.map.entries()).flatMap(([e,t])=>t.map(r=>[e,r]))}keys(){return Bn(this.map.keys())}values(){return Bn(this.map.values()).flat()}entriesGroupedByKey(){return Bn(this.map.entries())}},uR=class{static{o(this,"BiMap")}static{E(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[t,r]of e)this.set(t,r)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let t=this.map.get(e);return t!==void 0?(this.map.delete(e),this.inverse.delete(t),!0):!1}},q_e=class{static{o(this,"DefaultScopeComputation")}static{E(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async collectExportedSymbols(e,t=Jn.CancellationToken.None){return this.collectExportedSymbolsForNode(e.parseResult.value,e,void 0,t)}async collectExportedSymbolsForNode(e,t,r=fw,n=Jn.CancellationToken.None){let i=[];this.addExportedSymbol(e,i,t);for(let a of r(e))await Ia(n),this.addExportedSymbol(a,i,t);return i}addExportedSymbol(e,t,r){let n=this.nameProvider.getName(e);n&&t.push(this.descriptions.createDescription(e,n,r))}async collectLocalSymbols(e,t=Jn.CancellationToken.None){let r=e.parseResult.value,n=new ed;for(let i of td(r))await Ia(t),this.addLocalSymbol(i,e,n);return n}addLocalSymbol(e,t,r){let n=e.$container;if(n){let i=this.nameProvider.getName(e);i&&r.add(n,this.descriptions.createDescription(e,i,t))}}},QG=class{static{o(this,"StreamScope")}static{E(this,"StreamScope")}constructor(e,t,r){this.elements=e,this.outerScope=t,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===t):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.filter(n=>n.name.toLowerCase()===t):this.elements.filter(n=>n.name===e);return(this.concatOuterScope||r.isEmpty())&&this.outerScope?r.concat(this.outerScope.getElements(e)):r}},AEt=class{static{o(this,"MapScope")}static{E(this,"MapScope")}constructor(e,t,r){this.elements=new Map,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let i=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.set(i,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t),n=r?[r]:[];return(this.concatOuterScope||n.length>0)&&this.outerScope?Bn(n).concat(this.outerScope.getElements(e)):Bn(n)}getAllElements(){let e=Bn(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},H_e=class{static{o(this,"MultiMapScope")}static{E(this,"MultiMapScope")}constructor(e,t,r){this.elements=new ed,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let i=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.add(i,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t)[0];if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);return(this.concatOuterScope||r.length===0)&&this.outerScope?Bn(r).concat(this.outerScope.getElements(e)):Bn(r)}getAllElements(){let e=Bn(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},REt={getElement(){},getElements(){return Tv},getAllElements(){return Tv}},x_=class{static{o(this,"DisposableCache")}static{E(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},CH=class extends x_{static{o(this,"SimpleCache")}static{E(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){let r=t();return this.cache.set(e,r),r}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},b_=class extends x_{static{o(this,"ContextCache")}static{E(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(t=>t)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,r){this.throwIfDisposed(),this.cacheForContext(e).set(t,r)}get(e,t,r){this.throwIfDisposed();let n=this.cacheForContext(e);if(n.has(t))return n.get(t);if(r){let i=r();return n.set(t,i),i}else return}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){let t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){let t=this.converter(e),r=this.cache.get(t);return r||(r=new Map,this.cache.set(t,r)),r}},U_e=class extends b_{static{o(this,"DocumentCache")}static{E(this,"DocumentCache")}constructor(e,t){super(r=>r.toString()),t?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(t,r=>{this.clear(r.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{for(let i of n)this.clear(i)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{let i=r.concat(n);for(let a of i)this.clear(a)}))}},wH=class extends CH{static{o(this,"WorkspaceCache")}static{E(this,"WorkspaceCache")}constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{n.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}},Y_e=class{static{o(this,"DefaultScopeProvider")}static{E(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new wH(e.shared)}getScope(e){let t=[],r=this.reflection.getReferenceType(e),n=wc(e.container).localSymbols;if(n){let a=e.container;do n.has(a)&&t.push(n.getStream(a).filter(s=>this.reflection.isSubtype(s.type,r))),a=a.$container;while(a)}let i=this.getGlobalScope(r,e);for(let a=t.length-1;a>=0;a--)i=this.createScope(t[a],i);return i}createScope(e,t,r){return new QG(Bn(e),t,r)}createScopeForNodes(e,t,r){let n=Bn(e).map(i=>{let a=this.nameProvider.getName(i);if(a)return this.descriptions.createDescription(i,a)}).nonNullable();return new QG(n,t,r)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new H_e(this.indexManager.allElements(e)))}};o(kH,"isAstNodeWithComment");E(kH,"isAstNodeWithComment");o(JG,"isIntermediateReference");E(JG,"isIntermediateReference");j_e=class{static{o(this,"DefaultJsonSerializer")}static{E(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){let r=t??{},n=t?.replacer,i=E((s,l)=>this.replacer(s,l,r),"defaultReplacer"),a=n?(s,l)=>n(s,l,i):i;try{return this.currentDocument=wc(e),JSON.stringify(e,a,t?.space)}finally{this.currentDocument=void 0}}deserialize(e,t){let r=t??{},n=JSON.parse(e);return this.linkNode(n,n,r),n}replacer(e,t,{refText:r,sourceText:n,textRegions:i,comments:a,uriConverter:s}){if(!this.ignoreProperties.has(e))if(Bs(t)){let l=t.ref,u=r?t.$refText:void 0;if(l){let h=wc(l),d="";this.currentDocument&&this.currentDocument!==h&&(s?d=s(h.uri,l):d=h.uri.toString());let f=this.astNodeLocator.getAstNodePath(l);return{$ref:`${d}#${f}`,$refText:u}}else return{$error:t.error?.message??"Could not resolve reference",$refText:u}}else if(Ou(t)){let l=r?t.$refText:void 0,u=[];for(let h of t.items){let d=h.ref,f=wc(h.ref),p="";this.currentDocument&&this.currentDocument!==f&&(s?p=s(f.uri,d):p=f.uri.toString());let m=this.astNodeLocator.getAstNodePath(d);u.push(`${p}#${m}`)}return{$refs:u,$refText:l}}else if(Zi(t)){let l;if(i&&(l=this.addAstNodeRegionWithAssignmentsTo({...t}),(!e||t.$document)&&l?.$textRegion&&(l.$textRegion.documentURI=this.currentDocument?.uri.toString())),n&&!e&&(l??(l={...t}),l.$sourceText=t.$cstNode?.text),a){l??(l={...t});let u=this.commentProvider.getComment(t);u&&(l.$comment=u.replace(/\r/g,""))}return l??t}else return t}addAstNodeRegionWithAssignmentsTo(e){let t=E(r=>({offset:r.offset,end:r.end,length:r.length,range:r.range}),"createDocumentSegment");if(e.$cstNode){let r=e.$textRegion=t(e.$cstNode),n=r.assignments={};return Object.keys(e).filter(i=>!i.startsWith("$")).forEach(i=>{let a=YW(e.$cstNode,i).map(t);a.length!==0&&(n[i]=a)}),e}}linkNode(e,t,r,n,i,a){for(let[l,u]of Object.entries(e))if(Array.isArray(u))for(let h=0;h{await this.handleException(()=>e.call(t,r,n,i),"An error occurred during validation",n,r)}}async handleException(e,t,r,n){try{await e()}catch(i){if(v0(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);let a=i instanceof Error?i.message:String(i);r("error",`${t}: ${a}`,{node:n})}}addEntry(e,t){if(e==="AstNode"){this.entries.add("AstNode",t);return}for(let r of this.reflection.getAllSubTypes(e))this.entries.add(r,t)}getChecks(e,t){let r=Bn(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(r=r.filter(n=>t.includes(n.category))),r.map(n=>n.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,r){return async(n,i,a,s)=>{await this.handleException(()=>e.call(r,n,i,a,s),t,i,n)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}getAllValidationCategories(e){return this.knownCategories}},Z_e=Object.freeze({validateNode:!0,validateChildren:!0}),Q_e=class{static{o(this,"DefaultDocumentValidator")}static{E(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async validateDocument(e,t={},r=Jn.CancellationToken.None){let n=e.parseResult,i=[];if(await Ia(r),(!t.categories||t.categories.includes("built-in"))&&(this.processLexingErrors(n,i,t),t.stopAfterLexingErrors&&i.some(a=>a.data?.code===Rl.LexingError)||(this.processParsingErrors(n,i,t),t.stopAfterParsingErrors&&i.some(a=>a.data?.code===Rl.ParsingError))||(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some(a=>a.data?.code===Rl.LinkingError))))return i;try{i.push(...await this.validateAst(n.value,t,r))}catch(a){if(v0(a))throw a;console.error("An error occurred during validation:",a)}return await Ia(r),i}processLexingErrors(e,t,r){let n=[...e.lexerErrors,...e.lexerReport?.diagnostics??[]];for(let i of n){let a=i.severity??"error",s={severity:WC(a),range:{start:{line:i.line-1,character:i.column-1},end:{line:i.line-1,character:i.column+i.length-1}},message:i.message,data:EH(a),source:this.getSource()};t.push(s)}}processParsingErrors(e,t,r){for(let n of e.parserErrors){let i;if(isNaN(n.token.startOffset)){if("previousToken"in n){let a=n.previousToken;if(isNaN(a.startOffset)){let s={line:0,character:0};i={start:s,end:s}}else{let s={line:a.endLine-1,character:a.endColumn};i={start:s,end:s}}}}else i=XC(n.token);if(i){let a={severity:WC("error"),range:i,message:n.message,data:qg(Rl.ParsingError),source:this.getSource()};t.push(a)}}}processLinkingErrors(e,t,r){for(let n of e.references){let i=n.error;if(i){let a={node:i.info.container,range:n.$refNode?.range,property:i.info.property,index:i.info.index,data:{code:Rl.LinkingError,containerType:i.info.container.$type,property:i.info.property,refText:i.info.reference.$refText}};t.push(this.toDiagnostic("error",i.message,a))}}}async validateAst(e,t,r=Jn.CancellationToken.None){let n=[],i=E((a,s,l)=>{n.push(this.toDiagnostic(a,s,l))},"acceptor");return await this.validateAstBefore(e,t,i,r),await this.validateAstNodes(e,t,i,r),await this.validateAstAfter(e,t,i,r),n}async validateAstBefore(e,t,r,n=Jn.CancellationToken.None){let i=this.validationRegistry.checksBefore;for(let a of i)await Ia(n),await a(e,r,t.categories??[],n)}async validateAstNodes(e,t,r,n=Jn.CancellationToken.None){if(this.profiler?.isActive("validating")){let i=this.profiler.createTask("validating",this.languageId);i.start();try{let a=kc(e).iterator();for(let s of a){i.startSubTask(s.$type);let l=this.validateSingleNodeOptions(s,t);if(l.validateNode)try{let u=this.validationRegistry.getChecks(s.$type,t.categories);for(let h of u)await h(s,r,n)}finally{i.stopSubTask(s.$type)}l.validateChildren||a.prune()}}finally{i.stop()}}else{let i=kc(e).iterator();for(let a of i){await Ia(n);let s=this.validateSingleNodeOptions(a,t);if(s.validateNode){let l=this.validationRegistry.getChecks(a.$type,t.categories);for(let u of l)await u(a,r,n)}s.validateChildren||i.prune()}}}validateSingleNodeOptions(e,t){return Z_e}async validateAstAfter(e,t,r,n=Jn.CancellationToken.None){let i=this.validationRegistry.checksAfter;for(let a of i)await Ia(n),await a(e,r,t.categories??[],n)}toDiagnostic(e,t,r){return{message:t,range:SH(r),severity:WC(e),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(SH,"getDiagnosticRange");E(SH,"getDiagnosticRange");o(WC,"toDiagnosticSeverity");E(WC,"toDiagnosticSeverity");o(EH,"toDiagnosticData");E(EH,"toDiagnosticData");(function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"})(Rl||(Rl={}));J_e=class{static{o(this,"DefaultAstNodeDescriptionProvider")}static{E(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,r){let n=r??wc(e);t??(t=this.nameProvider.getName(e));let i=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${i} has no name.`);let a,s=E(()=>a??(a=Av(this.nameProvider.getNameNode(e)??e.$cstNode)),"nameSegmentGetter");return{node:e,name:t,get nameSegment(){return s()},selectionSegment:Av(e.$cstNode),type:e.$type,documentUri:n.uri,path:i}}},eLe=class{static{o(this,"DefaultReferenceDescriptionProvider")}static{E(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=Jn.CancellationToken.None){let r=[],n=e.parseResult.value;for(let i of kc(n))await Ia(t),kv(i).forEach(a=>{a.reference.error||r.push(...this.createInfoDescriptions(a))});return r}createInfoDescriptions(e){let t=e.reference;if(t.error||!t.$refNode)return[];let r=[];Bs(t)&&t.$nodeDescription?r=[t.$nodeDescription]:Ou(t)&&(r=t.items.map(l=>l.$nodeDescription).filter(l=>l!==void 0));let n=wc(e.container).uri,i=this.nodeLocator.getAstNodePath(e.container),a=[],s=Av(t.$refNode);for(let l of r)a.push({sourceUri:n,sourcePath:i,targetUri:l.documentUri,targetPath:l.path,segment:s,local:$s.equals(l.documentUri,n)});return a}},tLe=class{static{o(this,"DefaultAstNodeLocator")}static{E(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let t=this.getAstNodePath(e.$container),r=this.getPathSegment(e);return t+this.segmentSeparator+r}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return t!==void 0?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((n,i)=>{if(!n||i.length===0)return n;let a=i.indexOf(this.indexSeparator);if(a>0){let s=i.substring(0,a),l=parseInt(i.substring(a+1));return n[s]?.[l]}return n[i]},e)}},T_={};mR(T_,eW(Iv(),1));rLe=class{static{o(this,"DefaultConfigurationProvider")}static{E(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new Jh,this.onConfigurationSectionUpdateEmitter=new T_.Emitter,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){this.workspaceConfig=e.capabilities.workspace?.configuration??!1}async initialized(e){if(this.workspaceConfig){if(e.register){let t=this.serviceRegistry.all;e.register({section:t.map(r=>this.toSectionName(r.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let t=this.serviceRegistry.all.map(n=>({section:this.toSectionName(n.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((n,i)=>{this.updateSectionConfiguration(n.section,r[i])})}}this._ready.resolve()}updateConfiguration(e){typeof e.settings!="object"||e.settings===null||Object.entries(e.settings).forEach(([t,r])=>{this.updateSectionConfiguration(t,r),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:r})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;let r=this.toSectionName(e);if(this.settings[r])return this.settings[r][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}},$A=eW(nyt(),1);(function(e){function t(r){return{dispose:E(async()=>await r(),"dispose")}}o(t,"create"),E(t,"create"),e.create=t})(Yg||(Yg={}));nLe=class{static{o(this,"DefaultDocumentBuilder")}static{E(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new ed,this.documentPhaseListeners=new ed,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=en.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.fileSystemProvider=e.workspace.FileSystemProvider,this.workspaceManager=()=>e.workspace.WorkspaceManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},r=Jn.CancellationToken.None){for(let n of e){let i=n.uri.toString();if(n.state===en.Validated){if(typeof t.validation=="boolean"&&t.validation)this.resetToState(n,en.IndexedReferences);else if(typeof t.validation=="object"){let a=this.findMissingValidationCategories(n,t);a.length>0&&(this.buildState.set(i,{completed:!1,options:{validation:{categories:a}},result:this.buildState.get(i)?.result}),n.state=en.IndexedReferences)}}else this.buildState.delete(i)}this.currentState=en.Changed,await this.emitUpdate(e.map(n=>n.uri),[]),await this.buildDocuments(e,t,r)}async update(e,t,r=Jn.CancellationToken.None){this.currentState=en.Changed;let n=[];for(let l of t){let u=this.langiumDocuments.deleteDocuments(l);for(let h of u)n.push(h.uri),this.cleanUpDeleted(h)}let i=(await Promise.all(e.map(l=>this.findChangedUris(l)))).flat();for(let l of i){let u=this.langiumDocuments.getDocument(l);u===void 0&&(u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},l),u.state=en.Changed,this.langiumDocuments.addDocument(u)),this.resetToState(u,en.Changed)}let a=Bn(i).concat(n).map(l=>l.toString()).toSet();this.langiumDocuments.all.filter(l=>!a.has(l.uri.toString())&&this.shouldRelink(l,a)).forEach(l=>this.resetToState(l,en.ComputedScopes)),await this.emitUpdate(i,n),await Ia(r);let s=this.sortDocuments(this.langiumDocuments.all.filter(l=>l.state=1}findMissingValidationCategories(e,t){let r=this.buildState.get(e.uri.toString()),n=this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e),i=r?.result?.validationChecks?new Set(r?.result?.validationChecks):r?.completed?n:new Set,a=t===void 0||t.validation===!0?n:typeof t.validation=="object"?t.validation.categories??n:[];return Bn(a).filter(s=>!i.has(s)).toArray()}async findChangedUris(e){if(this.langiumDocuments.getDocument(e)??this.textDocuments?.get(e))return[e];try{let r=await this.fileSystemProvider.stat(e);if(r.isDirectory)return await this.workspaceManager().searchFolder(e);if(this.workspaceManager().shouldIncludeEntry(r))return[e]}catch{}return[]}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(r=>r(e,t)))}sortDocuments(e){let t=0,r=e.length-1;for(;t=0&&!this.hasTextDocument(e[r]);)r--;tr.error!==void 0)?!0:this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),Yg.create(()=>{let t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}resetToState(e,t){switch(t){case en.Changed:case en.Parsed:this.indexManager.removeContent(e.uri);case en.IndexedContent:e.localSymbols=void 0;case en.ComputedScopes:this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);case en.Linked:this.indexManager.removeReferences(e.uri);case en.IndexedReferences:e.diagnostics=void 0,this.buildState.delete(e.uri.toString());case en.Validated:}e.state>t&&(e.state=t)}cleanUpDeleted(e){this.buildState.delete(e.uri.toString()),this.indexManager.remove(e.uri),e.state=en.Changed}async buildDocuments(e,t,r){this.prepareBuild(e,t),await this.runCancelable(e,en.Parsed,r,a=>this.langiumDocumentFactory.update(a,r)),await this.runCancelable(e,en.IndexedContent,r,a=>this.indexManager.updateContent(a,r)),await this.runCancelable(e,en.ComputedScopes,r,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.localSymbols=await s.collectLocalSymbols(a,r)});let n=e.filter(a=>this.shouldLink(a));await this.runCancelable(n,en.Linked,r,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,r)),await this.runCancelable(n,en.IndexedReferences,r,a=>this.indexManager.updateReferences(a,r));let i=e.filter(a=>this.shouldValidate(a)?!0:(this.markAsCompleted(a),!1));await this.runCancelable(i,en.Validated,r,async a=>{await this.validate(a,r),this.markAsCompleted(a)})}markAsCompleted(e){let t=this.buildState.get(e.uri.toString());t&&(t.completed=!0)}prepareBuild(e,t){for(let r of e){let n=r.uri.toString(),i=this.buildState.get(n);(!i||i.completed)&&this.buildState.set(n,{completed:!1,options:t,result:i?.result})}}async runCancelable(e,t,r,n){for(let a of e)a.statea.state===t);await this.notifyBuildPhase(i,t,r),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),Yg.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),Yg.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,r){let n;return t&&"path"in t?n=t:r=t,r??(r=Jn.CancellationToken.None),n?this.awaitDocumentState(e,n,r):this.awaitBuilderState(e,r)}awaitDocumentState(e,t,r){let n=this.langiumDocuments.getDocument(t);if(n){if(n.state>=e)return Promise.resolve(t);if(r.isCancellationRequested)return Promise.reject(Pu);if(this.currentState>=e&&e>n.state)return Promise.reject(new $A.ResponseError($A.LSPErrorCodes.RequestFailed,`Document state of ${t.toString()} is ${en[n.state]}, requiring ${en[e]}, but workspace state is already ${en[this.currentState]}. Returning undefined.`))}else return Promise.reject(new $A.ResponseError($A.LSPErrorCodes.ServerCancelled,`No document found for URI: ${t.toString()}`));return new Promise((i,a)=>{let s=this.onDocumentPhase(e,u=>{$s.equals(u.uri,t)&&(s.dispose(),l.dispose(),i(u.uri))}),l=r.onCancellationRequested(()=>{s.dispose(),l.dispose(),a(Pu)})})}awaitBuilderState(e,t){return this.currentState>=e?Promise.resolve():t.isCancellationRequested?Promise.reject(Pu):new Promise((r,n)=>{let i=this.onBuildPhase(e,()=>{i.dispose(),a.dispose(),r()}),a=t.onCancellationRequested(()=>{i.dispose(),a.dispose(),n(Pu)})})}async notifyDocumentPhase(e,t,r){let i=this.documentPhaseListeners.get(t).slice();for(let a of i)try{await Ia(r),await a(e,r)}catch(s){if(!v0(s))throw s}}async notifyBuildPhase(e,t,r){if(e.length===0)return;let i=this.buildPhaseListeners.get(t).slice();for(let a of i)await Ia(r),await a(e,r)}shouldLink(e){return this.getBuildOptions(e).eagerLinking??!0}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,t){let r=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,n=this.getBuildOptions(e),i=typeof n.validation=="object"?{...n.validation}:{};i.categories=this.findMissingValidationCategories(e,n);let a=await r.validateDocument(e,i,t);e.diagnostics?e.diagnostics.push(...a):e.diagnostics=a;let s=this.buildState.get(e.uri.toString());s&&(s.result??(s.result={}),s.result.validationChecks?s.result.validationChecks=Bn(s.result.validationChecks).concat(i.categories).distinct().toArray():s.result.validationChecks=[...i.categories])}getBuildOptions(e){return this.buildState.get(e.uri.toString())?.options??{}}},iLe=class{static{o(this,"DefaultIndexManager")}static{E(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new b_,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){let r=wc(e).uri,n=[];return this.referenceIndex.forEach(i=>{i.forEach(a=>{$s.equals(a.targetUri,r)&&a.targetPath===t&&n.push(a)})}),Bn(n)}allElements(e,t){let r=Bn(this.symbolIndex.keys());return t&&(r=r.filter(n=>!t||t.has(n))),r.map(n=>this.getFileDescriptions(n,e)).flat()}getFileDescriptions(e,t){return t?this.symbolByTypeIndex.get(e,t,()=>(this.symbolIndex.get(e)??[]).filter(i=>this.astReflection.isSubtype(i.type,t))):this.symbolIndex.get(e)??[]}remove(e){this.removeContent(e),this.removeReferences(e)}removeContent(e){let t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t)}removeReferences(e){let t=e.toString();this.referenceIndex.delete(t)}async updateContent(e,t=Jn.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.collectExportedSymbols(e,t),i=e.uri.toString();this.symbolIndex.set(i,n),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=Jn.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),n)}isAffected(e,t){let r=this.referenceIndex.get(e.uri.toString());return r?r.some(n=>!n.local&&t.has(n.targetUri.toString())):!1}},aLe=class{static{o(this,"DefaultWorkspaceManager")}static{E(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new Jh,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){this.folders=e.workspaceFolders??void 0}initialized(e){return this.mutex.write(t=>this.initializeWorkspace(this.folders??[],t))}async initializeWorkspace(e,t=Jn.CancellationToken.None){let r=await this.performStartup(e);await Ia(t),await this.documentBuilder.build(r,this.initialBuildOptions,t)}async performStartup(e){let t=[],r=E(a=>{t.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");await this.loadAdditionalDocuments(e,r);let n=[];await Promise.all(e.map(a=>this.getRootFolder(a)).map(async a=>this.traverseFolder(a,n)));let i=Bn(n).distinct(a=>a.toString()).filter(a=>!this.langiumDocuments.hasDocument(a));return await this.loadWorkspaceDocuments(i,r),this._ready.resolve(),t}async loadWorkspaceDocuments(e,t){await Promise.all(e.map(async r=>{let n=await this.langiumDocuments.getOrCreateDocument(r);t(n)}))}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return Yo.parse(e.uri)}async traverseFolder(e,t){try{let r=await this.fileSystemProvider.readDirectory(e);await Promise.all(r.map(async n=>{this.shouldIncludeEntry(n)&&(n.isDirectory?await this.traverseFolder(n.uri,t):n.isFile&&t.push(n.uri))}))}catch(r){console.error("Failure to read directory content of "+e.toString(!0),r)}}async searchFolder(e){let t=[];return await this.traverseFolder(e,t),t}shouldIncludeEntry(e){let t=$s.basename(e.uri);return t.startsWith(".")?!1:e.isDirectory?t!=="node_modules"&&t!=="out":e.isFile?this.serviceRegistry.hasServices(e.uri):!1}},sLe=class{static{o(this,"DefaultLexerErrorMessageProvider")}static{E(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,t,r,n,i){return IG.buildUnexpectedCharactersMessage(e,t,r,n,i)}buildUnableToPopLexerModeMessage(e){return IG.buildUnableToPopLexerModeMessage(e)}},AH={mode:"full"},RH=class{static{o(this,"DefaultLexer")}static{E(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);let r=dR(t)?Object.values(t):t,n=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Fs(r,{positionTracking:"full",skipValidations:n,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=AH){let r=this.chevrotainLexer.tokenize(e);return{tokens:r.tokens,errors:r.errors,hidden:r.groups.hidden??[],report:this.tokenBuilder.flushLexingReport?.(e)}}toTokenTypeDictionary(e){if(dR(e))return e;let t=w_(e)?Object.values(e.modes).flat():e,r={};return t.forEach(n=>r[n.name]=n),r}};o(C_,"isTokenTypeArray");E(C_,"isTokenTypeArray");o(w_,"isIMultiModeLexerDefinition");E(w_,"isIMultiModeLexerDefinition");o(dR,"isTokenTypeDictionary");E(dR,"isTokenTypeDictionary");hw();o(_H,"parseJSDoc");E(_H,"parseJSDoc");o(LH,"isJSDoc");E(LH,"isJSDoc");o(DH,"getLines");E(DH,"getLines");iwe=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,_Et=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(oLe,"tokenize");E(oLe,"tokenize");o(lLe,"buildInlineTokens");E(lLe,"buildInlineTokens");LEt=/\S/,DEt=/\s*$/;o(fR,"skipWhitespace");E(fR,"skipWhitespace");o(cLe,"lastCharacter");E(cLe,"lastCharacter");o(uLe,"parseJSDocComment");E(uLe,"parseJSDocComment");o(hLe,"parseJSDocElement");E(hLe,"parseJSDocElement");o(dLe,"appendEmptyLine");E(dLe,"appendEmptyLine");o(IH,"parseJSDocText");E(IH,"parseJSDocText");o(fLe,"parseJSDocInline");E(fLe,"parseJSDocInline");o(MH,"parseJSDocTag");E(MH,"parseJSDocTag");o(NH,"parseJSDocLine");E(NH,"parseJSDocLine");o(k_,"normalizeOptions");E(k_,"normalizeOptions");o(y6,"normalizeOption");E(y6,"normalizeOption");awe=class{static{o(this,"JSDocCommentImpl")}static{E(this,"JSDocCommentImpl")}constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let t of this.elements)if(e.length===0)e=t.toString();else{let r=t.toString();e+=tV(e)+r}return e.trim()}toMarkdown(e){let t="";for(let r of this.elements)if(t.length===0)t=r.toMarkdown(e);else{let n=r.toMarkdown(e);t+=tV(t)+n}return t.trim()}},lz=class{static{o(this,"JSDocTagImpl")}static{E(this,"JSDocTagImpl")}constructor(e,t,r,n){this.name=e,this.content=t,this.inline=r,this.range=n}toString(){let e=`@${this.name}`,t=this.content.toString();return this.content.inlines.length===1?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e} +${t}`),this.inline?`{${e}}`:e}toMarkdown(e){return e?.renderTag?.(this)??this.toMarkdownDefault(e)}toMarkdownDefault(e){let t=this.content.toMarkdown(e);if(this.inline){let i=pLe(this.name,t,e??{});if(typeof i=="string")return i}let r="";e?.tag==="italic"||e?.tag===void 0?r="*":e?.tag==="bold"?r="**":e?.tag==="bold-italic"&&(r="***");let n=`${r}@${this.name}${r}`;return this.content.inlines.length===1?n=`${n} \u2014 ${t}`:this.content.inlines.length>1&&(n=`${n} +${t}`),this.inline?`{${n}}`:n}};o(pLe,"renderInlineTag");E(pLe,"renderInlineTag");o(mLe,"renderLinkDefault");E(mLe,"renderLinkDefault");eV=class{static{o(this,"JSDocTextImpl")}static{E(this,"JSDocTextImpl")}constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;tr.range.start.line&&(e+=` +`)}return e}toMarkdown(e){let t="";for(let r=0;rn.range.start.line&&(t+=` +`)}return t}},gLe=class{static{o(this,"JSDocLineImpl")}static{E(this,"JSDocLineImpl")}constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}};o(tV,"fillNewlines");E(tV,"fillNewlines");yLe=class{static{o(this,"JSDocDocumentationProvider")}static{E(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let t=this.commentProvider.getComment(e);if(t&&LH(t))return _H(t).toMarkdown({renderLink:E((n,i)=>this.documentationLinkRenderer(e,n,i),"renderLink"),renderTag:E(n=>this.documentationTagRenderer(e,n),"renderTag")})}documentationLinkRenderer(e,t,r){let n=this.findNameInLocalSymbols(e,t)??this.findNameInGlobalScope(e,t);if(n&&n.nameSegment){let i=n.nameSegment.range.start.line+1,a=n.nameSegment.range.start.character+1,s=n.documentUri.with({fragment:`L${i},${a}`});return`[${r}](${s.toString()})`}else return}documentationTagRenderer(e,t){}findNameInLocalSymbols(e,t){let n=wc(e).localSymbols;if(!n)return;let i=e;do{let s=n.getStream(i).find(l=>l.name===t);if(s)return s;i=i.$container}while(i)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(n=>n.name===t)}},vLe=class{static{o(this,"DefaultCommentProvider")}static{E(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){return kH(e)?e.$comment:IW(e.$cstNode,this.grammarConfig().multilineCommentRules)?.text}},xLe=class{static{o(this,"DefaultAsyncParser")}static{E(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}},IEt=class{static{o(this,"AbstractThreadedAsyncParser")}static{E(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let t=this.queue.shift();t&&(e.lock(),t.resolve(e))}}),this.workerPool.push(e)}}async parse(e,t){let r=await this.acquireParserWorker(t),n=new Jh,i,a=t.onCancellationRequested(()=>{i=setTimeout(()=>{this.terminateWorker(r)},this.terminationDelay)});return r.parse(e).then(s=>{let l=this.hydrator.hydrate(s);n.resolve(l)}).catch(s=>{n.reject(s)}).finally(()=>{a.dispose(),clearTimeout(i)}),n.promise}terminateWorker(e){e.terminate();let t=this.workerPool.indexOf(e);t>=0&&this.workerPool.splice(t,1)}async acquireParserWorker(e){this.initializeWorkers();for(let r of this.workerPool)if(r.ready)return r.lock(),r;let t=new Jh;return e.onCancellationRequested(()=>{let r=this.queue.indexOf(t);r>=0&&this.queue.splice(r,1),t.reject(Pu)}),this.queue.push(t),t.promise}},MEt=class{static{o(this,"ParserWorker")}static{E(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,t,r,n){this.onReadyEmitter=new T_.Emitter,this.deferred=new Jh,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=n,t(i=>{let a=i;this.deferred.resolve(a),this.unlock()}),r(i=>{this.deferred.reject(i),this.unlock()})}terminate(){this.deferred.reject(Pu),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new Jh,this.sendMessage(e),this.deferred.promise}},bLe=class{static{o(this,"DefaultWorkspaceLock")}static{E(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new Jn.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let t=v_();return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,r=Jn.CancellationToken.None){let n=new Jh,i={action:t,deferred:n,cancellationToken:r};return e.push(i),this.performNextOperation(),n.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:t,deferred:r,cancellationToken:n})=>{try{let i=await Promise.resolve().then(()=>t(n));r.resolve(i)}catch(i){v0(i)?r.resolve(void 0):r.reject(i)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}},TLe=class{static{o(this,"DefaultHydrator")}static{E(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new uR,this.tokenTypeIdMap=new uR,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(t=>({...t,message:t.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let t=new Map,r=new Map;for(let n of kc(e))t.set(n,{});if(e.$cstNode)for(let n of Ev(e.$cstNode))r.set(n,{});return{astNodes:t,cstNodes:r}}dehydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(r.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(let[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){let a=[];r[n]=a;for(let s of i)Zi(s)?a.push(this.dehydrateAstNode(s,t)):Bs(s)?a.push(this.dehydrateReference(s,t)):a.push(s)}else Zi(i)?r[n]=this.dehydrateAstNode(i,t):Bs(i)?r[n]=this.dehydrateReference(i,t):i!==void 0&&(r[n]=i);return r}dehydrateReference(e,t){let r={};return r.$refText=e.$refText,e.$refNode&&(r.$refNode=t.cstNodes.get(e.$refNode)),r}dehydrateCstNode(e,t){let r=t.cstNodes.get(e);return vR(e)?r.fullText=e.fullText:r.grammarSource=this.getGrammarElementId(e.grammarSource),r.hidden=e.hidden,r.astNode=t.astNodes.get(e.astNode),Hh(e)?r.content=e.content.map(n=>this.dehydrateCstNode(n,t)):Jg(e)&&(r.tokenType=e.tokenType.name,r.offset=e.offset,r.length=e.length,r.startLine=e.range.start.line,r.startColumn=e.range.start.character,r.endLine=e.range.end.line,r.endColumn=e.range.end.character),r}hydrate(e){let t=e.value,r=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,r),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,r)}}createHydrationContext(e){let t=new Map,r=new Map;for(let i of kc(e))t.set(i,{});let n;if(e.$cstNode)for(let i of Ev(e.$cstNode)){let a;"fullText"in i?(a=new lH(i.fullText),n=a):"content"in i?a=new f_:"tokenType"in i&&(a=this.hydrateCstLeafNode(i)),a&&(r.set(i,a),a.root=n)}return{astNodes:t,cstNodes:r}}hydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode&&(r.$cstNode=t.cstNodes.get(e.$cstNode));for(let[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){let a=[];r[n]=a;for(let s of i)Zi(s)?a.push(this.setParent(this.hydrateAstNode(s,t),r)):Bs(s)?a.push(this.hydrateReference(s,r,n,t)):a.push(s)}else Zi(i)?r[n]=this.setParent(this.hydrateAstNode(i,t),r):Bs(i)?r[n]=this.hydrateReference(i,r,n,t):i!==void 0&&(r[n]=i);return r}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,r,n){return this.linker.buildReference(t,r,n.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,r=0){let n=t.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(n.grammarSource=this.getGrammarElement(e.grammarSource)),n.astNode=t.astNodes.get(e.astNode),Hh(n))for(let i of e.content){let a=this.hydrateCstNode(i,t,r++);n.content.push(a)}return n}hydrateCstLeafNode(e){let t=this.getTokenType(e.tokenType),r=e.offset,n=e.length,i=e.startLine,a=e.startColumn,s=e.endLine,l=e.endColumn,u=e.hidden;return new aR(r,n,{start:{line:i,character:a},end:{line:s,character:l}},t,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let t of kc(this.grammar))xR(t)&&this.grammarElementIdMap.set(t,e++)}};o(hn,"createDefaultCoreModule");E(hn,"createDefaultCoreModule");o(dn,"createDefaultSharedCoreModule");E(dn,"createDefaultSharedCoreModule");(function(e){e.merge=(t,r)=>Dv(Dv({},t),r)})(rV||(rV={}));o(Mr,"inject");E(Mr,"inject");CLe=Symbol("isProxy");o(PH,"eagerLoad");E(PH,"eagerLoad");o(OH,"_inject");E(OH,"_inject");swe=Symbol();o(nV,"_resolve");E(nV,"_resolve");o(Dv,"_merge");E(Dv,"_merge");iV={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(e){e.REGULAR="indentation-sensitive",e.IGNORE_INDENTATION="ignore-indentation"})(Hg||(Hg={}));wLe=class extends g_{static{o(this,"IndentationAwareTokenBuilder")}static{E(this,"IndentationAwareTokenBuilder")}constructor(e=iV){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options={...iV,...e},this.indentTokenType=xv({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=xv({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,t){let r=super.buildTokens(e,t);if(!C_(r))throw new Error("Invalid tokens built by default builder");let{indentTokenName:n,dedentTokenName:i,whitespaceTokenName:a,ignoreIndentationDelimiters:s}=this.options,l,u,h,d=[];for(let f of r){for(let[p,m]of s)f.name===p?f.PUSH_MODE=Hg.IGNORE_INDENTATION:f.name===m&&(f.POP_MODE=!0);f.name===i?l=f:f.name===n?u=f:f.name===a?h=f:d.push(f)}if(!l||!u||!h)throw new Error("Some indentation/whitespace tokens not found!");return s.length>0?{modes:{[Hg.REGULAR]:[l,u,...d,h],[Hg.IGNORE_INDENTATION]:[...d,h]},defaultMode:Hg.REGULAR}:[l,u,h,...d]}flushLexingReport(e){return{...super.flushLexingReport(e),remainingDedents:this.flushRemainingDedents(e)}}isStartOfLine(e,t){return t===0||`\r +`.includes(e[t-1])}matchWhitespace(e,t,r,n){this.whitespaceRegExp.lastIndex=t;let i=this.whitespaceRegExp.exec(e);return{currIndentLevel:i?.[0].length??0,prevIndentLevel:this.indentationStack.at(-1),match:i}}createIndentationTokenInstance(e,t,r,n){let i=this.getLineNumber(t,n);return Rw(e,r,n,n+r.length,i,i,1,r.length)}getLineNumber(e,t){return e.substring(0,t).split(/\r\n|\r|\n/).length}indentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);return i<=a?null:(this.indentationStack.push(i),s)}dedentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);if(i>=a)return null;let l=this.indentationStack.lastIndexOf(i);if(l===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${i} at offset: ${t}. Current indentation stack: ${this.indentationStack}`,offset:t,length:s?.[0]?.length??0,line:this.getLineNumber(e,t),column:1}),null;let u=this.indentationStack.length-l-1,h=e.substring(0,t).match(/[\r\n]+$/)?.[0].length??1;for(let d=0;d1;)t.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],t}},NEt=class extends RH{static{o(this,"IndentationAwareLexer")}static{E(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof wLe)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,t=AH){let r=super.tokenize(e),n=r.report;t?.mode==="full"&&r.tokens.push(...n.remainingDedents),n.remainingDedents=[];let{indentTokenType:i,dedentTokenType:a}=this.indentationTokenBuilder,s=i.tokenTypeIdx,l=a.tokenTypeIdx,u=[],h=r.tokens.length-1;for(let d=0;d=0&&u.push(r.tokens[h]),r.tokens=u,r}},BH={};yp(BH,{AstUtils:o(()=>sW,"AstUtils"),BiMap:o(()=>uR,"BiMap"),Cancellation:o(()=>Jn,"Cancellation"),ContextCache:o(()=>b_,"ContextCache"),CstUtils:o(()=>nW,"CstUtils"),DONE_RESULT:o(()=>Os,"DONE_RESULT"),Deferred:o(()=>Jh,"Deferred"),Disposable:o(()=>Yg,"Disposable"),DisposableCache:o(()=>x_,"DisposableCache"),DocumentCache:o(()=>U_e,"DocumentCache"),EMPTY_STREAM:o(()=>Tv,"EMPTY_STREAM"),ErrorWithLocation:o(()=>ER,"ErrorWithLocation"),GrammarUtils:o(()=>OW,"GrammarUtils"),MultiMap:o(()=>ed,"MultiMap"),OperationCancelled:o(()=>Pu,"OperationCancelled"),Reduction:o(()=>jC,"Reduction"),RegExpUtils:o(()=>$W,"RegExpUtils"),SimpleCache:o(()=>CH,"SimpleCache"),StreamImpl:o(()=>Nu,"StreamImpl"),TreeStreamImpl:o(()=>Cv,"TreeStreamImpl"),URI:o(()=>Yo,"URI"),UriTrie:o(()=>bH,"UriTrie"),UriUtils:o(()=>$s,"UriUtils"),WorkspaceCache:o(()=>wH,"WorkspaceCache"),assertCondition:o(()=>BW,"assertCondition"),assertUnreachable:o(()=>vp,"assertUnreachable"),delayNextTick:o(()=>y_,"delayNextTick"),interruptAndCheck:o(()=>Ia,"interruptAndCheck"),isOperationCancelled:o(()=>v0,"isOperationCancelled"),loadGrammarFromJson:o(()=>Ma,"loadGrammarFromJson"),setInterruptionPeriod:o(()=>yH,"setInterruptionPeriod"),startCancelableOperation:o(()=>v_,"startCancelableOperation"),stream:o(()=>Bn,"stream")});mR(BH,T_);kLe=class{static{o(this,"EmptyFileSystemProvider")}static{E(this,"EmptyFileSystemProvider")}stat(e){throw new Error("No file system is available.")}statSync(e){throw new Error("No file system is available.")}async exists(){return!1}existsSync(){return!1}readBinary(){throw new Error("No file system is available.")}readBinarySync(){throw new Error("No file system is available.")}readFile(){throw new Error("No file system is available.")}readFileSync(){throw new Error("No file system is available.")}async readDirectory(){return[]}readDirectorySync(){return[]}},yn={fileSystemProvider:E(()=>new kLe,"fileSystemProvider")},PEt={Grammar:E(()=>{},"Grammar"),LanguageMetaData:E(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},OEt={AstReflection:E(()=>new AW,"AstReflection")};o(SLe,"createMinimalGrammarServices");E(SLe,"createMinimalGrammarServices");o(Ma,"loadGrammarFromJson");E(Ma,"loadGrammarFromJson");mR(Pwe,BH);BEt=class{static{o(this,"DefaultLangiumProfiler")}static{E(this,"DefaultLangiumProfiler")}constructor(e){this.activeCategories=new Set,this.allCategories=new Set(["validating","parsing","linking"]),this.activeCategories=e??new Set(this.allCategories),this.records=new ed}isActive(e){return this.activeCategories.has(e)}start(...e){e?e.forEach(t=>this.activeCategories.add(t)):this.activeCategories=new Set(this.allCategories)}stop(...e){e?e.forEach(t=>this.activeCategories.delete(t)):this.activeCategories.clear()}createTask(e,t){if(!this.isActive(e))throw new Error(`Category "${e}" is not active.`);return console.log(`Creating profiling task for '${e}.${t}'.`),new ELe(r=>this.records.add(e,this.dumpRecord(e,r)),t)}dumpRecord(e,t){console.info(`Task ${e}.${t.identifier} executed in ${t.duration.toFixed(2)}ms and ended at ${t.date.toISOString()}`);let r=[];for(let a of t.entries.keys()){let s=t.entries.get(a),l=s.reduce((u,h)=>u+h);r.push({name:`${t.identifier}.${a}`,count:s.length,duration:l})}let n=t.duration-r.map(a=>a.duration).reduce((a,s)=>a+s,0);r.push({name:t.identifier,count:1,duration:n}),r.sort((a,s)=>s.duration-a.duration);function i(a){return Math.round(100*a)/100}return o(i,"Round"),E(i,"Round"),console.table(r.map(a=>({Element:a.name,Count:a.count,"Self %":i(100*a.duration/t.duration),"Time (ms)":i(a.duration)}))),t}getRecords(...e){return e.length===0?this.records.values():this.records.entries().filter(t=>e.some(r=>r===t[0])).flatMap(t=>t[1])}},ELe=class{static{o(this,"ProfilingTask")}static{E(this,"ProfilingTask")}constructor(e,t){this.stack=[],this.entries=new ed,this.addRecord=e,this.identifier=t}start(){if(this.startTime!==void 0)throw new Error(`Task "${this.identifier}" is already started.`);this.startTime=performance.now()}stop(){if(this.startTime===void 0)throw new Error(`Task "${this.identifier}" was not started.`);if(this.stack.length!==0)throw new Error(`Task "${this.identifier}" cannot be stopped before sub-task(s): ${this.stack.map(t=>t.id).join(", ")}.`);let e={identifier:this.identifier,date:new Date,duration:performance.now()-this.startTime,entries:this.entries};this.addRecord(e),this.startTime=void 0,this.entries.clear()}startSubTask(e){this.stack.push({id:e,start:performance.now(),content:0})}stopSubTask(e){let t=this.stack.pop();if(!t)throw new Error(`Task "${this.identifier}.${e}" was not started.`);if(t.id!==e)throw new Error(`Sub-Task "${t.id}" is not already stopped.`);let r=performance.now()-t.start;this.stack.at(-1)!==void 0&&(this.stack[this.stack.length-1].content+=r);let n=r-t.content;this.entries.add(e,n)}};(e=>{e.Terminals={ARROW_DIRECTION:/L|R|T|B/,ARROW_GROUP:/\{group\}/,ARROW_INTO:/<|>/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ARCH_ICON:/\([\w-:]+\)/,ARCH_TITLE:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/}})(aV||(aV={}));(e=>{e.Terminals={DOMAIN_NAME:/complex|complicated|clear|chaotic|confusion/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(sV||(sV={}));(e=>{e.Terminals={EM_ID:/[_a-zA-Z][\w_]*/,EM_FID:/\d{1,3}/,EM_DATA_INLINE:/\{(.*)\}|"(.*)"|'(.*)'/,EM_DATA_BLOCK:/\{[\t ]*\r?\n(?:[\S\s]*?\r?\n)?\}(?:\r?\n|(?!\S))/,EM_ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EM_ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,EM_TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,EM_WS:/\s+/,EM_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EM_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EM_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EM_ML_COMMENT:/\/\*[\s\S]*?\*\//,EM_SL_COMMENT:/\/\/[^\n\r]*/}})(oV||(oV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,REFERENCE:/\w([-\./\w]*[-\w])?/}})(lV||(lV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(cV||(cV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(uV||(uV={}));(e=>{e.Terminals={NUMBER_PIE:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(hV||(hV={}));(e=>{e.Terminals={GRATICULE:/circle|polygon/,BOOLEAN:/true|false/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NUMBER:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(dV||(dV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ABNF_RULENAME:/[A-Za-z][A-Za-z0-9-]*/,ABNF_STRING:/"[^"]*"/,ABNF_NUMVAL:/%[xXdDbB][0-9A-Fa-f]+(?:-[0-9A-Fa-f]+|\.[0-9A-Fa-f]+)*/,ABNF_REPEAT:/[0-9]*\*[0-9]*/,ABNF_EXACT_REPEAT:/[0-9]+/,ABNF_WHITESPACE:/[\t \r\n]+/,ABNF_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,ABNF_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,ABNF_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ABNF_COMMENT:/;[^\n\r]*/}})(fV||(fV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EBNF_ID:/[A-Z_a-z][\w-]*/,EBNF_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,EBNF_SPECIAL_SEQUENCE:/\?(?=[^?;]*[^?\s;][^?;]*\?)[^?;]*\?/,EBNF_WHITESPACE:/[\t \r\n]+/,EBNF_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EBNF_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EBNF_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EBNF_BLOCK_COMMENT:/\/\*[\s\S]*?\*\//,EBNF_ISO_COMMENT:/\(\*[\s\S]*?\*\)/}})(pV||(pV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,RR_ID:/[A-Z_a-z][\w-]*/,RR_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,RR_WHITESPACE:/[\t \r\n]+/,RR_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,RR_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,RR_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,RR_BLOCK_COMMENT:/\/\*[\s\S]*?\*\//}})(mV||(mV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,PEG_ID:/[A-Z_a-z][\w-]*/,PEG_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,PEG_WHITESPACE:/[\t \r\n]+/,PEG_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,PEG_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,PEG_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,PEG_LINE_COMMENT:/#[^\n\r]*/}})(gV||(gV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,TREEMAP_KEYWORD:/treemap-beta|treemap/,CLASS_DEF:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,STYLE_SEPARATOR:/:::/,SEPARATOR:/:/,COMMA:/,/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,ID2:/[a-zA-Z_][a-zA-Z0-9_]*/,NUMBER2:/[0-9_\.\,]+/,STRING2:/"[^"]*"|'[^']*'/}})(yV||(yV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,CLASS_ANNOTATION:/[ \t]+:::[ \t]*[A-Za-z_][\w-]*/,ICON_ANNOTATION:/[ \t]+icon\([\w-]*(?::[\w-]+)?\)/,DESC_ANNOTATION:/[ \t]+##[^\n\r]*/,INDENTATION:/[ \t]{1,}/,QUOTED_NAME:/"[^"]*"|'[^']*'/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,BARE_NAME:/(?!:::|icon\(|##)[^ \t\n\r"'](?:(?![ \t]+:::[ \t]*[A-Za-z_]|[ \t]+icon\(|[ \t]+##)[^\n\r])*/}})(vV||(vV={}));(e=>{e.Terminals={WARDLEY_NUMBER:/[0-9]+\.[0-9]+/,ARROW:/->/,LINK_PORT:/\+<>|\+>|\+|-\.->|>|\+'[^']*'<>|\+'[^']*'<|\+'[^']*'>/,LINK_LABEL:/;[^\n\r]+/,STRATEGY:/build|buy|outsource|market/,KW_WARDLEY:/wardley-beta/,KW_SIZE:/size/,KW_EVOLUTION:/evolution/,KW_ANCHOR:/anchor/,KW_COMPONENT:/component/,KW_LABEL:/label/,KW_INERTIA:/inertia/,KW_EVOLVE:/evolve/,KW_PIPELINE:/pipeline/,KW_NOTE:/note/,KW_ANNOTATIONS:/annotations/,KW_ANNOTATION:/annotation/,KW_ACCELERATOR:/accelerator/,KW_DEACCELERATOR:/deaccelerator/,NAME_WITH_SPACES:/(?!title\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/,WS:/[ \t]+/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(xV||(xV={}));GIr={...aV.Terminals,...sV.Terminals,...oV.Terminals,...lV.Terminals,...cV.Terminals,...uV.Terminals,...hV.Terminals,...dV.Terminals,...fV.Terminals,...pV.Terminals,...mV.Terminals,...gV.Terminals,...vV.Terminals,...yV.Terminals,...xV.Terminals},bV={$type:"AbnfAlternation",alternatives:"alternatives"},TV={$type:"AbnfConcatenation",elements:"elements"},v6={$type:"AbnfElement",primary:"primary",repeat:"repeat"},CV={$type:"AbnfGroup",element:"element"},wV={$type:"AbnfNumVal",value:"value"},kV={$type:"AbnfOptionalGroup",element:"element"},yg={$type:"AbnfPrimary"},x6={$type:"AbnfRule",definition:"definition",name:"name"},SV={$type:"AbnfRuleName",name:"name"},EV={$type:"AbnfStringLiteral",value:"value"},FA={$type:"Accelerator",name:"name",x:"x",y:"y"},cz={$type:"Alignment",direction:"direction",members:"members"},zA={$type:"Anchor",evolution:"evolution",name:"name",visibility:"visibility"},dC={$type:"Annotation",number:"number",text:"text",x:"x",y:"y"},uz={$type:"Annotations",x:"x",y:"y"},bc={$type:"Architecture",accDescr:"accDescr",accTitle:"accTitle",alignments:"alignments",edges:"edges",groups:"groups",junctions:"junctions",services:"services",title:"title"};o(ALe,"isArchitecture");E(ALe,"isArchitecture");GA={$type:"Axis",label:"label",name:"name"},qC={$type:"Branch",name:"name",order:"order"};o(RLe,"isBranch");E(RLe,"isBranch");owe={$type:"Checkout",branch:"branch"},VA={$type:"CherryPicking",id:"id",parent:"parent",tags:"tags"},hz={$type:"ClassDefStatement",className:"className",styleText:"styleText"},Mg={$type:"Commit",id:"id",message:"message",tags:"tags",type:"type"};o(_Le,"isCommit");E(_Le,"isCommit");WA={$type:"Common",accDescr:"accDescr",accTitle:"accTitle",title:"title"},cg={$type:"Component",decorator:"decorator",evolution:"evolution",inertia:"inertia",label:"label",name:"name",visibility:"visibility"},qA={$type:"Curve",entries:"entries",label:"label",name:"name"},cp={$type:"Cynefin",accDescr:"accDescr",accTitle:"accTitle",domains:"domains",title:"title",transitions:"transitions"};o(LLe,"isCynefin");E(LLe,"isCynefin");HA={$type:"Deaccelerator",name:"name",x:"x",y:"y"},lwe={$type:"Decorator",strategy:"strategy"},K1={$type:"Direction",accDescr:"accDescr",accTitle:"accTitle",dir:"dir",statements:"statements",title:"title"},HC={$type:"DomainBlock",domain:"domain",items:"items"};o(DLe,"isDomainBlock");E(DLe,"isDomainBlock");pR={$type:"DomainItem",label:"label"};o(ILe,"isDomainItem");E(ILe,"isDomainItem");AV={$type:"EbnfChoice",alternatives:"alternatives"},RV={$type:"EbnfExceptionPostfix",except:"except"},_V={$type:"EbnfGroup",element:"element"},LV={$type:"EbnfNonTerminal",name:"name"},DV={$type:"EbnfOneOrMorePostfix",operator:"operator"},IV={$type:"EbnfOptional",element:"element"},MV={$type:"EbnfOptionalPostfix",operator:"operator"},iv={$type:"EbnfPostfix"},tp={$type:"EbnfPrimary"},NV={$type:"EbnfRepetition",element:"element"},b6={$type:"EbnfRule",definition:"definition",name:"name"},PV={$type:"EbnfSequence",elements:"elements"},OV={$type:"EbnfSpecial",text:"text"},T6={$type:"EbnfTerm",base:"base",postfixes:"postfixes"},BV={$type:"EbnfTerminal",value:"value"},$V={$type:"EbnfZeroOrMorePostfix",operator:"operator"},Au={$type:"Edge",lhsDir:"lhsDir",lhsGroup:"lhsGroup",lhsId:"lhsId",lhsInto:"lhsInto",rhsDir:"rhsDir",rhsGroup:"rhsGroup",rhsId:"rhsId",rhsInto:"rhsInto",title:"title"},vg={$type:"EmDataEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",name:"name"},rp={$type:"EmFrame"},fC={$type:"EmGwt",givenStatements:"givenStatements",sourceFrame:"sourceFrame",thenStatements:"thenStatements",whenStatements:"whenStatements"},cwe={$type:"EmGwtStatement",entityIdentifier:"entityIdentifier"},dz={$type:"EmModelEntity",name:"name"};o(MLe,"isEmModelEntityType");E(MLe,"isEmModelEntityType");UA={$type:"EmNoteEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",sourceFrame:"sourceFrame"},Gh={$type:"EmResetFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"};o(S_,"isEmResetFrame");E(S_,"isEmResetFrame");ep={$type:"EmTimeFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"},fz={$type:"Entry",axis:"axis",value:"value"},_u={$type:"EventModel",accDescr:"accDescr",accTitle:"accTitle",dataEntities:"dataEntities",frames:"frames",gwtEntities:"gwtEntities",modelEntities:"modelEntities",noteEntities:"noteEntities",title:"title"},uwe={$type:"Evolution",stages:"stages"},YA={$type:"EvolutionStage",boundary:"boundary",name:"name",secondName:"secondName"},pz={$type:"Evolve",component:"component",target:"target"},up={$type:"GitGraph",accDescr:"accDescr",accTitle:"accTitle",statements:"statements",title:"title"};o(NLe,"isGitGraph");E(NLe,"isGitGraph");pC={$type:"Group",icon:"icon",id:"id",in:"in",title:"title"},mv={$type:"Info",accDescr:"accDescr",accTitle:"accTitle",title:"title"};o(PLe,"isInfo");E(PLe,"isInfo");mC={$type:"Item",classSelector:"classSelector",name:"name"},mz={$type:"Junction",id:"id",in:"in"},gC={$type:"Label",negX:"negX",negY:"negY",offsetX:"offsetX",offsetY:"offsetY"},jA={$type:"Leaf",classSelector:"classSelector",name:"name",value:"value"},ug={$type:"Link",arrow:"arrow",from:"from",fromPort:"fromPort",linkLabel:"linkLabel",to:"to",toPort:"toPort"},Ng={$type:"Merge",branch:"branch",id:"id",tags:"tags",type:"type"};o(OLe,"isMerge");E(OLe,"isMerge");XA={$type:"Note",evolution:"evolution",text:"text",visibility:"visibility"},gz={$type:"Option",name:"name",value:"value"},Pg={$type:"Packet",accDescr:"accDescr",accTitle:"accTitle",blocks:"blocks",title:"title"};o(BLe,"isPacket");E(BLe,"isPacket");Og={$type:"PacketBlock",bits:"bits",end:"end",label:"label",start:"start"};o($Le,"isPacketBlock");E($Le,"isPacketBlock");FV={$type:"PegAny",dot:"dot"},zV={$type:"PegGroup",element:"element"},GV={$type:"PegIdentifier",name:"name"},VV={$type:"PegLiteral",value:"value"},WV={$type:"PegOrderedChoice",alternatives:"alternatives"},C6={$type:"PegPrefix",operator:"operator",suffix:"suffix"},av={$type:"PegPrimary"},w6={$type:"PegRule",definition:"definition",name:"name"},qV={$type:"PegSequence",elements:"elements"},k6={$type:"PegSuffix",operator:"operator",primary:"primary"},hp={$type:"Pie",accDescr:"accDescr",accTitle:"accTitle",sections:"sections",showData:"showData",title:"title"};o(FLe,"isPie");E(FLe,"isPie");UC={$type:"PieSection",label:"label",value:"value"};o(zLe,"isPieSection");E(zLe,"isPieSection");yz={$type:"Pipeline",components:"components",parent:"parent"},KA={$type:"PipelineComponent",evolution:"evolution",label:"label",name:"name"},np={$type:"Radar",accDescr:"accDescr",accTitle:"accTitle",axes:"axes",curves:"curves",options:"options",title:"title"},Bg={$type:"Railroad",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(GLe,"isRailroad");E(GLe,"isRailroad");$g={$type:"RailroadAbnf",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(VLe,"isRailroadAbnf");E(VLe,"isRailroadAbnf");HV={$type:"RailroadChoiceExpr",alternatives:"alternatives"},Fg={$type:"RailroadEbnf",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(WLe,"isRailroadEbnf");E(WLe,"isRailroadEbnf");Lu={$type:"RailroadExpression"},UV={$type:"RailroadNonTerminalExpr",name:"name"},YV={$type:"RailroadOneOrMoreExpr",element:"element"},jV={$type:"RailroadOptionalExpr",element:"element"},zg={$type:"RailroadPeg",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(qLe,"isRailroadPeg");E(qLe,"isRailroadPeg");S6={$type:"RailroadRule",definition:"definition",name:"name"},XV={$type:"RailroadSequenceExpr",elements:"elements"},KV={$type:"RailroadSpecialExpr",text:"text"},ZV={$type:"RailroadTerminalExpr",value:"value"},QV={$type:"RailroadZeroOrMoreExpr",element:"element"},vz={$type:"Section",classSelector:"classSelector",name:"name"},Z1={$type:"Service",icon:"icon",iconText:"iconText",id:"id",in:"in",title:"title"},xz={$type:"Size",height:"height",width:"width"},xg={$type:"Statement"},gv={$type:"Transition",from:"from",label:"label",to:"to"};o(HLe,"isTransition");E(HLe,"isTransition");Gg={$type:"Treemap",accDescr:"accDescr",accTitle:"accTitle",title:"title",TreemapRows:"TreemapRows"};o(ULe,"isTreemap");E(ULe,"isTreemap");bz={$type:"TreemapRow",indent:"indent",item:"item"},bg={$type:"TreeNode",classAnnotation:"classAnnotation",descAnnotation:"descAnnotation",iconAnnotation:"iconAnnotation",indent:"indent",name:"name"},sv={$type:"TreeView",accDescr:"accDescr",accTitle:"accTitle",nodes:"nodes",title:"title"},La={$type:"Wardley",accDescr:"accDescr",accelerators:"accelerators",accTitle:"accTitle",anchors:"anchors",annotation:"annotation",annotations:"annotations",components:"components",deaccelerators:"deaccelerators",evolution:"evolution",evolves:"evolves",links:"links",notes:"notes",pipelines:"pipelines",size:"size",title:"title"};o(YLe,"isWardley");E(YLe,"isWardley");jLe=class extends aW{static{o(this,"MermaidAstReflection")}constructor(){super(...arguments),this.types={AbnfAlternation:{name:bV.$type,properties:{alternatives:{name:bV.alternatives,defaultValue:[]}},superTypes:[]},AbnfConcatenation:{name:TV.$type,properties:{elements:{name:TV.elements,defaultValue:[]}},superTypes:[]},AbnfElement:{name:v6.$type,properties:{primary:{name:v6.primary},repeat:{name:v6.repeat}},superTypes:[]},AbnfGroup:{name:CV.$type,properties:{element:{name:CV.element}},superTypes:[yg.$type]},AbnfNumVal:{name:wV.$type,properties:{value:{name:wV.value}},superTypes:[yg.$type]},AbnfOptionalGroup:{name:kV.$type,properties:{element:{name:kV.element}},superTypes:[yg.$type]},AbnfPrimary:{name:yg.$type,properties:{},superTypes:[]},AbnfRule:{name:x6.$type,properties:{definition:{name:x6.definition},name:{name:x6.name}},superTypes:[]},AbnfRuleName:{name:SV.$type,properties:{name:{name:SV.name}},superTypes:[yg.$type]},AbnfStringLiteral:{name:EV.$type,properties:{value:{name:EV.value}},superTypes:[yg.$type]},Accelerator:{name:FA.$type,properties:{name:{name:FA.name},x:{name:FA.x},y:{name:FA.y}},superTypes:[]},Alignment:{name:cz.$type,properties:{direction:{name:cz.direction},members:{name:cz.members,defaultValue:[]}},superTypes:[]},Anchor:{name:zA.$type,properties:{evolution:{name:zA.evolution},name:{name:zA.name},visibility:{name:zA.visibility}},superTypes:[]},Annotation:{name:dC.$type,properties:{number:{name:dC.number},text:{name:dC.text},x:{name:dC.x},y:{name:dC.y}},superTypes:[]},Annotations:{name:uz.$type,properties:{x:{name:uz.x},y:{name:uz.y}},superTypes:[]},Architecture:{name:bc.$type,properties:{accDescr:{name:bc.accDescr},accTitle:{name:bc.accTitle},alignments:{name:bc.alignments,defaultValue:[]},edges:{name:bc.edges,defaultValue:[]},groups:{name:bc.groups,defaultValue:[]},junctions:{name:bc.junctions,defaultValue:[]},services:{name:bc.services,defaultValue:[]},title:{name:bc.title}},superTypes:[]},Axis:{name:GA.$type,properties:{label:{name:GA.label},name:{name:GA.name}},superTypes:[]},Branch:{name:qC.$type,properties:{name:{name:qC.name},order:{name:qC.order}},superTypes:[xg.$type]},Checkout:{name:owe.$type,properties:{branch:{name:owe.branch}},superTypes:[xg.$type]},CherryPicking:{name:VA.$type,properties:{id:{name:VA.id},parent:{name:VA.parent},tags:{name:VA.tags,defaultValue:[]}},superTypes:[xg.$type]},ClassDefStatement:{name:hz.$type,properties:{className:{name:hz.className},styleText:{name:hz.styleText}},superTypes:[]},Commit:{name:Mg.$type,properties:{id:{name:Mg.id},message:{name:Mg.message},tags:{name:Mg.tags,defaultValue:[]},type:{name:Mg.type}},superTypes:[xg.$type]},Common:{name:WA.$type,properties:{accDescr:{name:WA.accDescr},accTitle:{name:WA.accTitle},title:{name:WA.title}},superTypes:[]},Component:{name:cg.$type,properties:{decorator:{name:cg.decorator},evolution:{name:cg.evolution},inertia:{name:cg.inertia,defaultValue:!1},label:{name:cg.label},name:{name:cg.name},visibility:{name:cg.visibility}},superTypes:[]},Curve:{name:qA.$type,properties:{entries:{name:qA.entries,defaultValue:[]},label:{name:qA.label},name:{name:qA.name}},superTypes:[]},Cynefin:{name:cp.$type,properties:{accDescr:{name:cp.accDescr},accTitle:{name:cp.accTitle},domains:{name:cp.domains,defaultValue:[]},title:{name:cp.title},transitions:{name:cp.transitions,defaultValue:[]}},superTypes:[]},Deaccelerator:{name:HA.$type,properties:{name:{name:HA.name},x:{name:HA.x},y:{name:HA.y}},superTypes:[]},Decorator:{name:lwe.$type,properties:{strategy:{name:lwe.strategy}},superTypes:[]},Direction:{name:K1.$type,properties:{accDescr:{name:K1.accDescr},accTitle:{name:K1.accTitle},dir:{name:K1.dir},statements:{name:K1.statements,defaultValue:[]},title:{name:K1.title}},superTypes:[up.$type]},DomainBlock:{name:HC.$type,properties:{domain:{name:HC.domain},items:{name:HC.items,defaultValue:[]}},superTypes:[]},DomainItem:{name:pR.$type,properties:{label:{name:pR.label}},superTypes:[]},EbnfChoice:{name:AV.$type,properties:{alternatives:{name:AV.alternatives,defaultValue:[]}},superTypes:[]},EbnfExceptionPostfix:{name:RV.$type,properties:{except:{name:RV.except}},superTypes:[iv.$type]},EbnfGroup:{name:_V.$type,properties:{element:{name:_V.element}},superTypes:[tp.$type]},EbnfNonTerminal:{name:LV.$type,properties:{name:{name:LV.name}},superTypes:[tp.$type]},EbnfOneOrMorePostfix:{name:DV.$type,properties:{operator:{name:DV.operator}},superTypes:[iv.$type]},EbnfOptional:{name:IV.$type,properties:{element:{name:IV.element}},superTypes:[tp.$type]},EbnfOptionalPostfix:{name:MV.$type,properties:{operator:{name:MV.operator}},superTypes:[iv.$type]},EbnfPostfix:{name:iv.$type,properties:{},superTypes:[]},EbnfPrimary:{name:tp.$type,properties:{},superTypes:[]},EbnfRepetition:{name:NV.$type,properties:{element:{name:NV.element}},superTypes:[tp.$type]},EbnfRule:{name:b6.$type,properties:{definition:{name:b6.definition},name:{name:b6.name}},superTypes:[]},EbnfSequence:{name:PV.$type,properties:{elements:{name:PV.elements,defaultValue:[]}},superTypes:[]},EbnfSpecial:{name:OV.$type,properties:{text:{name:OV.text}},superTypes:[tp.$type]},EbnfTerm:{name:T6.$type,properties:{base:{name:T6.base},postfixes:{name:T6.postfixes,defaultValue:[]}},superTypes:[]},EbnfTerminal:{name:BV.$type,properties:{value:{name:BV.value}},superTypes:[tp.$type]},EbnfZeroOrMorePostfix:{name:$V.$type,properties:{operator:{name:$V.operator}},superTypes:[iv.$type]},Edge:{name:Au.$type,properties:{lhsDir:{name:Au.lhsDir},lhsGroup:{name:Au.lhsGroup,defaultValue:!1},lhsId:{name:Au.lhsId},lhsInto:{name:Au.lhsInto,defaultValue:!1},rhsDir:{name:Au.rhsDir},rhsGroup:{name:Au.rhsGroup,defaultValue:!1},rhsId:{name:Au.rhsId},rhsInto:{name:Au.rhsInto,defaultValue:!1},title:{name:Au.title}},superTypes:[]},EmDataEntity:{name:vg.$type,properties:{dataBlockValue:{name:vg.dataBlockValue},dataType:{name:vg.dataType},name:{name:vg.name}},superTypes:[]},EmFrame:{name:rp.$type,properties:{},superTypes:[]},EmGwt:{name:fC.$type,properties:{givenStatements:{name:fC.givenStatements,defaultValue:[]},sourceFrame:{name:fC.sourceFrame,referenceType:rp.$type},thenStatements:{name:fC.thenStatements,defaultValue:[]},whenStatements:{name:fC.whenStatements,defaultValue:[]}},superTypes:[]},EmGwtStatement:{name:cwe.$type,properties:{entityIdentifier:{name:cwe.entityIdentifier,referenceType:dz.$type}},superTypes:[]},EmModelEntity:{name:dz.$type,properties:{name:{name:dz.name}},superTypes:[]},EmNoteEntity:{name:UA.$type,properties:{dataBlockValue:{name:UA.dataBlockValue},dataType:{name:UA.dataType},sourceFrame:{name:UA.sourceFrame,referenceType:rp.$type}},superTypes:[]},EmResetFrame:{name:Gh.$type,properties:{dataInlineValue:{name:Gh.dataInlineValue},dataReference:{name:Gh.dataReference,referenceType:vg.$type},dataType:{name:Gh.dataType},entityIdentifier:{name:Gh.entityIdentifier},modelEntityType:{name:Gh.modelEntityType},name:{name:Gh.name},sourceFrames:{name:Gh.sourceFrames,defaultValue:[],referenceType:rp.$type}},superTypes:[rp.$type]},EmTimeFrame:{name:ep.$type,properties:{dataInlineValue:{name:ep.dataInlineValue},dataReference:{name:ep.dataReference,referenceType:vg.$type},dataType:{name:ep.dataType},entityIdentifier:{name:ep.entityIdentifier},modelEntityType:{name:ep.modelEntityType},name:{name:ep.name},sourceFrames:{name:ep.sourceFrames,defaultValue:[],referenceType:rp.$type}},superTypes:[rp.$type]},Entry:{name:fz.$type,properties:{axis:{name:fz.axis,referenceType:GA.$type},value:{name:fz.value}},superTypes:[]},EventModel:{name:_u.$type,properties:{accDescr:{name:_u.accDescr},accTitle:{name:_u.accTitle},dataEntities:{name:_u.dataEntities,defaultValue:[]},frames:{name:_u.frames,defaultValue:[]},gwtEntities:{name:_u.gwtEntities,defaultValue:[]},modelEntities:{name:_u.modelEntities,defaultValue:[]},noteEntities:{name:_u.noteEntities,defaultValue:[]},title:{name:_u.title}},superTypes:[]},Evolution:{name:uwe.$type,properties:{stages:{name:uwe.stages,defaultValue:[]}},superTypes:[]},EvolutionStage:{name:YA.$type,properties:{boundary:{name:YA.boundary},name:{name:YA.name},secondName:{name:YA.secondName}},superTypes:[]},Evolve:{name:pz.$type,properties:{component:{name:pz.component},target:{name:pz.target}},superTypes:[]},GitGraph:{name:up.$type,properties:{accDescr:{name:up.accDescr},accTitle:{name:up.accTitle},statements:{name:up.statements,defaultValue:[]},title:{name:up.title}},superTypes:[]},Group:{name:pC.$type,properties:{icon:{name:pC.icon},id:{name:pC.id},in:{name:pC.in},title:{name:pC.title}},superTypes:[]},Info:{name:mv.$type,properties:{accDescr:{name:mv.accDescr},accTitle:{name:mv.accTitle},title:{name:mv.title}},superTypes:[]},Item:{name:mC.$type,properties:{classSelector:{name:mC.classSelector},name:{name:mC.name}},superTypes:[]},Junction:{name:mz.$type,properties:{id:{name:mz.id},in:{name:mz.in}},superTypes:[]},Label:{name:gC.$type,properties:{negX:{name:gC.negX,defaultValue:!1},negY:{name:gC.negY,defaultValue:!1},offsetX:{name:gC.offsetX},offsetY:{name:gC.offsetY}},superTypes:[]},Leaf:{name:jA.$type,properties:{classSelector:{name:jA.classSelector},name:{name:jA.name},value:{name:jA.value}},superTypes:[mC.$type]},Link:{name:ug.$type,properties:{arrow:{name:ug.arrow},from:{name:ug.from},fromPort:{name:ug.fromPort},linkLabel:{name:ug.linkLabel},to:{name:ug.to},toPort:{name:ug.toPort}},superTypes:[]},Merge:{name:Ng.$type,properties:{branch:{name:Ng.branch},id:{name:Ng.id},tags:{name:Ng.tags,defaultValue:[]},type:{name:Ng.type}},superTypes:[xg.$type]},Note:{name:XA.$type,properties:{evolution:{name:XA.evolution},text:{name:XA.text},visibility:{name:XA.visibility}},superTypes:[]},Option:{name:gz.$type,properties:{name:{name:gz.name},value:{name:gz.value,defaultValue:!1}},superTypes:[]},Packet:{name:Pg.$type,properties:{accDescr:{name:Pg.accDescr},accTitle:{name:Pg.accTitle},blocks:{name:Pg.blocks,defaultValue:[]},title:{name:Pg.title}},superTypes:[]},PacketBlock:{name:Og.$type,properties:{bits:{name:Og.bits},end:{name:Og.end},label:{name:Og.label},start:{name:Og.start}},superTypes:[]},PegAny:{name:FV.$type,properties:{dot:{name:FV.dot}},superTypes:[av.$type]},PegGroup:{name:zV.$type,properties:{element:{name:zV.element}},superTypes:[av.$type]},PegIdentifier:{name:GV.$type,properties:{name:{name:GV.name}},superTypes:[av.$type]},PegLiteral:{name:VV.$type,properties:{value:{name:VV.value}},superTypes:[av.$type]},PegOrderedChoice:{name:WV.$type,properties:{alternatives:{name:WV.alternatives,defaultValue:[]}},superTypes:[]},PegPrefix:{name:C6.$type,properties:{operator:{name:C6.operator},suffix:{name:C6.suffix}},superTypes:[]},PegPrimary:{name:av.$type,properties:{},superTypes:[]},PegRule:{name:w6.$type,properties:{definition:{name:w6.definition},name:{name:w6.name}},superTypes:[]},PegSequence:{name:qV.$type,properties:{elements:{name:qV.elements,defaultValue:[]}},superTypes:[]},PegSuffix:{name:k6.$type,properties:{operator:{name:k6.operator},primary:{name:k6.primary}},superTypes:[]},Pie:{name:hp.$type,properties:{accDescr:{name:hp.accDescr},accTitle:{name:hp.accTitle},sections:{name:hp.sections,defaultValue:[]},showData:{name:hp.showData,defaultValue:!1},title:{name:hp.title}},superTypes:[]},PieSection:{name:UC.$type,properties:{label:{name:UC.label},value:{name:UC.value}},superTypes:[]},Pipeline:{name:yz.$type,properties:{components:{name:yz.components,defaultValue:[]},parent:{name:yz.parent}},superTypes:[]},PipelineComponent:{name:KA.$type,properties:{evolution:{name:KA.evolution},label:{name:KA.label},name:{name:KA.name}},superTypes:[]},Radar:{name:np.$type,properties:{accDescr:{name:np.accDescr},accTitle:{name:np.accTitle},axes:{name:np.axes,defaultValue:[]},curves:{name:np.curves,defaultValue:[]},options:{name:np.options,defaultValue:[]},title:{name:np.title}},superTypes:[]},Railroad:{name:Bg.$type,properties:{accDescr:{name:Bg.accDescr},accTitle:{name:Bg.accTitle},rules:{name:Bg.rules,defaultValue:[]},title:{name:Bg.title}},superTypes:[]},RailroadAbnf:{name:$g.$type,properties:{accDescr:{name:$g.accDescr},accTitle:{name:$g.accTitle},rules:{name:$g.rules,defaultValue:[]},title:{name:$g.title}},superTypes:[]},RailroadChoiceExpr:{name:HV.$type,properties:{alternatives:{name:HV.alternatives,defaultValue:[]}},superTypes:[Lu.$type]},RailroadEbnf:{name:Fg.$type,properties:{accDescr:{name:Fg.accDescr},accTitle:{name:Fg.accTitle},rules:{name:Fg.rules,defaultValue:[]},title:{name:Fg.title}},superTypes:[]},RailroadExpression:{name:Lu.$type,properties:{},superTypes:[]},RailroadNonTerminalExpr:{name:UV.$type,properties:{name:{name:UV.name}},superTypes:[Lu.$type]},RailroadOneOrMoreExpr:{name:YV.$type,properties:{element:{name:YV.element}},superTypes:[Lu.$type]},RailroadOptionalExpr:{name:jV.$type,properties:{element:{name:jV.element}},superTypes:[Lu.$type]},RailroadPeg:{name:zg.$type,properties:{accDescr:{name:zg.accDescr},accTitle:{name:zg.accTitle},rules:{name:zg.rules,defaultValue:[]},title:{name:zg.title}},superTypes:[]},RailroadRule:{name:S6.$type,properties:{definition:{name:S6.definition},name:{name:S6.name}},superTypes:[]},RailroadSequenceExpr:{name:XV.$type,properties:{elements:{name:XV.elements,defaultValue:[]}},superTypes:[Lu.$type]},RailroadSpecialExpr:{name:KV.$type,properties:{text:{name:KV.text}},superTypes:[Lu.$type]},RailroadTerminalExpr:{name:ZV.$type,properties:{value:{name:ZV.value}},superTypes:[Lu.$type]},RailroadZeroOrMoreExpr:{name:QV.$type,properties:{element:{name:QV.element}},superTypes:[Lu.$type]},Section:{name:vz.$type,properties:{classSelector:{name:vz.classSelector},name:{name:vz.name}},superTypes:[mC.$type]},Service:{name:Z1.$type,properties:{icon:{name:Z1.icon},iconText:{name:Z1.iconText},id:{name:Z1.id},in:{name:Z1.in},title:{name:Z1.title}},superTypes:[]},Size:{name:xz.$type,properties:{height:{name:xz.height},width:{name:xz.width}},superTypes:[]},Statement:{name:xg.$type,properties:{},superTypes:[]},Transition:{name:gv.$type,properties:{from:{name:gv.from},label:{name:gv.label},to:{name:gv.to}},superTypes:[]},TreeNode:{name:bg.$type,properties:{classAnnotation:{name:bg.classAnnotation},descAnnotation:{name:bg.descAnnotation},iconAnnotation:{name:bg.iconAnnotation},indent:{name:bg.indent},name:{name:bg.name}},superTypes:[]},TreeView:{name:sv.$type,properties:{accDescr:{name:sv.accDescr},accTitle:{name:sv.accTitle},nodes:{name:sv.nodes,defaultValue:[]},title:{name:sv.title}},superTypes:[]},Treemap:{name:Gg.$type,properties:{accDescr:{name:Gg.accDescr},accTitle:{name:Gg.accTitle},title:{name:Gg.title},TreemapRows:{name:Gg.TreemapRows,defaultValue:[]}},superTypes:[]},TreemapRow:{name:bz.$type,properties:{indent:{name:bz.indent},item:{name:bz.item}},superTypes:[]},Wardley:{name:La.$type,properties:{accDescr:{name:La.accDescr},accelerators:{name:La.accelerators,defaultValue:[]},accTitle:{name:La.accTitle},anchors:{name:La.anchors,defaultValue:[]},annotation:{name:La.annotation,defaultValue:[]},annotations:{name:La.annotations,defaultValue:[]},components:{name:La.components,defaultValue:[]},deaccelerators:{name:La.deaccelerators,defaultValue:[]},evolution:{name:La.evolution},evolves:{name:La.evolves,defaultValue:[]},links:{name:La.links,defaultValue:[]},notes:{name:La.notes,defaultValue:[]},pipelines:{name:La.pipelines,defaultValue:[]},size:{name:La.size},title:{name:La.title}},superTypes:[]}}}static{E(this,"MermaidAstReflection")}},Fi=new jLe,$Et=E(()=>hwe??(hwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"alignments","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Alignment","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"align"},{"$type":"Assignment","feature":"direction","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"row"},{"$type":"Keyword","value":"column"}]}},{"$type":"Assignment","feature":"members","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"members","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@20"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"ArchitectureGrammarGrammar"),FEt=E(()=>dwe??(dwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"CynefinGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Cynefin","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"cynefin-beta"},{"$type":"Keyword","value":"cynefin-beta:"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"domains","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"transitions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"DomainBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"domain","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Assignment","feature":"items","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"DomainItem","definition":{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Transition","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":"-->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"DOMAIN_NAME","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"complex"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"complicated"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"clear"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"chaotic"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"confusion"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"CynefinGrammarGrammar"),zEt=E(()=>fwe??(fwe=Ma('{"$type":"Grammar","isDeclared":true,"name":"EventModeling","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","entry":true,"name":"EventModel","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"eventmodeling"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"frames","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"dataEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"noteEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"gwtEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntityType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rmo"},{"$type":"Keyword","value":"readmodel"},{"$type":"Keyword","value":"ui"},{"$type":"Keyword","value":"cmd"},{"$type":"Keyword","value":"command"},{"$type":"Keyword","value":"evt"},{"$type":"Keyword","value":"event"},{"$type":"Keyword","value":"pcr"},{"$type":"Keyword","value":"processor"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"json"},{"$type":"Keyword","value":"jsobj"},{"$type":"Keyword","value":"figma"},{"$type":"Keyword","value":"salt"},{"$type":"Keyword","value":"uri"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"html"},{"$type":"Keyword","value":"text"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataInline","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataInlineValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataBlock","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataBlockValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"QualifiedName","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"."},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmTimeFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"tf"},{"$type":"Keyword","value":"timeframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmResetFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rf"},{"$type":"Keyword","value":"resetframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmFrame","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"entity"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"data"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmNoteEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"note"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwt","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"gwt"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"given"},{"$type":"Assignment","feature":"givenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Keyword","value":"when"},{"$type":"Assignment","feature":"whenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}],"cardinality":"?"},{"$type":"Keyword","value":"then"},{"$type":"Assignment","feature":"thenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwtStatement","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@9"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_EID","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_FI","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"EM_ID","definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_FID","definition":{"$type":"RegexToken","regex":"/\\\\d{1,3}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_INLINE","definition":{"$type":"RegexToken","regex":"/\\\\{(.*)\\\\}|\\"(.*)\\"|\'(.*)\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_BLOCK","definition":{"$type":"RegexToken","regex":"/\\\\{[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?\\\\}(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EM_WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"imports":[],"types":[]}')),"EventModelingGrammar"),GEt=E(()=>pwe??(pwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"GitGraphGrammarGrammar"),VEt=E(()=>mwe??(mwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"InfoGrammarGrammar"),WEt=E(()=>gwe??(gwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PacketGrammarGrammar"),qEt=E(()=>ywe??(ywe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PieGrammarGrammar"),HEt=E(()=>vwe??(vwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}`)),"RadarGrammarGrammar"),UEt=E(()=>xwe??(xwe=Ma('{"$type":"Grammar","isDeclared":true,"name":"RailroadAbnfGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_RULENAME","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Za-z][A-Za-z0-9-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_NUMVAL","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/%[xXdDbB][0-9A-Fa-f]+(?:-[0-9A-Fa-f]+|\\\\.[0-9A-Fa-f]+)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_REPEAT","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[0-9]*\\\\*[0-9]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_EXACT_REPEAT","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_COMMENT","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadAbnf","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-abnf-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"="},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfAlternation","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfConcatenation","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"cardinality":"+"},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfElement","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"repeat","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"repeat","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"primary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfPrimary","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfStringLiteral","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfNumVal","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfRuleName","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfGroup","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfOptionalGroup","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadAbnf","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfAlternation","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfConcatenation","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfElement","attributes":[{"$type":"TypeAttribute","name":"repeat","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"primary","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"AbnfStringLiteral","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfNumVal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfRuleName","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"AbnfOptionalGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]}],"imports":[],"types":[]}')),"RailroadAbnfGrammarGrammar"),YEt=E(()=>bwe??(bwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadEbnfGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_SPECIAL_SEQUENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\?(?=[^?;]*[^?\\\\s;][^?;]*\\\\?)[^?;]*\\\\?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_ISO_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\(\\\\*[\\\\s\\\\S]*?\\\\*\\\\)/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadEbnf","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-ebnf-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"="},{"$type":"Keyword","value":"::="}]},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfChoice","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"|"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfSequence","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":",","cardinality":"?"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfTerm","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"base","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"postfixes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfPrimary","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfTerminal","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfNonTerminal","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfSpecial","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfGroup","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOptional","returnType":{"$ref":"#/interfaces@11"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfRepetition","returnType":{"$ref":"#/interfaces@12"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfPostfix","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOptionalPostfix","returnType":{"$ref":"#/interfaces@13"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"?"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfZeroOrMorePostfix","returnType":{"$ref":"#/interfaces@14"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"*"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOneOrMorePostfix","returnType":{"$ref":"#/interfaces@15"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"+"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfExceptionPostfix","returnType":{"$ref":"#/interfaces@16"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"except","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadEbnf","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfChoice","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfSequence","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfTerm","attributes":[{"$type":"TypeAttribute","name":"base","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false},{"$type":"TypeAttribute","name":"postfixes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@6"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"EbnfPostfix","attributes":[],"superTypes":[]},{"$type":"Interface","name":"EbnfTerminal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfNonTerminal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfSpecial","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"text","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfOptional","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfRepetition","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfOptionalPostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfZeroOrMorePostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfOneOrMorePostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfExceptionPostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"except","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadEbnfGrammarGrammar"),jEt=E(()=>Twe??(Twe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"RR_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"RR_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"RR_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"Railroad","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"="},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadExpression","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadSequenceExpr","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"sequence"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadChoiceExpr","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"choice"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadOptionalExpr","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"optional"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadOneOrMoreExpr","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"oneOrMore"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadZeroOrMoreExpr","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"zeroOrMore"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadTerminalExpr","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"terminal"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadNonTerminalExpr","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"nonterminal"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadSpecialExpr","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"special"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"Railroad","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"RailroadRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"RailroadExpression","attributes":[],"superTypes":[]},{"$type":"Interface","name":"RailroadSequenceExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}},"isOptional":false}]},{"$type":"Interface","name":"RailroadChoiceExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}},"isOptional":false}]},{"$type":"Interface","name":"RailroadOptionalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadOneOrMoreExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadZeroOrMoreExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadTerminalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"RailroadNonTerminalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"RailroadSpecialExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"text","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadGrammarGrammar"),XEt=E(()=>Cwe??(Cwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadPegGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PEG_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PEG_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/#[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadPeg","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-peg-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"<-"},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegOrderedChoice","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegSequence","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"+"},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegPrefix","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"&"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"!"}}],"cardinality":"?"},{"$type":"Assignment","feature":"suffix","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegSuffix","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"primary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"?"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"*"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"+"}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegPrimary","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegLiteral","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegIdentifier","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegGroup","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegAny","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Assignment","feature":"dot","operator":"=","terminal":{"$type":"Keyword","value":"."}},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadPeg","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegOrderedChoice","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegSequence","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegPrefix","attributes":[{"$type":"TypeAttribute","name":"operator","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"suffix","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegSuffix","attributes":[{"$type":"TypeAttribute","name":"primary","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@6"}},"isOptional":false},{"$type":"TypeAttribute","name":"operator","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"PegPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"PegLiteral","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"PegIdentifier","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"PegGroup","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"PegAny","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"dot","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadPegGrammarGrammar"),KEt=E(()=>wwe??(wwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammarGrammar"),ZEt=E(()=>kwe??(kwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"TreeViewGrammar","rules":[{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"TreeView","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"treeView-beta"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"nodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"CLASS_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+:::[ \\\\t]*[A-Za-z_][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ICON_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+icon\\\\([\\\\w-]*(?::[\\\\w-]+)?\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DESC_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+##[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"QUOTED_NAME","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"BARE_NAME","definition":{"$type":"RegexToken","regex":"/(?!:::|icon\\\\(|##)[^ \\\\t\\\\n\\\\r\\"'](?:(?![ \\\\t]+:::[ \\\\t]*[A-Za-z_]|[ \\\\t]+icon\\\\(|[ \\\\t]+##)[^\\\\n\\\\r])*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TreeNode","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"classAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"iconAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"descAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"TreeView","attributes":[{"$type":"TypeAttribute","name":"nodes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * TreeView grammar for Langium\\n *\\n * Supports both quoted labels (\\"my file\\") and bare labels (index.js).\\n * Annotations (:::class, icon(), ## description) are parsed directly into\\n * AST fields by the grammar. Value conversion for stripping quotes, extracting\\n * class names, icon names, and description text happens in valueConverter.ts.\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treeView keyword, allowing for empty lines and comments before the\\n * treeView declaration.\\n */"}`)),"TreeViewGrammarGrammar"),QEt=E(()=>Swe??(Swe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"WardleyGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Wardley","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"size","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"anchors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"links","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"evolves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"pipelines","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"notes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"annotations","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"annotation","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"deaccelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Size","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"width","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"height","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolution","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EvolutionStage","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"@"},{"$type":"Assignment","feature":"boundary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}],"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"secondName","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Anchor","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Component","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"decorator","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Keyword","value":")"}]}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Label","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"negX","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetX","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"negY","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetY","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Decorator","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"strategy","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Link","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"fromPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"arrow","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"?"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"toPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"linkLabel","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolve","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},{"$type":"Assignment","feature":"component","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Pipeline","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PipelineComponent","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Note","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotations","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotation","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"Assignment","feature":"number","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CoordinateValue","dataType":"number","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Accelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Deaccelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"WARDLEY_NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"->"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_PORT","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<>"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+>"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_ARROW","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-->"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-.->"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":">"},"parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'<>/","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'/","parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_LABEL","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRATEGY","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"build"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"buy"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"outsource"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"market"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_WARDLEY","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"wardley-beta"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_SIZE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"size"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLUTION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolution"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANCHOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"anchor"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_COMPONENT","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"component"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_LABEL","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"label"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_INERTIA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"inertia"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLVE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolve"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_PIPELINE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"pipeline"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_NOTE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"note"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATIONS","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotations"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotation"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"accelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_DEACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"deaccelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NAME_WITH_SPACES","definition":{"$type":"RegexToken","regex":"/(?!title\\\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\\\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@47"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@48"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"WardleyGrammarGrammar"),JEt={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},e4t={languageId:"cynefin",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},t4t={languageId:"eventmodeling",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},r4t={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},n4t={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},i4t={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},a4t={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},s4t={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},o4t={languageId:"railroadAbnf",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},l4t={languageId:"railroadEbnf",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},c4t={languageId:"railroad",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},u4t={languageId:"railroadPeg",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},h4t={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},d4t={languageId:"treeView",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},f4t={languageId:"wardley",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},An={AstReflection:E(()=>new jLe,"AstReflection")},$H={Grammar:E(()=>$Et(),"Grammar"),LanguageMetaData:E(()=>JEt,"LanguageMetaData"),parser:{}},FH={Grammar:E(()=>FEt(),"Grammar"),LanguageMetaData:E(()=>e4t,"LanguageMetaData"),parser:{}},zH={Grammar:E(()=>zEt(),"Grammar"),LanguageMetaData:E(()=>t4t,"LanguageMetaData"),parser:{}},GH={Grammar:E(()=>GEt(),"Grammar"),LanguageMetaData:E(()=>r4t,"LanguageMetaData"),parser:{}},VH={Grammar:E(()=>VEt(),"Grammar"),LanguageMetaData:E(()=>n4t,"LanguageMetaData"),parser:{}},WH={Grammar:E(()=>WEt(),"Grammar"),LanguageMetaData:E(()=>i4t,"LanguageMetaData"),parser:{}},qH={Grammar:E(()=>qEt(),"Grammar"),LanguageMetaData:E(()=>a4t,"LanguageMetaData"),parser:{}},HH={Grammar:E(()=>HEt(),"Grammar"),LanguageMetaData:E(()=>s4t,"LanguageMetaData"),parser:{}},UH={Grammar:E(()=>UEt(),"Grammar"),LanguageMetaData:E(()=>o4t,"LanguageMetaData"),parser:{}},YH={Grammar:E(()=>YEt(),"Grammar"),LanguageMetaData:E(()=>l4t,"LanguageMetaData"),parser:{}},jH={Grammar:E(()=>jEt(),"Grammar"),LanguageMetaData:E(()=>c4t,"LanguageMetaData"),parser:{}},XH={Grammar:E(()=>XEt(),"Grammar"),LanguageMetaData:E(()=>u4t,"LanguageMetaData"),parser:{}},KH={Grammar:E(()=>KEt(),"Grammar"),LanguageMetaData:E(()=>h4t,"LanguageMetaData"),parser:{}},ZH={Grammar:E(()=>ZEt(),"Grammar"),LanguageMetaData:E(()=>d4t,"LanguageMetaData"),parser:{}},QH={Grammar:E(()=>QEt(),"Grammar"),LanguageMetaData:E(()=>f4t,"LanguageMetaData"),parser:{}},p4t=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,m4t=/accTitle[\t ]*:([^\n\r]*)/,g4t=/title([\t ][^\n\r]*|)/,y4t={ACC_DESCR:p4t,ACC_TITLE:m4t,TITLE:g4t},Qi=class extends gH{static{o(this,"AbstractMermaidValueConverter")}static{E(this,"AbstractMermaidValueConverter")}runConverter(e,t,r){let n=this.runCommonConverter(e,t,r);return n===void 0&&(n=this.runCustomConverter(e,t,r)),n===void 0?super.runConverter(e,t,r):n}runCommonConverter(e,t,r){let n=y4t[e.name];if(n===void 0)return;let i=n.exec(t);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`)}}},Jo=class extends Qi{static{o(this,"CommonValueConverter")}static{E(this,"CommonValueConverter")}runCustomConverter(e,t,r){}},Mn=class extends g_{static{o(this,"AbstractMermaidTokenBuilder")}static{E(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,r){let n=super.buildKeywordTokens(e,t,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},v4t=class extends Mn{static{o(this,"CommonTokenBuilder")}static{E(this,"CommonTokenBuilder")}};});function A_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),HH,E_);return t.ServiceRegistry.register(r),{shared:t,Radar:r}}var x4t,E_,JH=F(()=>{"use strict";vn();x4t=class extends Mn{static{o(this,"RadarTokenBuilder")}static{E(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},E_={parser:{TokenBuilder:E(()=>new x4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(A_,"createRadarServices");E(A_,"createRadarServices")});function Vv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),jH,R_);return t.ServiceRegistry.register(r),{shared:t,Railroad:r}}var b4t,XLe,T4t,R_,eU=F(()=>{"use strict";vn();b4t=class extends Mn{static{o(this,"RailroadTokenBuilder")}static{E(this,"RailroadTokenBuilder")}constructor(){super(["railroad-beta"])}},XLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;nnew b4t,"TokenBuilder"),ValueConverter:E(()=>new T4t,"ValueConverter")}};o(Vv,"createRailroadServices");E(Vv,"createRailroadServices")});function Wv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),YH,__);return t.ServiceRegistry.register(r),{shared:t,RailroadEbnf:r}}var C4t,KLe,w4t,__,tU=F(()=>{"use strict";vn();C4t=class extends Mn{static{o(this,"RailroadEbnfTokenBuilder")}static{E(this,"RailroadEbnfTokenBuilder")}constructor(){super(["railroad-ebnf-beta"])}},KLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;nnew C4t,"TokenBuilder"),ValueConverter:E(()=>new w4t,"ValueConverter")}};o(Wv,"createRailroadEbnfServices");E(Wv,"createRailroadEbnfServices")});function qv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),UH,L_);return t.ServiceRegistry.register(r),{shared:t,RailroadAbnf:r}}var k4t,S4t,L_,rU=F(()=>{"use strict";vn();k4t=class extends Mn{static{o(this,"RailroadAbnfTokenBuilder")}static{E(this,"RailroadAbnfTokenBuilder")}constructor(){super(["railroad-abnf-beta"])}},S4t=class extends Qi{static{o(this,"RailroadAbnfValueConverter")}static{E(this,"RailroadAbnfValueConverter")}runConverter(e,t,r){let n=super.runConverter(e,t,r);if(e.name==="TITLE"&&typeof n=="string"){let i=n.trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))return i.slice(1,-1)}return n}runCustomConverter(e,t,r){if(e.name==="ABNF_STRING")return t.slice(1,-1)}},L_={parser:{TokenBuilder:E(()=>new k4t,"TokenBuilder"),ValueConverter:E(()=>new S4t,"ValueConverter")}};o(qv,"createRailroadAbnfServices");E(qv,"createRailroadAbnfServices")});function Hv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),XH,D_);return t.ServiceRegistry.register(r),{shared:t,RailroadPeg:r}}var E4t,ZLe,A4t,D_,nU=F(()=>{"use strict";vn();E4t=class extends Mn{static{o(this,"RailroadPegTokenBuilder")}static{E(this,"RailroadPegTokenBuilder")}constructor(){super(["railroad-peg-beta"])}},ZLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;nnew E4t,"TokenBuilder"),ValueConverter:E(()=>new A4t,"ValueConverter")}};o(Hv,"createRailroadPegServices");E(Hv,"createRailroadPegServices")});function QLe(e){let t=e.validation.TreemapValidator,r=e.validation.ValidationRegistry;if(r){let n={Treemap:t.checkSingleRoot.bind(t)};r.register(n,t)}}function M_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),KH,I_);return t.ServiceRegistry.register(r),QLe(r),{shared:t,Treemap:r}}var R4t,_4t,L4t,D4t,I_,iU=F(()=>{"use strict";vn();R4t=class extends Mn{static{o(this,"TreemapTokenBuilder")}static{E(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},_4t=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,L4t=class extends Qi{static{o(this,"TreemapValueConverter")}static{E(this,"TreemapValueConverter")}runCustomConverter(e,t,r){if(e.name==="NUMBER2")return parseFloat(t.replace(/,/g,""));if(e.name==="SEPARATOR")return t.substring(1,t.length-1);if(e.name==="STRING2")return t.substring(1,t.length-1);if(e.name==="INDENTATION")return t.length;if(e.name==="ClassDef"){if(typeof t!="string")return t;let n=_4t.exec(t);if(n)return{$type:"ClassDefStatement",className:n[1],styleText:n[2]||void 0}}}};o(QLe,"registerValidationChecks");E(QLe,"registerValidationChecks");D4t=class{static{o(this,"TreemapValidator")}static{E(this,"TreemapValidator")}checkSingleRoot(e,t){let r;for(let n of e.TreemapRows)n.item&&(r===void 0&&n.indent===void 0?r=0:n.indent===void 0?t("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}):r!==void 0&&r>=parseInt(n.indent,10)&&t("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},I_={parser:{TokenBuilder:E(()=>new R4t,"TokenBuilder"),ValueConverter:E(()=>new L4t,"ValueConverter")},validation:{TreemapValidator:E(()=>new D4t,"TreemapValidator")}};o(M_,"createTreemapServices");E(M_,"createTreemapServices")});function P_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),QH,N_);return t.ServiceRegistry.register(r),{shared:t,Wardley:r}}var I4t,N_,aU=F(()=>{"use strict";vn();I4t=class extends Qi{static{o(this,"WardleyValueConverter")}static{E(this,"WardleyValueConverter")}runCustomConverter(e,t,r){switch(e.name.toUpperCase()){case"LINK_LABEL":return t.substring(1).trim();default:return}}},N_={parser:{ValueConverter:E(()=>new I4t,"ValueConverter")}};o(P_,"createWardleyServices");E(P_,"createWardleyServices")});function B_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),FH,O_);return t.ServiceRegistry.register(r),{shared:t,Cynefin:r}}var M4t,O_,sU=F(()=>{"use strict";vn();M4t=class extends Mn{static{o(this,"CynefinTokenBuilder")}static{E(this,"CynefinTokenBuilder")}constructor(){super(["cynefin-beta"])}},O_={parser:{TokenBuilder:E(()=>new M4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(B_,"createCynefinServices");E(B_,"createCynefinServices")});function F_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),GH,$_);return t.ServiceRegistry.register(r),{shared:t,GitGraph:r}}var N4t,$_,oU=F(()=>{"use strict";vn();N4t=class extends Mn{static{o(this,"GitGraphTokenBuilder")}static{E(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},$_={parser:{TokenBuilder:E(()=>new N4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(F_,"createGitGraphServices");E(F_,"createGitGraphServices")});function G_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),VH,z_);return t.ServiceRegistry.register(r),{shared:t,Info:r}}var P4t,z_,lU=F(()=>{"use strict";vn();P4t=class extends Mn{static{o(this,"InfoTokenBuilder")}static{E(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},z_={parser:{TokenBuilder:E(()=>new P4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(G_,"createInfoServices");E(G_,"createInfoServices")});function W_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),WH,V_);return t.ServiceRegistry.register(r),{shared:t,Packet:r}}var O4t,V_,cU=F(()=>{"use strict";vn();O4t=class extends Mn{static{o(this,"PacketTokenBuilder")}static{E(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},V_={parser:{TokenBuilder:E(()=>new O4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(W_,"createPacketServices");E(W_,"createPacketServices")});function H_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),qH,q_);return t.ServiceRegistry.register(r),{shared:t,Pie:r}}var B4t,$4t,q_,uU=F(()=>{"use strict";vn();B4t=class extends Mn{static{o(this,"PieTokenBuilder")}static{E(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},$4t=class extends Qi{static{o(this,"PieValueConverter")}static{E(this,"PieValueConverter")}runCustomConverter(e,t,r){if(e.name==="PIE_SECTION_LABEL")return t.replace(/"/g,"").trim()}},q_={parser:{TokenBuilder:E(()=>new B4t,"TokenBuilder"),ValueConverter:E(()=>new $4t,"ValueConverter")}};o(H_,"createPieServices");E(H_,"createPieServices")});function Y_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),ZH,U_);return t.ServiceRegistry.register(r),{shared:t,TreeView:r}}var F4t,z4t,U_,hU=F(()=>{"use strict";vn();F4t=class extends Qi{static{o(this,"TreeViewValueConverter")}static{E(this,"TreeViewValueConverter")}runCustomConverter(e,t,r){if(e.name==="INDENTATION")return t?.length||0;if(e.name==="QUOTED_NAME")return t.substring(1,t.length-1);if(e.name==="BARE_NAME")return t.replace(/[\t ]+$/,"");if(e.name==="CLASS_ANNOTATION")return t.trim().substring(3).trim();if(e.name==="ICON_ANNOTATION"){let n=t.trim();return n.substring(5,n.length-1)}if(e.name==="DESC_ANNOTATION")return t.trim().substring(2).trim()}},z4t=class extends Mn{static{o(this,"TreeViewTokenBuilder")}static{E(this,"TreeViewTokenBuilder")}constructor(){super(["treeView-beta"])}},U_={parser:{TokenBuilder:E(()=>new z4t,"TokenBuilder"),ValueConverter:E(()=>new F4t,"ValueConverter")}};o(Y_,"createTreeViewServices");E(Y_,"createTreeViewServices")});function X_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),$H,j_);return t.ServiceRegistry.register(r),{shared:t,Architecture:r}}var G4t,V4t,j_,dU=F(()=>{"use strict";vn();G4t=class extends Mn{static{o(this,"ArchitectureTokenBuilder")}static{E(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},V4t=class extends Qi{static{o(this,"ArchitectureValueConverter")}static{E(this,"ArchitectureValueConverter")}runCustomConverter(e,t,r){if(e.name==="ARCH_ICON")return t.replace(/[()]/g,"").trim();if(e.name==="ARCH_TEXT_ICON")return t.replace(/["()]/g,"");if(e.name==="ARCH_TITLE"){let n=t.replace(/^\[|]$/g,"").trim();return(n.startsWith('"')&&n.endsWith('"')||n.startsWith("'")&&n.endsWith("'"))&&(n=n.slice(1,-1),n=n.replace(/\\"/g,'"').replace(/\\'/g,"'")),n.trim()}}},j_={parser:{TokenBuilder:E(()=>new G4t,"TokenBuilder"),ValueConverter:E(()=>new V4t,"ValueConverter")}};o(X_,"createArchitectureServices");E(X_,"createArchitectureServices")});function nDe(e){let t=e.validation.EventModelingValidator,r=e.validation.ValidationRegistry;if(r){let n={EmTimeFrame:t.checkSourceFrameTypes.bind(t),EmResetFrame:t.checkSourceFrameTypes.bind(t)};r.register(n,t)}}function Z_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),zH,K_);return t.ServiceRegistry.register(r),nDe(r),{shared:t,EventModel:r}}var W4t,JLe,eDe,fU,tDe,rDe,q4t,K_,pU=F(()=>{"use strict";vn();W4t=class extends Mn{static{o(this,"EventModelingTokenBuilder")}static{E(this,"EventModelingTokenBuilder")}constructor(){super(["eventmodeling"])}},JLe=new Set(["cmd","command"]),eDe=new Set(["evt","event"]),fU=new Set(["rmo","readmodel"]),tDe=new Set(["pcr","processor"]),rDe=new Set(["ui"]);o(nDe,"registerValidationChecks");E(nDe,"registerValidationChecks");q4t=class{static{o(this,"EventModelingValidator")}static{E(this,"EventModelingValidator")}checkSourceFrameTypes(e,t){e.sourceFrames.length!==0&&(JLe.has(e.modelEntityType)?this.validateSources(e,new Set([...rDe,...tDe]),"command","ui or processor",t):eDe.has(e.modelEntityType)?this.validateSources(e,JLe,"event","command",t):fU.has(e.modelEntityType)?this.validateSources(e,eDe,"read model","event",t):tDe.has(e.modelEntityType)?this.validateSources(e,fU,"processor","read model",t):rDe.has(e.modelEntityType)&&this.validateSources(e,fU,"ui","read model",t))}validateSources(e,t,r,n,i){for(let a of e.sourceFrames){let s=a.ref;s!==void 0&&!t.has(s.modelEntityType)&&i("error",`A ${r} can only receive input from a ${n}, not from '${s.modelEntityType}'.`,{node:e,property:"sourceFrames"})}}},K_={parser:{TokenBuilder:E(()=>new W4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")},validation:{EventModelingValidator:E(()=>new q4t,"EventModelingValidator")}};o(Z_,"createEventModelingServices");E(Z_,"createEventModelingServices")});var iDe={};ir(iDe,{InfoModule:()=>z_,createInfoServices:()=>G_});var aDe=F(()=>{"use strict";lU();vn()});var sDe={};ir(sDe,{PacketModule:()=>V_,createPacketServices:()=>W_});var oDe=F(()=>{"use strict";cU();vn()});var lDe={};ir(lDe,{PieModule:()=>q_,createPieServices:()=>H_});var cDe=F(()=>{"use strict";uU();vn()});var uDe={};ir(uDe,{TreeViewModule:()=>U_,createTreeViewServices:()=>Y_});var hDe=F(()=>{"use strict";hU();vn()});var dDe={};ir(dDe,{ArchitectureModule:()=>j_,createArchitectureServices:()=>X_});var fDe=F(()=>{"use strict";dU();vn()});var pDe={};ir(pDe,{GitGraphModule:()=>$_,createGitGraphServices:()=>F_});var mDe=F(()=>{"use strict";oU();vn()});var gDe={};ir(gDe,{EventModelingModule:()=>K_,createEventModelingServices:()=>Z_});var yDe=F(()=>{"use strict";pU();vn()});var vDe={};ir(vDe,{RadarModule:()=>E_,createRadarServices:()=>A_});var xDe=F(()=>{"use strict";JH();vn()});var bDe={};ir(bDe,{RailroadModule:()=>R_,createRailroadServices:()=>Vv});var TDe=F(()=>{"use strict";eU();vn()});var CDe={};ir(CDe,{RailroadEbnfModule:()=>__,createRailroadEbnfServices:()=>Wv});var wDe=F(()=>{"use strict";tU();vn()});var kDe={};ir(kDe,{RailroadAbnfModule:()=>L_,createRailroadAbnfServices:()=>qv});var SDe=F(()=>{"use strict";rU();vn()});var EDe={};ir(EDe,{RailroadPegModule:()=>D_,createRailroadPegServices:()=>Hv});var ADe=F(()=>{"use strict";nU();vn()});var RDe={};ir(RDe,{TreemapModule:()=>I_,createTreemapServices:()=>M_});var _De=F(()=>{"use strict";iU();vn()});var LDe={};ir(LDe,{WardleyModule:()=>N_,createWardleyServices:()=>P_});var DDe=F(()=>{"use strict";aU();vn()});var IDe={};ir(IDe,{CynefinModule:()=>O_,createCynefinServices:()=>B_});var MDe=F(()=>{"use strict";sU();vn()});async function Si(e,t){let r=H4t[e];if(!r)throw new Error(`Unknown diagram type: ${e}`);ja[e]||await r();let i=ja[e].parse(t);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new ad(i);return i.value}var ja,H4t,ad,Xa=F(()=>{"use strict";JH();eU();tU();rU();nU();iU();aU();sU();oU();lU();cU();uU();hU();dU();pU();vn();ja={},H4t={info:E(async()=>{let{createInfoServices:e}=await Promise.resolve().then(()=>(aDe(),iDe)),t=e().Info.parser.LangiumParser;ja.info=t},"info"),packet:E(async()=>{let{createPacketServices:e}=await Promise.resolve().then(()=>(oDe(),sDe)),t=e().Packet.parser.LangiumParser;ja.packet=t},"packet"),pie:E(async()=>{let{createPieServices:e}=await Promise.resolve().then(()=>(cDe(),lDe)),t=e().Pie.parser.LangiumParser;ja.pie=t},"pie"),treeView:E(async()=>{let{createTreeViewServices:e}=await Promise.resolve().then(()=>(hDe(),uDe)),t=e().TreeView.parser.LangiumParser;ja.treeView=t},"treeView"),architecture:E(async()=>{let{createArchitectureServices:e}=await Promise.resolve().then(()=>(fDe(),dDe)),t=e().Architecture.parser.LangiumParser;ja.architecture=t},"architecture"),gitGraph:E(async()=>{let{createGitGraphServices:e}=await Promise.resolve().then(()=>(mDe(),pDe)),t=e().GitGraph.parser.LangiumParser;ja.gitGraph=t},"gitGraph"),eventmodeling:E(async()=>{let{createEventModelingServices:e}=await Promise.resolve().then(()=>(yDe(),gDe)),t=e().EventModel.parser.LangiumParser;ja.eventmodeling=t},"eventmodeling"),radar:E(async()=>{let{createRadarServices:e}=await Promise.resolve().then(()=>(xDe(),vDe)),t=e().Radar.parser.LangiumParser;ja.radar=t},"radar"),railroad:E(async()=>{let{createRailroadServices:e}=await Promise.resolve().then(()=>(TDe(),bDe)),t=e().Railroad.parser.LangiumParser;ja.railroad=t},"railroad"),railroadEbnf:E(async()=>{let{createRailroadEbnfServices:e}=await Promise.resolve().then(()=>(wDe(),CDe)),t=e().RailroadEbnf.parser.LangiumParser;ja.railroadEbnf=t},"railroadEbnf"),railroadAbnf:E(async()=>{let{createRailroadAbnfServices:e}=await Promise.resolve().then(()=>(SDe(),kDe)),t=e().RailroadAbnf.parser.LangiumParser;ja.railroadAbnf=t},"railroadAbnf"),railroadPeg:E(async()=>{let{createRailroadPegServices:e}=await Promise.resolve().then(()=>(ADe(),EDe)),t=e().RailroadPeg.parser.LangiumParser;ja.railroadPeg=t},"railroadPeg"),treemap:E(async()=>{let{createTreemapServices:e}=await Promise.resolve().then(()=>(_De(),RDe)),t=e().Treemap.parser.LangiumParser;ja.treemap=t},"treemap"),wardley:E(async()=>{let{createWardleyServices:e}=await Promise.resolve().then(()=>(DDe(),LDe)),t=e().Wardley.parser.LangiumParser;ja.wardley=t},"wardley"),cynefin:E(async()=>{let{createCynefinServices:e}=await Promise.resolve().then(()=>(MDe(),IDe)),t=e().Cynefin.parser.LangiumParser;ja.cynefin=t},"cynefin")};o(Si,"parse");E(Si,"parse");ad=class extends Error{static{o(this,"MermaidParseError")}constructor(e){let t=e.lexerErrors.map(n=>{let i=n.line!==void 0&&!isNaN(n.line)?n.line:"?",a=n.column!==void 0&&!isNaN(n.column)?n.column:"?";return`Lexer error on line ${i}, column ${a}: ${n.message}`}).join(` +`),r=e.parserErrors.map(n=>{let i=n.token.startLine!==void 0&&!isNaN(n.token.startLine)?n.token.startLine:"?",a=n.token.startColumn!==void 0&&!isNaN(n.token.startColumn)?n.token.startColumn:"?";return`Parse error on line ${i}, column ${a}: ${n.message}`}).join(` +`);super(`Parsing failed: ${t} ${r}`),this.result=e}static{E(this,"MermaidParseError")}}});function Gn(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}var Hs=F(()=>{"use strict";o(Gn,"populateCommonDb")});var Rn,Q_=F(()=>{"use strict";Rn={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var Cp,J_=F(()=>{"use strict";Cp=class{constructor(t){this.init=t;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function mU(){return dP({length:7})}function Y4t(e,t){let r=Object.create(null);return e.reduce((n,i)=>{let a=t(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function NDe(e,t,r){let n=e.indexOf(t);n===-1?e.push(r):e.splice(n,1,r)}function ODe(e){let t=e.reduce((i,a)=>i.seq>a.seq?i:a,e[0]),r="";e.forEach(function(i){i===t?r+=" *":r+=" |"});let n=[r,t.id,t.seq];for(let i in Vt.records.branches)Vt.records.branches.get(i)===t.id&&n.push(i);if(Z.debug(n.join(" ")),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let i=Vt.records.commits.get(t.parents[0]);NDe(e,t,i),t.parents[1]&&e.push(Vt.records.commits.get(t.parents[1]))}else{if(t.parents.length==0)return;if(t.parents[0]){let i=Vt.records.commits.get(t.parents[0]);NDe(e,t,i)}}e=Y4t(e,i=>i.id),ODe(e)}var U4t,x0,Vt,j4t,X4t,K4t,Z4t,Q4t,J4t,e3t,PDe,t3t,r3t,n3t,i3t,a3t,BDe,s3t,o3t,l3t,eL,gU=F(()=>{"use strict";vt();Qt();ur();Vr();Nn();Q_();J_();Wi();U4t=cr.gitGraph,x0=o(()=>qr({...U4t,..._t().gitGraph}),"getConfig"),Vt=new Cp(()=>{let e=x0(),t=e.mainBranchName,r=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:r}]]),branches:new Map([[t,null]]),currBranch:t,direction:"LR",seq:0,options:{}}});o(mU,"getID");o(Y4t,"uniqBy");j4t=o(function(e){Vt.records.direction=e},"setDirection"),X4t=o(function(e){Z.debug("options str",e),e=e?.trim(),e=e||"{}";try{Vt.records.options=JSON.parse(e)}catch(t){Z.error("error while parsing gitGraph options",t.message)}},"setOptions"),K4t=o(function(){return Vt.records.options},"getOptions"),Z4t=o(function(e){let t=e.msg,r=e.id,n=e.type,i=e.tags;Z.info("commit",t,r,n,i),Z.debug("Entering commit:",t,r,n,i);let a=x0();r=xt.sanitizeText(r,a),t=xt.sanitizeText(t,a),i=i?.map(l=>xt.sanitizeText(l,a));let s={id:r||Vt.records.seq+"-"+mU(),message:t,seq:Vt.records.seq++,type:n??Rn.NORMAL,tags:i??[],parents:Vt.records.head==null?[]:[Vt.records.head.id],branch:Vt.records.currBranch};Vt.records.head=s,Z.info("main branch",a.mainBranchName),Vt.records.commits.has(s.id)&&Z.warn(`Commit ID ${s.id} already exists`),Vt.records.commits.set(s.id,s),Vt.records.branches.set(Vt.records.currBranch,s.id),Z.debug("in pushCommit "+s.id)},"commit"),Q4t=o(function(e){let t=e.name,r=e.order;if(t=xt.sanitizeText(t,x0()),Vt.records.branches.has(t))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);Vt.records.branches.set(t,Vt.records.head!=null?Vt.records.head.id:null),Vt.records.branchConfig.set(t,{name:t,order:r}),PDe(t),Z.debug("in createBranch")},"branch"),J4t=o(e=>{let t=e.branch,r=e.id,n=e.type,i=e.tags,a=x0();t=xt.sanitizeText(t,a),r&&(r=xt.sanitizeText(r,a));let s=Vt.records.branches.get(Vt.records.currBranch),l=Vt.records.branches.get(t),u=s?Vt.records.commits.get(s):void 0,h=l?Vt.records.commits.get(l):void 0;if(u&&h&&u.branch===t)throw new Error(`Cannot merge branch '${t}' into itself.`);if(Vt.records.currBranch===t){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${Vt.records.currBranch})has no commits`);throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["commit"]},p}if(!Vt.records.branches.has(t)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(r&&Vt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw p.hash={text:`merge ${t} ${r} ${n} ${i?.join(" ")}`,token:`merge ${t} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${t} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let d=l||"",f={id:r||`${Vt.records.seq}-${mU()}`,message:`merged branch ${t} into ${Vt.records.currBranch}`,seq:Vt.records.seq++,parents:Vt.records.head==null?[]:[Vt.records.head.id,d],branch:Vt.records.currBranch,type:Rn.MERGE,customType:n,customId:!!r,tags:i??[]};Vt.records.head=f,Vt.records.commits.set(f.id,f),Vt.records.branches.set(Vt.records.currBranch,f.id),Z.debug(Vt.records.branches),Z.debug("in mergeBranch")},"merge"),e3t=o(function(e){let t=e.id,r=e.targetId,n=e.tags,i=e.parent;Z.debug("Entering cherryPick:",t,r,n);let a=x0();if(t=xt.sanitizeText(t,a),r=xt.sanitizeText(r,a),n=n?.map(u=>xt.sanitizeText(u,a)),i=xt.sanitizeText(i,a),!t||!Vt.records.commits.has(t)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},u}let s=Vt.records.commits.get(t);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===Rn.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!Vt.records.commits.has(r)){if(l===Vt.records.currBranch){let f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let u=Vt.records.branches.get(Vt.records.currBranch);if(u===void 0||!u){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Vt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let h=Vt.records.commits.get(u);if(h===void 0||!h){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Vt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let d={id:Vt.records.seq+"-"+mU(),message:`cherry-picked ${s?.message} into ${Vt.records.currBranch}`,seq:Vt.records.seq++,parents:Vt.records.head==null?[]:[Vt.records.head.id,s.id],branch:Vt.records.currBranch,type:Rn.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===Rn.MERGE?`|parent:${i}`:""}`]};Vt.records.head=d,Vt.records.commits.set(d.id,d),Vt.records.branches.set(Vt.records.currBranch,d.id),Z.debug(Vt.records.branches),Z.debug("in cherryPick")}},"cherryPick"),PDe=o(function(e){if(e=xt.sanitizeText(e,x0()),Vt.records.branches.has(e)){Vt.records.currBranch=e;let t=Vt.records.branches.get(Vt.records.currBranch);t===void 0||!t?Vt.records.head=null:Vt.records.head=Vt.records.commits.get(t)??null}else{let t=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},"checkout");o(NDe,"upsert");o(ODe,"prettyPrintCommitHistory");t3t=o(function(){Z.debug(Vt.records.commits);let e=BDe()[0];ODe([e])},"prettyPrint"),r3t=o(function(){Vt.reset(),yr()},"clear"),n3t=o(function(){return[...Vt.records.branchConfig.values()].map((t,r)=>t.order!==null&&t.order!==void 0?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),i3t=o(function(){return Vt.records.branches},"getBranches"),a3t=o(function(){return Vt.records.commits},"getCommits"),BDe=o(function(){let e=[...Vt.records.commits.values()];return e.forEach(function(t){Z.debug(t.id)}),e.sort((t,r)=>t.seq-r.seq),e},"getCommitsArray"),s3t=o(function(){return Vt.records.currBranch},"getCurrentBranch"),o3t=o(function(){return Vt.records.direction},"getDirection"),l3t=o(function(){return Vt.records.head},"getHead"),eL={commitType:Rn,getConfig:x0,setDirection:j4t,setOptions:X4t,getOptions:K4t,commit:Z4t,branch:Q4t,merge:J4t,cherryPick:e3t,checkout:PDe,prettyPrint:t3t,clear:r3t,getBranchesAsObjArray:n3t,getBranches:i3t,getCommits:a3t,getCommitsArray:BDe,getCurrentBranch:s3t,getDirection:o3t,getHead:l3t,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,setDiagramTitle:Or,getDiagramTitle:Lr}});var c3t,u3t,h3t,d3t,f3t,p3t,m3t,$De,FDe=F(()=>{"use strict";Xa();vt();Hs();gU();Q_();c3t=o((e,t)=>{Gn(e,t),e.dir&&t.setDirection(e.dir);for(let r of e.statements)u3t(r,t)},"populate"),u3t=o((e,t)=>{let n={Commit:o(i=>t.commit(h3t(i)),"Commit"),Branch:o(i=>t.branch(d3t(i)),"Branch"),Merge:o(i=>t.merge(f3t(i)),"Merge"),Checkout:o(i=>t.checkout(p3t(i)),"Checkout"),CherryPicking:o(i=>t.cherryPick(m3t(i)),"CherryPicking")}[e.$type];n?n(e):Z.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),h3t=o(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?Rn[e.type]:Rn.NORMAL,tags:e.tags??void 0}),"parseCommit"),d3t=o(e=>({name:e.name,order:e.order??0}),"parseBranch"),f3t=o(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?Rn[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),p3t=o(e=>e.branch,"parseCheckout"),m3t=o(e=>({id:e.id,targetId:"",tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),"parseCherryPicking"),$De={parse:o(async e=>{let t=await Si("gitGraph",e);Z.debug(t),c3t(t,eL)},"parse")}});var wp,kp,Wu,sd,b0,nL,yU,vU,g3t,T0,So,Eo,tL,Iw,rL,od,rn,y3t,GDe,VDe,v3t,x3t,b3t,T3t,C3t,w3t,k3t,S3t,E3t,A3t,R3t,_3t,zDe,L3t,Mw,D3t,I3t,M3t,N3t,P3t,WDe,qDe=F(()=>{"use strict";$r();Xt();vt();Qt();Q_();wp=10,kp=40,Wu=4,sd=2,b0=8,nL=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),yU=12,vU=new Set(["redux-color","redux-dark-color"]),g3t=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),T0=o((e,t,r=!1)=>r&&e>0?(e-1)%(t-1)+1:e%t,"calcColorIndex"),So=new Map,Eo=new Map,tL=30,Iw=new Map,rL=[],od=0,rn="LR",y3t=o(()=>{So.clear(),Eo.clear(),Iw.clear(),od=0,rL=[],rn="LR"},"clear"),GDe=o(e=>{let t=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|/gi):e).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),t.appendChild(i)}),t},"drawText"),VDe=o(e=>{let t,r,n;return rn==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),e.forEach(i=>{let a=rn==="TB"||rn=="BT"?Eo.get(i)?.y:Eo.get(i)?.x;a!==void 0&&r(a,n)&&(t=i,n=a)}),t},"findClosestParent"),v3t=o(e=>{let t="",r=1/0;return e.forEach(n=>{let i=Eo.get(n).y;i<=r&&(t=n,r=i)}),t||void 0},"findClosestParentBT"),x3t=o((e,t,r)=>{let n=r,i=r,a=[];e.forEach(s=>{let l=t.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=T3t(l),i=Math.max(n,i)):a.push(l),C3t(l,n)}),n=i,a.forEach(s=>{w3t(s,n,r)}),e.forEach(s=>{let l=t.get(s);if(l?.parents.length){let u=v3t(l.parents);n=Eo.get(u).y-kp,n<=i&&(i=n);let h=So.get(l.branch).pos,d=n-wp;Eo.set(l.id,{x:h,y:d})}})},"setParallelBTPos"),b3t=o(e=>{let t=VDe(e.parents.filter(n=>n!==null));if(!t)throw new Error(`Closest parent not found for commit ${e.id}`);let r=Eo.get(t)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return r},"findClosestParentPos"),T3t=o(e=>b3t(e)+kp,"calculateCommitPosition"),C3t=o((e,t)=>{let r=So.get(e.branch);if(!r)throw new Error(`Branch not found for commit ${e.id}`);let n=r.pos,i=t+wp;return Eo.set(e.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),w3t=o((e,t,r)=>{let n=So.get(e.branch);if(!n)throw new Error(`Branch not found for commit ${e.id}`);let i=t+r,a=n.pos;Eo.set(e.id,{x:a,y:i})},"setRootPosition"),k3t=o((e,t,r,n,i,a)=>{let{theme:s}=Ae(),l=nL.has(s??""),u=vU.has(s??""),h=g3t.has(s??"");if(a===Rn.HIGHLIGHT)e.append("rect").attr("x",r.x-10+(l?3:0)).attr("y",r.y-10+(l?3:0)).attr("width",l?14:20).attr("height",l?14:20).attr("class",`commit ${t.id} commit-highlight${T0(i,b0,u)} ${n}-outer`),e.append("rect").attr("x",r.x-6+(l?2:0)).attr("y",r.y-6+(l?2:0)).attr("width",l?8:12).attr("height",l?8:12).attr("class",`commit ${t.id} commit${T0(i,b0,u)} ${n}-inner`);else if(a===Rn.CHERRY_PICK)e.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",l?7:10).attr("class",`commit ${t.id} ${n}`),e.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`);else{let d=e.append("circle");if(d.attr("cx",r.x),d.attr("cy",r.y),d.attr("r",l?7:10),d.attr("class",`commit ${t.id} commit${T0(i,b0,u)}`),a===Rn.MERGE){let f=e.append("circle");f.attr("cx",r.x),f.attr("cy",r.y),f.attr("r",l?5:6),f.attr("class",`commit ${n} ${t.id} commit${T0(i,b0,u)}`)}if(a===Rn.REVERSE){let f=e.append("path"),p=l?4:5;f.attr("d",`M ${r.x-p},${r.y-p}L${r.x+p},${r.y+p}M${r.x-p},${r.y+p}L${r.x+p},${r.y-p}`).attr("class",`commit ${n} ${t.id} commit${T0(i,b0,u)}`)}}},"drawCommitBullet"),S3t=o((e,t,r,n,i)=>{if(t.type!==Rn.CHERRY_PICK&&(t.customId&&t.type===Rn.MERGE||t.type!==Rn.MERGE)&&i.showCommitLabel){let a=e.append("g"),s=a.insert("rect").attr("class","commit-label-bkg"),l=a.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(t.id),u=l.node()?.getBBox();if(u&&(s.attr("x",r.posWithOffset-u.width/2-sd).attr("y",r.y+13.5).attr("width",u.width+2*sd).attr("height",u.height+2*sd),rn==="TB"||rn==="BT"?(s.attr("x",r.x-(u.width+4*Wu+5)).attr("y",r.y-12),l.attr("x",r.x-(u.width+4*Wu)).attr("y",r.y+u.height-12)):l.attr("x",r.posWithOffset-u.width/2),i.rotateCommitLabel))if(rn==="TB"||rn==="BT")l.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),s.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let h=-7.5-(u.width+10)/25*9.5,d=10+u.width/25*8.5;a.attr("transform","translate("+h+", "+d+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),E3t=o((e,t,r,n)=>{if(t.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of t.tags.reverse()){let h=e.insert("polygon"),d=e.append("circle"),f=e.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=f.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),f.attr("x",r.posWithOffset-p.width/2),l.push({tag:f,hole:d,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:d,yOffset:f}of l){let p=s/2,m=r.y-19.2-f;if(d.attr("class","tag-label-bkg").attr("points",` + ${n-a/2-Wu/2},${m+sd} + ${n-a/2-Wu/2},${m-sd} + ${r.posWithOffset-a/2-Wu},${m-p-sd} + ${r.posWithOffset+a/2+Wu},${m-p-sd} + ${r.posWithOffset+a/2+Wu},${m+p+sd} + ${r.posWithOffset-a/2-Wu},${m+p+sd}`),h.attr("cy",m).attr("cx",n-a/2+Wu/2).attr("r",1.5).attr("class","tag-hole"),rn==="TB"||rn==="BT"){let g=n+f;d.attr("class","tag-label-bkg").attr("points",` + ${r.x},${g+2} + ${r.x},${g-2} + ${r.x+wp},${g-p-2} + ${r.x+wp+a+4},${g-p-2} + ${r.x+wp+a+4},${g+p+2} + ${r.x+wp},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Wu/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),A3t=o(e=>{switch(e.customType??e.type){case Rn.NORMAL:return"commit-normal";case Rn.REVERSE:return"commit-reverse";case Rn.HIGHLIGHT:return"commit-highlight";case Rn.MERGE:return"commit-merge";case Rn.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),R3t=o((e,t,r,n)=>{let i={x:0,y:0};if(e.parents.length>0){let a=VDe(e.parents);if(a){let s=n.get(a)??i;return t==="TB"?s.y+kp:t==="BT"?(n.get(e.id)??i).y-kp:s.x+kp}}else return t==="TB"?tL:t==="BT"?(n.get(e.id)??i).y-kp:0;return 0},"calculatePosition"),_3t=o((e,t,r)=>{let n=rn==="BT"&&r?t:t+wp,i=So.get(e.branch)?.pos,a=rn==="TB"||rn==="BT"?So.get(e.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${e.id}`);let s=nL.has(Ae().theme??""),l=rn==="TB"||rn==="BT"?n:i+(s?yU/2+1:-2);return{x:a,y:l,posWithOffset:n}},"getCommitPosition"),zDe=o((e,t,r,n)=>{let i=e.append("g").attr("class","commit-bullets"),a=e.append("g").attr("class","commit-labels"),s=rn==="TB"||rn==="BT"?tL:0,l=[...t.keys()],u=n.parallelCommits??!1,h=o((f,p)=>{let m=t.get(f)?.seq,g=t.get(p)?.seq;return m!==void 0&&g!==void 0?m-g:0},"sortKeys"),d=l.sort(h);rn==="BT"&&(u&&x3t(d,t,s),d=d.reverse()),d.forEach(f=>{let p=t.get(f);if(!p)throw new Error(`Commit not found for key ${f}`);u&&(s=R3t(p,rn,s,Eo));let m=_3t(p,s,u);if(r){let g=A3t(p),y=p.customType??p.type,v=So.get(p.branch)?.index??0;k3t(i,p,m,g,v,y),S3t(a,p,m,s,n),E3t(a,p,m,s)}rn==="TB"||rn==="BT"?Eo.set(p.id,{x:m.x,y:m.posWithOffset}):Eo.set(p.id,{x:m.posWithOffset,y:m.y}),s=rn==="BT"&&u?s+kp:s+kp+wp,s>od&&(od=s)})},"drawCommits"),L3t=o((e,t,r,n,i)=>{let s=(rn==="TB"||rn==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>e.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),Mw=o((e,t,r=0)=>{let n=e+Math.abs(e-t)/2;if(r>5)return n;if(rL.every(s=>Math.abs(s-n)>=10))return rL.push(n),n;let a=Math.abs(e-t);return Mw(e,t-a/5,r+1)},"findLane"),D3t=o((e,t,r,n)=>{let{theme:i}=Ae(),a=vU.has(i??""),s=Eo.get(t.id),l=Eo.get(r.id);if(s===void 0||l===void 0)throw new Error(`Commit positions not found for commits ${t.id} and ${r.id}`);let u=L3t(t,r,s,l,n),h="",d="",f=0,p=0,m=So.get(r.branch)?.index;r.type===Rn.MERGE&&t.id!==r.parents[0]&&(m=So.get(t.branch)?.index);let g;if(u){h="A 10 10, 0, 0, 0,",d="A 10 10, 0, 0, 1,",f=10,p=10;let y=s.yl.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${d} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${h} ${l.x} ${s.y+p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):rn==="BT"?(s.xl.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${h} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${d} ${l.x} ${s.y-p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):(s.yl.y&&(r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${h} ${l.x} ${s.y-p} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${d} ${s.x+p} ${l.y} L ${l.x} ${l.y}`),s.y===l.y&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`));if(g===void 0)throw new Error("Line definition not found");e.append("path").attr("d",g).attr("class","arrow arrow"+T0(m,b0,a))},"drawArrow"),I3t=o((e,t)=>{let r=e.append("g").attr("class","commit-arrows");[...t.keys()].forEach(n=>{let i=t.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{D3t(r,t.get(a),i,t)})})},"drawArrows"),M3t=o((e,t,r,n)=>{let{look:i,theme:a,themeVariables:s}=Ae(),{dropShadow:l,THEME_COLOR_LIMIT:u}=s,h=nL.has(a??""),d=vU.has(a??""),f=e.append("g");t.forEach((p,m)=>{let g=T0(m,h?u:b0,d),y=So.get(p.name)?.pos;if(y===void 0)throw new Error(`Position not found for branch ${p.name}`);let v=rn==="TB"||rn==="BT"?y:h?y+yU/2+1:y-2,x=f.append("line");x.attr("x1",0),x.attr("y1",v),x.attr("x2",od),x.attr("y2",v),x.attr("class","branch branch"+g),rn==="TB"?(x.attr("y1",tL),x.attr("x1",y),x.attr("y2",od),x.attr("x2",y)):rn==="BT"&&(x.attr("y1",od),x.attr("x1",y),x.attr("y2",tL),x.attr("x2",y)),rL.push(v);let b=p.name,T=GDe(b),k=f.insert("rect"),w=f.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+g);w.node().appendChild(T);let S=T.getBBox(),R=h?0:4,L=h?16:0,N=h?yU:0;i==="neo"&&k.attr("data-look","neo"),k.attr("class","branchLabelBkg label"+g).attr("style",i==="neo"?`filter:${h?`url(#${n}-drop-shadow)`:l}`:"").attr("rx",R).attr("ry",R).attr("x",-S.width-4-(r.rotateCommitLabel===!0?30:0)).attr("y",-S.height/2+10).attr("width",S.width+18+L).attr("height",S.height+4+N),w.attr("transform","translate("+(-S.width-14-(r.rotateCommitLabel===!0?30:0)+L/2)+", "+(v-S.height/2-2)+")"),rn==="TB"?(k.attr("x",y-S.width/2-10).attr("y",0),w.attr("transform","translate("+(y-S.width/2-5)+", 0)"),h&&(k.attr("transform",`translate(${-L/2-3}, ${-N-10})`),w.attr("transform","translate("+(y-S.width/2-5)+", "+(-N*2+7)+")"))):rn==="BT"?(k.attr("x",y-S.width/2-10).attr("y",od),w.attr("transform","translate("+(y-S.width/2-5)+", "+od+")"),h&&(k.attr("transform",`translate(${-L/2-3}, ${N+10})`),w.attr("transform","translate("+(y-S.width/2-5)+", "+(od+N*2+4)+")"))):k.attr("transform","translate(-19, "+(v-12-N/2)+")")})},"drawBranches"),N3t=o(function(e,t,r,n,i){return So.set(e,{pos:t,index:r}),t+=50+(i?40:0)+(rn==="TB"||rn==="BT"?n.width/2:0),t},"setBranchPosition"),P3t=o(function(e,t,r,n){y3t(),Z.debug("in gitgraph renderer",e+` +`,"id:",t,r);let i=n.db;if(!i.getConfig){Z.error("getConfig method is not available on db");return}let a=i.getConfig(),s=a.rotateCommitLabel??!1;Iw=i.getCommits();let l=i.getBranchesAsObjArray();rn=i.getDirection();let u=et(`[id="${t}"]`),{look:h,theme:d,themeVariables:f}=Ae(),{useGradient:p,gradientStart:m,gradientStop:g,filterColor:y}=f;if(p){let x=u.append("defs").append("linearGradient").attr("id",t+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");x.append("stop").attr("offset","0%").attr("stop-color",m).attr("stop-opacity",1),x.append("stop").attr("offset","100%").attr("stop-color",g).attr("stop-opacity",1)}h==="neo"&&nL.has(d??"")&&u.append("defs").append("filter").attr("id",t+"-drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",y);let v=0;l.forEach((x,b)=>{let T=GDe(x.name),k=u.append("g"),C=k.insert("g").attr("class","branchLabel"),w=C.insert("g").attr("class","label branch-label");w.node()?.appendChild(T);let S=T.getBBox();v=N3t(x.name,v,b,S,s),w.remove(),C.remove(),k.remove()}),zDe(u,Iw,!1,a),a.showBranches&&M3t(u,l,a,t),I3t(u,Iw),zDe(u,Iw,!0,a),Zt.insertTitle(u,"gitTitleText",a.titleTopMargin??0,i.getDiagramTitle()),hb(void 0,u,a.diagramPadding,a.useMaxWidth)},"draw"),WDe={draw:P3t}});var HDe,UDe,O3t,B3t,$3t,F3t,z3t,G3t,V3t,W3t,YDe,jDe=F(()=>{"use strict";ur();HDe=8,UDe=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),O3t=new Set(["redux-color","redux-dark-color"]),B3t=new Set(["neo","neo-dark"]),$3t=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),F3t=new Set(["redux","redux-dark","redux-color","redux-dark-color","neo","neo-dark"]),z3t=o(e=>{let{svgId:t}=e,r="";if(e.useGradient&&t)for(let n=0;n{let t=_t(),{theme:r,themeVariables:n}=t,{borderColorArray:i}=n,a=UDe.has(r);if(B3t.has(r)){let s="";for(let l=0;l`${Array.from({length:e.THEME_COLOR_LIMIT},(t,r)=>r).map(t=>{let r=t%HDe;return` + .branch-label${t} { fill: ${e["gitBranchLabel"+r]}; } + .commit${t} { stroke: ${e["git"+r]}; fill: ${e["git"+r]}; } + .commit-highlight${t} { stroke: ${e["gitInv"+r]}; fill: ${e["gitInv"+r]}; } + .label${t} { fill: ${e["git"+r]}; } + .arrow${t} { stroke: ${e["git"+r]}; } + `}).join(` +`)}`,"normalTheme"),W3t=o(e=>{let t=_t(),{theme:r}=t,n=F3t.has(r);return` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + + ${n?G3t(e):V3t(e)} + + .branch { + stroke-width: ${e.strokeWidth}; + stroke: ${e.commitLineColor??e.lineColor}; + stroke-dasharray: ${n?"4 2":"2"}; + } + .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${n?e.nodeBorder:e.commitLabelColor}; ${n?`font-weight:${e.noteFontWeight};`:""}} + .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${n?"transparent":e.commitLabelBackground}; opacity: ${n?"":.5}; } + .tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};} + .tag-label-bkg { fill: ${n?e.mainBkg:e.tagLabelBackground}; stroke: ${n?e.nodeBorder:e.tagLabelBorder}; ${n?`filter:${e.dropShadow}`:""} } + .tag-hole { fill: ${e.textColor}; } + + .commit-merge { + stroke: ${n?e.mainBkg:e.primaryColor}; + fill: ${n?e.mainBkg:e.primaryColor}; + } + .commit-reverse { + stroke: ${n?e.mainBkg:e.primaryColor}; + fill: ${n?e.mainBkg:e.primaryColor}; + stroke-width: ${n?e.strokeWidth:3}; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${n?e.mainBkg:e.primaryColor}; + fill: ${n?e.mainBkg:e.primaryColor}; + } + + .arrow { + /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */ + stroke-width: ${UDe.has(r)?e.strokeWidth:8}; + stroke-linecap: round; + fill: none + } + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`},"getStyles"),YDe=W3t});var XDe={};ir(XDe,{diagram:()=>q3t});var q3t,KDe=F(()=>{"use strict";FDe();gU();qDe();jDe();q3t={parser:$De,db:eL,renderer:WDe,styles:YDe}});var xU,JDe,e7e=F(()=>{"use strict";xU=(function(){var e=o(function(A,M,D,P){for(D=D||{},P=A.length;P--;D[A[P]]=M);return D},"o"),t=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],d=[1,34],f=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],T=[1,19],k=[1,20],C=[1,21],w=[1,22],S=[1,23],R=[1,25],L=[1,35],N={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(M,D,P,B,O,$,V){var G=$.length-1;switch(O){case 1:return $[G-1];case 2:this.$=[];break;case 3:$[G-1].push($[G]),this.$=$[G-1];break;case 4:case 5:this.$=$[G];break;case 6:case 7:this.$=[];break;case 8:B.setWeekday("monday");break;case 9:B.setWeekday("tuesday");break;case 10:B.setWeekday("wednesday");break;case 11:B.setWeekday("thursday");break;case 12:B.setWeekday("friday");break;case 13:B.setWeekday("saturday");break;case 14:B.setWeekday("sunday");break;case 15:B.setWeekend("friday");break;case 16:B.setWeekend("saturday");break;case 17:B.setDateFormat($[G].substr(11)),this.$=$[G].substr(11);break;case 18:B.enableInclusiveEndDates(),this.$=$[G].substr(18);break;case 19:B.TopAxis(),this.$=$[G].substr(8);break;case 20:B.setAxisFormat($[G].substr(11)),this.$=$[G].substr(11);break;case 21:B.setTickInterval($[G].substr(13)),this.$=$[G].substr(13);break;case 22:B.setExcludes($[G].substr(9)),this.$=$[G].substr(9);break;case 23:B.setIncludes($[G].substr(9)),this.$=$[G].substr(9);break;case 24:B.setTodayMarker($[G].substr(12)),this.$=$[G].substr(12);break;case 27:B.setDiagramTitle($[G].substr(6)),this.$=$[G].substr(6);break;case 28:this.$=$[G].trim(),B.setAccTitle(this.$);break;case 29:case 30:this.$=$[G].trim(),B.setAccDescription(this.$);break;case 31:B.addSection($[G].substr(8)),this.$=$[G].substr(8);break;case 33:B.addTask($[G-1],$[G]),this.$="task";break;case 34:this.$=$[G-1],B.setClickEvent($[G-1],$[G],null);break;case 35:this.$=$[G-2],B.setClickEvent($[G-2],$[G-1],$[G]);break;case 36:this.$=$[G-2],B.setClickEvent($[G-2],$[G-1],null),B.setLink($[G-2],$[G]);break;case 37:this.$=$[G-3],B.setClickEvent($[G-3],$[G-2],$[G-1]),B.setLink($[G-3],$[G]);break;case 38:this.$=$[G-2],B.setClickEvent($[G-2],$[G],null),B.setLink($[G-2],$[G-1]);break;case 39:this.$=$[G-3],B.setClickEvent($[G-3],$[G-1],$[G]),B.setLink($[G-3],$[G-2]);break;case 40:this.$=$[G-1],B.setLink($[G-1],$[G]);break;case 41:case 47:this.$=$[G-1]+" "+$[G];break;case 42:case 43:case 45:this.$=$[G-2]+" "+$[G-1]+" "+$[G];break;case 44:case 46:this.$=$[G-3]+" "+$[G-2]+" "+$[G-1]+" "+$[G];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:k,33:C,35:w,36:S,37:24,38:R,40:L},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:k,33:C,35:w,36:S,37:24,38:R,40:L},e(t,[2,5]),e(t,[2,6]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,20]),e(t,[2,21]),e(t,[2,22]),e(t,[2,23]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),e(t,[2,27]),{32:[1,37]},{34:[1,38]},e(t,[2,30]),e(t,[2,31]),e(t,[2,32]),{39:[1,39]},e(t,[2,8]),e(t,[2,9]),e(t,[2,10]),e(t,[2,11]),e(t,[2,12]),e(t,[2,13]),e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),{41:[1,40],43:[1,41]},e(t,[2,4]),e(t,[2,28]),e(t,[2,29]),e(t,[2,33]),e(t,[2,34],{42:[1,42],43:[1,43]}),e(t,[2,40],{41:[1,44]}),e(t,[2,35],{43:[1,45]}),e(t,[2,36]),e(t,[2,38],{42:[1,46]}),e(t,[2,37]),e(t,[2,39])],defaultActions:{},parseError:o(function(M,D){if(D.recoverable)this.trace(M);else{var P=new Error(M);throw P.hash=D,P}},"parseError"),parse:o(function(M){var D=this,P=[0],B=[],O=[null],$=[],V=this.table,G="",z=0,W=0,H=0,j=2,Q=1,U=$.slice.call(arguments,1),oe=Object.create(this.lexer),te={yy:{}};for(var le in this.yy)Object.prototype.hasOwnProperty.call(this.yy,le)&&(te.yy[le]=this.yy[le]);oe.setInput(M,te.yy),te.yy.lexer=oe,te.yy.parser=this,typeof oe.yylloc>"u"&&(oe.yylloc={});var ie=oe.yylloc;$.push(ie);var ae=oe.options&&oe.options.ranges;typeof te.yy.parseError=="function"?this.parseError=te.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Re(we){P.length=P.length-2*we,O.length=O.length-we,$.length=$.length-we}o(Re,"popStack");function be(){var we;return we=B.pop()||oe.lex()||Q,typeof we!="number"&&(we instanceof Array&&(B=we,we=B.pop()),we=D.symbols_[we]||we),we}o(be,"lex");for(var Pe,Ge,Oe,ue,ye,ke,ce={},re,J,se,ge;;){if(Oe=P[P.length-1],this.defaultActions[Oe]?ue=this.defaultActions[Oe]:((Pe===null||typeof Pe>"u")&&(Pe=be()),ue=V[Oe]&&V[Oe][Pe]),typeof ue>"u"||!ue.length||!ue[0]){var Te="";ge=[];for(re in V[Oe])this.terminals_[re]&&re>j&&ge.push("'"+this.terminals_[re]+"'");oe.showPosition?Te="Parse error on line "+(z+1)+`: +`+oe.showPosition()+` +Expecting `+ge.join(", ")+", got '"+(this.terminals_[Pe]||Pe)+"'":Te="Parse error on line "+(z+1)+": Unexpected "+(Pe==Q?"end of input":"'"+(this.terminals_[Pe]||Pe)+"'"),this.parseError(Te,{text:oe.match,token:this.terminals_[Pe]||Pe,line:oe.yylineno,loc:ie,expected:ge})}if(ue[0]instanceof Array&&ue.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Oe+", token: "+Pe);switch(ue[0]){case 1:P.push(Pe),O.push(oe.yytext),$.push(oe.yylloc),P.push(ue[1]),Pe=null,Ge?(Pe=Ge,Ge=null):(W=oe.yyleng,G=oe.yytext,z=oe.yylineno,ie=oe.yylloc,H>0&&H--);break;case 2:if(J=this.productions_[ue[1]][1],ce.$=O[O.length-J],ce._$={first_line:$[$.length-(J||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(J||1)].first_column,last_column:$[$.length-1].last_column},ae&&(ce._$.range=[$[$.length-(J||1)].range[0],$[$.length-1].range[1]]),ke=this.performAction.apply(ce,[G,W,z,te.yy,ue[1],O,$].concat(U)),typeof ke<"u")return ke;J&&(P=P.slice(0,-1*J*2),O=O.slice(0,-1*J),$=$.slice(0,-1*J)),P.push(this.productions_[ue[1]][0]),O.push(ce.$),$.push(ce._$),se=V[P[P.length-2]][P[P.length-1]],P.push(se);break;case 3:return!0}}return!0},"parse")},I=(function(){var A={EOF:1,parseError:o(function(D,P){if(this.yy.parser)this.yy.parser.parseError(D,P);else throw new Error(D)},"parseError"),setInput:o(function(M,D){return this.yy=D||this.yy||{},this._input=M,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var D=M.match(/(?:\r\n?|\n).*/g);return D?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),M},"input"),unput:o(function(M){var D=M.length,P=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-D),this.offset-=D;var B=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),P.length-1&&(this.yylineno-=P.length-1);var O=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:P?(P.length===B.length?this.yylloc.first_column:0)+B[B.length-P.length].length-P[0].length:this.yylloc.first_column-D},this.options.ranges&&(this.yylloc.range=[O[0],O[0]+this.yyleng-D]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),D=new Array(M.length+1).join("-");return M+this.upcomingInput()+` +`+D+"^"},"showPosition"),test_match:o(function(M,D){var P,B,O;if(this.options.backtrack_lexer&&(O={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(O.yylloc.range=this.yylloc.range.slice(0))),B=M[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(M[0].length),this.matched+=M[0],P=this.performAction.call(this,this.yy,this,D,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),P)return P;if(this._backtrack){for(var $ in O)this[$]=O[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,D,P,B;this._more||(this.yytext="",this.match="");for(var O=this._currentRules(),$=0;$D[0].length)){if(D=P,B=$,this.options.backtrack_lexer){if(M=this.test_match(P,O[$]),M!==!1)return M;if(this._backtrack){D=!1;continue}else return!1}else if(!this.options.flex)break}return D?(M=this.test_match(D,O[B]),M!==!1?M:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var D=this.next();return D||this.lex()},"lex"),begin:o(function(D){this.conditionStack.push(D)},"begin"),popState:o(function(){var D=this.conditionStack.length-1;return D>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(D){return D=this.conditionStack.length-1-Math.abs(D||0),D>=0?this.conditionStack[D]:"INITIAL"},"topState"),pushState:o(function(D){this.begin(D)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(D,P,B,O){var $=O;switch(B){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return A})();N.lexer=I;function _(){this.yy={}}return o(_,"Parser"),_.prototype=N,N.Parser=_,new _})();xU.parser=xU;JDe=xU});var t7e=Io((bU,TU)=>{"use strict";(function(e,t){typeof bU=="object"&&typeof TU<"u"?TU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_isoWeek=t()})(bU,(function(){"use strict";var e="day";return function(t,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),e)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),e);var u,h,d,f,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,d=(h?n.utc:n)().year(u).startOf("year"),f=4-d.isoWeekday(),d.isoWeekday()>4&&(f+=7),d.add(f,e));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),d=!!h.u(u)||u;return h.p(l)==="isoweek"?d?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}}))});var r7e=Io((CU,wU)=>{"use strict";(function(e,t){typeof CU=="object"&&typeof wU<"u"?wU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_customParseFormat=t()})(CU,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x})(g)}],d=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),f=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=f(g,!1)}],a:[a,function(g){this.afternoon=f(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=d("months"),v=(d("monthsShort")||y.map((function(x){return x.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=d("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(R,L,N){var I=N&&N.toUpperCase();return L||v[N]||e[N]||v[I].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(_,A,M){return A||M.slice(1)}))}))).match(t),b=x.length,T=0;T-1)return new Date((P==="X"?1e3:1)*D);var $=m(P)(D),V=$.year,G=$.month,z=$.day,W=$.hours,H=$.minutes,j=$.seconds,Q=$.milliseconds,U=$.zone,oe=$.week,te=new Date,le=z||(V||G?1:te.getDate()),ie=V||te.getFullYear(),ae=0;V&&!G||(ae=G>0?G-1:te.getMonth());var Re,be=W||0,Pe=H||0,Ge=j||0,Oe=Q||0;return U?new Date(Date.UTC(ie,ae,le,be,Pe,Ge,Oe+60*U.offset*1e3)):B?new Date(Date.UTC(ie,ae,le,be,Pe,Ge,Oe)):(Re=new Date(ie,ae,le,be,Pe,Ge,Oe),oe&&(Re=O(Re).week(oe).toDate()),Re)}catch{return new Date("")}})(k,S,C,v),this.init(),I&&I!==!0&&(this.$L=this.locale(I).$L),N&&k!=this.format(S)&&(this.$d=new Date("")),s={}}else if(S instanceof Array)for(var _=S.length,A=1;A<=_;A+=1){w[1]=S[A-1];var M=v.apply(this,w);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}A===_&&(this.$d=new Date(""))}else b.call(this,T)}}}))});var n7e=Io((kU,SU)=>{"use strict";(function(e,t){typeof kU=="object"&&typeof SU<"u"?SU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_advancedFormat=t()})(kU,(function(){"use strict";return function(e,t){var r=t.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}}));return n.bind(this)(u)}}}))});function b7e(e,t,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);e[0].match(s)&&(t[i]=!0,e.shift(1),n=!0)})}var s7e,el,o7e,l7e,c7e,i7e,qu,_U,LU,DU,jv,Xv,IU,MU,sL,Kv,NU,u7e,PU,Uv,Nw,OU,BU,oL,EU,j3t,X3t,K3t,Z3t,Q3t,J3t,e5t,t5t,r5t,n5t,i5t,a5t,s5t,o5t,l5t,c5t,h7e,u5t,h5t,d5t,f5t,p5t,m5t,g5t,y5t,d7e,v5t,x5t,b5t,f7e,T5t,AU,p7e,m7e,iL,Yv,C5t,w5t,RU,aL,fa,g7e,k5t,C0,S5t,a7e,E5t,y7e,A5t,v7e,R5t,_5t,x7e,T7e=F(()=>{"use strict";s7e=Xs(Ly(),1),el=Xs(vk(),1),o7e=Xs(t7e(),1),l7e=Xs(r7e(),1),c7e=Xs(n7e(),1);vt();Xt();Qt();Nn();el.default.extend(o7e.default);el.default.extend(l7e.default);el.default.extend(c7e.default);i7e={friday:5,saturday:6},qu="",_U="",DU="",jv=[],Xv=[],IU=new Map,MU=[],sL=[],Kv="",NU="",u7e=["active","done","crit","milestone","vert"],PU=[],Uv="",Nw=!1,OU=!1,BU="sunday",oL="saturday",EU=0,j3t=o(function(){MU=[],sL=[],Kv="",PU=[],iL=0,RU=void 0,aL=void 0,fa=[],qu="",_U="",NU="",LU=void 0,DU="",jv=[],Xv=[],Nw=!1,OU=!1,EU=0,IU=new Map,Uv="",yr(),BU="sunday",oL="saturday"},"clear"),X3t=o(function(e){Uv=e},"setDiagramId"),K3t=o(function(e){_U=e},"setAxisFormat"),Z3t=o(function(){return _U},"getAxisFormat"),Q3t=o(function(e){LU=e},"setTickInterval"),J3t=o(function(){return LU},"getTickInterval"),e5t=o(function(e){DU=e},"setTodayMarker"),t5t=o(function(){return DU},"getTodayMarker"),r5t=o(function(e){qu=e},"setDateFormat"),n5t=o(function(){Nw=!0},"enableInclusiveEndDates"),i5t=o(function(){return Nw},"endDatesAreInclusive"),a5t=o(function(){OU=!0},"enableTopAxis"),s5t=o(function(){return OU},"topAxisEnabled"),o5t=o(function(e){NU=e},"setDisplayMode"),l5t=o(function(){return NU},"getDisplayMode"),c5t=o(function(){return qu},"getDateFormat"),h7e=o((e,t)=>{let r=t.toLowerCase().split(/[\s,]+/).filter(n=>n!=="");return[...new Set([...e,...r])]},"mergeTokens"),u5t=o(function(e){jv=h7e(jv,e)},"setIncludes"),h5t=o(function(){return jv},"getIncludes"),d5t=o(function(e){Xv=h7e(Xv,e)},"setExcludes"),f5t=o(function(){return Xv},"getExcludes"),p5t=o(function(){return IU},"getLinks"),m5t=o(function(e){Kv=e,MU.push(e)},"addSection"),g5t=o(function(){return MU},"getSections"),y5t=o(function(){let e=a7e(),t=10,r=0;for(;!e&&rl))throw new Error("Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.");e=e.add(1,"d")}return[t,s]},"fixTaskDates"),AU=o(function(e,t,r){if(r=r.trim(),o(l=>{let u=l.trim();return u==="x"||u==="X"},"isTimestampFormat")(t)&&/^\d+$/.test(r))return new Date(Number(r));let a=/^after\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let l=null;for(let h of a.groups.ids.split(" ")){let d=C0(h);d!==void 0&&(!l||d.endTime>l.endTime)&&(l=d)}if(l)return l.endTime;let u=new Date;return u.setHours(0,0,0,0),u}let s=(0,el.default)(r,t.trim(),!0);if(s.isValid())return s.toDate();{Z.debug("Invalid date:"+r),Z.debug("With date format:"+t.trim());let l=new Date(r);if(l===void 0||isNaN(l.getTime())||l.getFullYear()<-1e4||l.getFullYear()>1e4)throw new Error("Invalid date:"+r);return l}},"getStartDate"),p7e=o(function(e){let t=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(e.trim());return t!==null?[Number.parseFloat(t[1]),t[2]]:[NaN,"ms"]},"parseDuration"),m7e=o(function(e,t,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let d=null;for(let p of a.groups.ids.split(" ")){let m=C0(p);m!==void 0&&(!d||m.startTime{window.open(r,"_self")}),IU.set(n,r))}),y7e(e,"clickable")},"setLink"),y7e=o(function(e,t){e.split(",").forEach(function(r){let n=C0(r);n!==void 0&&n.classes.push(t)})},"setClass"),A5t=o(function(e,t,r){if(Ae().securityLevel!=="loose"||t===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{Zt.runFunc(t,...n)})},"setClickFun"),v7e=o(function(e,t){PU.push(function(){let r=Uv?`${Uv}-${e}`:e,n=document.querySelector(`[id="${r}"]`);n!==null&&n.addEventListener("click",function(){t()})},function(){let r=Uv?`${Uv}-${e}`:e,n=document.querySelector(`[id="${r}-text"]`);n!==null&&n.addEventListener("click",function(){t()})})},"pushFun"),R5t=o(function(e,t,r){e.split(",").forEach(function(n){A5t(n,t,r)}),y7e(e,"clickable")},"setClickEvent"),_5t=o(function(e){PU.forEach(function(t){t(e)})},"bindFunctions"),x7e={getConfig:o(()=>Ae().gantt,"getConfig"),clear:j3t,setDateFormat:r5t,getDateFormat:c5t,enableInclusiveEndDates:n5t,endDatesAreInclusive:i5t,enableTopAxis:a5t,topAxisEnabled:s5t,setAxisFormat:K3t,getAxisFormat:Z3t,setTickInterval:Q3t,getTickInterval:J3t,setTodayMarker:e5t,getTodayMarker:t5t,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,setDiagramId:X3t,setDisplayMode:o5t,getDisplayMode:l5t,setAccDescription:Rr,getAccDescription:_r,addSection:m5t,getSections:g5t,getTasks:y5t,addTask:k5t,findTaskById:C0,addTaskOrg:S5t,setIncludes:u5t,getIncludes:h5t,setExcludes:d5t,getExcludes:f5t,setClickEvent:R5t,setLink:E5t,getLinks:p5t,bindFunctions:_5t,parseDuration:p7e,isInvalidDate:d7e,setWeekday:v5t,getWeekday:x5t,setWeekend:b5t};o(b7e,"getTaskTags")});var C7e=Io(($U,FU)=>{"use strict";(function(e,t){typeof $U=="object"&&typeof FU<"u"?FU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_duration=t()})($U,(function(){"use strict";var e,t,r=1e3,n=6e4,i=36e5,a=864e5,s=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,l=31536e6,u=2628e6,h=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:l,months:u,days:a,hours:i,minutes:n,seconds:r,milliseconds:1,weeks:6048e5},f=o(function(k){return k instanceof b},"c"),p=o(function(k,C,w){return new b(k,w,C.$l)},"f"),m=o(function(k){return t.p(k)+"s"},"m"),g=o(function(k){return k<0},"l"),y=o(function(k){return g(k)?Math.ceil(k):Math.floor(k)},"$"),v=o(function(k){return Math.abs(k)},"y"),x=o(function(k,C){return k?g(k)?{negative:!0,format:""+v(k)+C}:{negative:!1,format:""+k+C}:{negative:!1,format:""}},"v"),b=(function(){function k(w,S,R){var L=this;if(this.$d={},this.$l=R,w===void 0&&(this.$ms=0,this.parseFromMilliseconds()),S)return p(w*d[m(S)],this);if(typeof w=="number")return this.$ms=w,this.parseFromMilliseconds(),this;if(typeof w=="object")return Object.keys(w).forEach((function(_){L.$d[m(_)]=w[_]})),this.calMilliseconds(),this;if(typeof w=="string"){var N=w.match(h);if(N){var I=N.slice(2).map((function(_){return _!=null?Number(_):0}));return this.$d.years=I[0],this.$d.months=I[1],this.$d.weeks=I[2],this.$d.days=I[3],this.$d.hours=I[4],this.$d.minutes=I[5],this.$d.seconds=I[6],this.calMilliseconds(),this}}return this}o(k,"l");var C=k.prototype;return C.calMilliseconds=function(){var w=this;this.$ms=Object.keys(this.$d).reduce((function(S,R){return S+(w.$d[R]||0)*d[R]}),0)},C.parseFromMilliseconds=function(){var w=this.$ms;this.$d.years=y(w/l),w%=l,this.$d.months=y(w/u),w%=u,this.$d.days=y(w/a),w%=a,this.$d.hours=y(w/i),w%=i,this.$d.minutes=y(w/n),w%=n,this.$d.seconds=y(w/r),w%=r,this.$d.milliseconds=w},C.toISOString=function(){var w=x(this.$d.years,"Y"),S=x(this.$d.months,"M"),R=+this.$d.days||0;this.$d.weeks&&(R+=7*this.$d.weeks);var L=x(R,"D"),N=x(this.$d.hours,"H"),I=x(this.$d.minutes,"M"),_=this.$d.seconds||0;this.$d.milliseconds&&(_+=this.$d.milliseconds/1e3,_=Math.round(1e3*_)/1e3);var A=x(_,"S"),M=w.negative||S.negative||L.negative||N.negative||I.negative||A.negative,D=N.format||I.format||A.format?"T":"",P=(M?"-":"")+"P"+w.format+S.format+L.format+D+N.format+I.format+A.format;return P==="P"||P==="-P"?"P0D":P},C.toJSON=function(){return this.toISOString()},C.format=function(w){var S=w||"YYYY-MM-DDTHH:mm:ss",R={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return S.replace(s,(function(L,N){return N||String(R[L])}))},C.as=function(w){return this.$ms/d[m(w)]},C.get=function(w){var S=this.$ms,R=m(w);return R==="milliseconds"?S%=1e3:S=R==="weeks"?y(S/d[R]):this.$d[R],S||0},C.add=function(w,S,R){var L;return L=S?w*d[m(S)]:f(w)?w.$ms:p(w,this).$ms,p(this.$ms+L*(R?-1:1),this)},C.subtract=function(w,S){return this.add(w,S,!0)},C.locale=function(w){var S=this.clone();return S.$l=w,S},C.clone=function(){return p(this.$ms,this)},C.humanize=function(w){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!w)},C.valueOf=function(){return this.asMilliseconds()},C.milliseconds=function(){return this.get("milliseconds")},C.asMilliseconds=function(){return this.as("milliseconds")},C.seconds=function(){return this.get("seconds")},C.asSeconds=function(){return this.as("seconds")},C.minutes=function(){return this.get("minutes")},C.asMinutes=function(){return this.as("minutes")},C.hours=function(){return this.get("hours")},C.asHours=function(){return this.as("hours")},C.days=function(){return this.get("days")},C.asDays=function(){return this.as("days")},C.weeks=function(){return this.get("weeks")},C.asWeeks=function(){return this.as("weeks")},C.months=function(){return this.get("months")},C.asMonths=function(){return this.as("months")},C.years=function(){return this.get("years")},C.asYears=function(){return this.as("years")},k})(),T=o(function(k,C,w){return k.add(C.years()*w,"y").add(C.months()*w,"M").add(C.days()*w,"d").add(C.hours()*w,"h").add(C.minutes()*w,"m").add(C.seconds()*w,"s").add(C.milliseconds()*w,"ms")},"p");return function(k,C,w){e=w,t=w().$utils(),w.duration=function(L,N){var I=w.locale();return p(L,{$l:I},N)},w.isDuration=f;var S=C.prototype.add,R=C.prototype.subtract;C.prototype.add=function(L,N){return f(L)?T(this,L,1):S.bind(this)(L,N)},C.prototype.subtract=function(L,N){return f(L)?T(this,L,-1):R.bind(this)(L,N)}}}))});var Zv,k7e,L5t,w7e,D5t,ld,zU,I5t,S7e,E7e=F(()=>{"use strict";Zv=Xs(vk(),1),k7e=Xs(C7e(),1);vt();$r();Vr();Xt();$n();Zv.default.extend(k7e.default);L5t=o(function(){Z.debug("Something is calling, setConf, remove the call")},"setConf"),w7e={monday:Gd,tuesday:mE,wednesday:gE,thursday:Qc,friday:yE,saturday:vE,sunday:Zl},D5t=o((e,t)=>{let r=[...e].map(()=>-1/0),n=[...e].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+t,s>i&&(i=s);break}return i},"getMaxIntersections"),zU=1e4,I5t=o(function(e,t,r,n){let i=Ae().gantt;n.db.setDiagramId(t);let a=Ae().securityLevel,s;a==="sandbox"&&(s=et("#i"+t));let l=a==="sandbox"?et(s.nodes()[0].contentDocument.body):et("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(t);ld=h.parentElement.offsetWidth,ld===void 0&&(ld=1200),i.useWidth!==void 0&&(ld=i.useWidth);let d=n.db.getTasks(),f=d.filter(N=>!N.vert),p=[];for(let N of f)p.push(N.type);p=L(p);let m={},g=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let N={};for(let _ of f)N[_.section]===void 0?N[_.section]=[_]:N[_.section].push(_);let I=0;for(let _ of Object.keys(N)){let A=D5t(N[_],I)+1;I+=A,g+=A*(i.barHeight+i.barGap),m[_]=A}}else{g+=f.length*(i.barHeight+i.barGap);for(let N of p)m[N]=f.filter(I=>I.type===N).length}h.setAttribute("viewBox","0 0 "+ld+" "+g);let y=l.select(`[id="${t}"]`),v=TE().domain([ES(d,function(N){return N.startTime}),SS(d,function(N){return N.endTime})]).rangeRound([0,ld-i.leftPadding-i.rightPadding]);function x(N,I){let _=N.startTime,A=I.startTime,M=0;return _>A?M=1:_W.vert===H.vert?0:W.vert?1:-1);let B=N.filter(W=>!W.vert),$=[...new Set(B.map(W=>W.order))].map(W=>B.find(H=>H.order===W));y.append("g").selectAll("rect").data($).enter().append("rect").attr("x",0).attr("y",function(W,H){return H=W.order,H*I+_-2}).attr("width",function(){return P-i.rightPadding/2}).attr("height",I).attr("class",function(W){for(let[H,j]of p.entries())if(W.type===j)return"section section"+H%i.numberSectionStyles;return"section section0"}).enter();let V=y.append("g").selectAll("rect").data(N).enter(),G=n.db.getLinks();if(V.append("rect").attr("id",function(W){return t+"-"+W.id}).attr("rx",3).attr("ry",3).attr("x",function(W){return W.milestone?v(W.startTime)+A+.5*(v(W.endTime)-v(W.startTime))-.5*M:v(W.startTime)+A}).attr("y",function(W,H){return H=W.order,W.vert?i.gridLineStartPadding:H*I+_}).attr("width",function(W){return W.milestone?M:W.vert?.08*M:v(W.renderEndTime||W.endTime)-v(W.startTime)}).attr("height",function(W){return W.vert?B.length*(i.barHeight+i.barGap)+i.barHeight*2:M}).attr("transform-origin",function(W,H){return H=W.order,(v(W.startTime)+A+.5*(v(W.endTime)-v(W.startTime))).toString()+"px "+(H*I+_+.5*M).toString()+"px"}).attr("class",function(W){let H="task",j="";W.classes.length>0&&(j=W.classes.join(" "));let Q=0;for(let[oe,te]of p.entries())W.type===te&&(Q=oe%i.numberSectionStyles);let U="";return W.active?W.crit?U+=" activeCrit":U=" active":W.done?W.crit?U=" doneCrit":U=" done":W.crit&&(U+=" crit"),U.length===0&&(U=" task"),W.milestone&&(U=" milestone "+U),W.vert&&(U=" vert "+U),U+=Q,U+=" "+j,H+U}),V.append("text").attr("id",function(W){return t+"-"+W.id+"-text"}).text(function(W){return W.task}).attr("font-size",i.fontSize).attr("x",function(W){let H=v(W.startTime),j=v(W.renderEndTime||W.endTime);if(W.milestone&&(H+=.5*(v(W.endTime)-v(W.startTime))-.5*M,j=H+M),W.vert)return v(W.startTime)+A;let Q=this.getBBox().width;return Q>j-H?j+Q+1.5*i.leftPadding>P?H+A-5:j+A+5:(j-H)/2+H+A}).attr("y",function(W,H){return W.vert?i.gridLineStartPadding+B.length*(i.barHeight+i.barGap)+60:(H=W.order,H*I+i.barHeight/2+(i.fontSize/2-2)+_)}).attr("text-height",M).attr("class",function(W){let H=v(W.startTime),j=v(W.endTime);W.milestone&&(j=H+M);let Q=this.getBBox().width,U="";W.classes.length>0&&(U=W.classes.join(" "));let oe=0;for(let[le,ie]of p.entries())W.type===ie&&(oe=le%i.numberSectionStyles);let te="";return W.active&&(W.crit?te="activeCritText"+oe:te="activeText"+oe),W.done?W.crit?te=te+" doneCritText"+oe:te=te+" doneText"+oe:W.crit&&(te=te+" critText"+oe),W.milestone&&(te+=" milestoneText"),W.vert&&(te+=" vertText"),Q>j-H?j+Q+1.5*i.leftPadding>P?U+" taskTextOutsideLeft taskTextOutside"+oe+" "+te:U+" taskTextOutsideRight taskTextOutside"+oe+" "+te+" width-"+Q:U+" taskText taskText"+oe+" "+te+" width-"+Q}),Ae().securityLevel==="sandbox"){let W;W=et("#i"+t);let H=W.nodes()[0].contentDocument;V.filter(function(j){return G.has(j.id)}).each(function(j){var Q=H.querySelector("#"+CSS.escape(t+"-"+j.id)),U=H.querySelector("#"+CSS.escape(t+"-"+j.id+"-text"));let oe=Q.parentNode;var te=H.createElement("a");te.setAttribute("xlink:href",G.get(j.id)),te.setAttribute("target","_top"),oe.appendChild(te),te.appendChild(Q),te.appendChild(U)})}}o(T,"drawRects");function k(N,I,_,A,M,D,P,B){if(P.length===0&&B.length===0)return;let O,$;for(let{startTime:j,endTime:Q}of D)(O===void 0||j$)&&($=Q);if(!O||!$)return;if((0,Zv.default)($).diff((0,Zv.default)(O),"year")>5){Z.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let V=n.db.getDateFormat(),G=[],z=null,W=(0,Zv.default)(O);for(;W.valueOf()<=$;)n.db.isInvalidDate(W,V,P,B)?z?z.end=W:z={start:W,end:W}:z&&(G.push(z),z=null),W=W.add(1,"d");y.append("g").selectAll("rect").data(G).enter().append("rect").attr("id",j=>t+"-exclude-"+j.start.format("YYYY-MM-DD")).attr("x",j=>v(j.start.startOf("day"))+_).attr("y",i.gridLineStartPadding).attr("width",j=>v(j.end.endOf("day"))-v(j.start.startOf("day"))).attr("height",M-I-i.gridLineStartPadding).attr("transform-origin",function(j,Q){return(v(j.start)+_+.5*(v(j.end)-v(j.start))).toString()+"px "+(Q*N+.5*M).toString()+"px"}).attr("class","exclude-range")}o(k,"drawExcludeDays");function C(N,I,_,A){if(_<=0||N>I)return 1/0;let M=I-N,D=Zv.default.duration({[A??"day"]:_}).asMilliseconds();return D<=0?1/0:Math.ceil(M/D)}o(C,"getEstimatedTickCount");function w(N,I,_,A){let M=n.db.getDateFormat(),D=n.db.getAxisFormat(),P;D?P=D:M==="D"?P="%d":P=i.axisFormat??"%Y-%m-%d";let B=N8(v).tickSize(-A+I+i.gridLineStartPadding).tickFormat(um(P)),$=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if($!==null){let V=parseInt($[1],10);if(isNaN(V)||V<=0)Z.warn(`Invalid tick interval value: "${$[1]}". Skipping custom tick interval.`);else{let G=$[2],z=n.db.getWeekday()||i.weekday,W=v.domain(),H=W[0],j=W[1],Q=C(H,j,V,G);if(Q>zU)Z.warn(`The tick interval "${V}${G}" would generate ${Q} ticks, which exceeds the maximum allowed (${zU}). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(G){case"millisecond":B.ticks(Kc.every(V));break;case"second":B.ticks(Bo.every(V));break;case"minute":B.ticks(ph.every(V));break;case"hour":B.ticks(mh.every(V));break;case"day":B.ticks(hl.every(V));break;case"week":B.ticks(w7e[z].every(V));break;case"month":B.ticks(gh.every(V));break}}}if(y.append("g").attr("class","grid").attr("transform","translate("+N+", "+(A-50)+")").call(B).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let V=M8(v).tickSize(-A+I+i.gridLineStartPadding).tickFormat(um(P));if($!==null){let G=parseInt($[1],10);if(isNaN(G)||G<=0)Z.warn(`Invalid tick interval value: "${$[1]}". Skipping custom tick interval.`);else{let z=$[2],W=n.db.getWeekday()||i.weekday,H=v.domain(),j=H[0],Q=H[1];if(C(j,Q,G,z)<=zU)switch(z){case"millisecond":V.ticks(Kc.every(G));break;case"second":V.ticks(Bo.every(G));break;case"minute":V.ticks(ph.every(G));break;case"hour":V.ticks(mh.every(G));break;case"day":V.ticks(hl.every(G));break;case"week":V.ticks(w7e[W].every(G));break;case"month":V.ticks(gh.every(G));break}}}y.append("g").attr("class","grid").attr("transform","translate("+N+", "+I+")").call(V).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(w,"makeGrid");function S(N,I){let _=0,A=Object.keys(m).map(M=>[M,m[M]]);y.append("g").selectAll("text").data(A).enter().append(function(M){let D=M[0].split(xt.lineBreakRegex),P=-(D.length-1)/2,B=u.createElementNS("http://www.w3.org/2000/svg","text");B.setAttribute("dy",P+"em");for(let[O,$]of D.entries()){let V=u.createElementNS("http://www.w3.org/2000/svg","tspan");V.setAttribute("alignment-baseline","central"),V.setAttribute("x","10"),O>0&&V.setAttribute("dy","1em"),V.textContent=$,B.appendChild(V)}return B}).attr("x",10).attr("y",function(M,D){if(D>0)for(let P=0;P{"use strict";M5t=o(e=>` + .mermaid-main-font { + font-family: ${e.fontFamily}; + } + + .exclude-range { + fill: ${e.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${e.sectionBkgColor}; + } + + .section2 { + fill: ${e.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${e.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${e.titleColor}; + } + + .sectionTitle1 { + fill: ${e.titleColor}; + } + + .sectionTitle2 { + fill: ${e.titleColor}; + } + + .sectionTitle3 { + fill: ${e.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: ${e.fontFamily}; + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${e.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${e.fontFamily}; + fill: ${e.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${e.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: ${e.fontFamily}; + } + + .taskTextOutsideRight { + fill: ${e.taskTextDarkColor}; + text-anchor: start; + font-family: ${e.fontFamily}; + } + + .taskTextOutsideLeft { + fill: ${e.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${e.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${e.taskBkgColor}; + stroke: ${e.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${e.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${e.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${e.activeTaskBkgColor}; + stroke: ${e.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${e.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${e.doneTaskBorderColor}; + fill: ${e.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${e.taskTextDarkColor} !important; + } + + /* Done task text displayed outside the bar sits against the diagram background, + not against the done-task bar, so it must use the outside/contrast color. */ + .doneText0.taskTextOutsideLeft, + .doneText0.taskTextOutsideRight, + .doneText1.taskTextOutsideLeft, + .doneText1.taskTextOutsideRight, + .doneText2.taskTextOutsideLeft, + .doneText2.taskTextOutsideRight, + .doneText3.taskTextOutsideLeft, + .doneText3.taskTextOutsideRight { + fill: ${e.taskTextOutsideColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${e.critBorderColor}; + fill: ${e.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${e.critBorderColor}; + fill: ${e.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${e.critBorderColor}; + fill: ${e.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${e.taskTextDarkColor} !important; + } + + /* Done-crit task text outside the bar \u2014 same reasoning as doneText above. */ + .doneCritText0.taskTextOutsideLeft, + .doneCritText0.taskTextOutsideRight, + .doneCritText1.taskTextOutsideLeft, + .doneCritText1.taskTextOutsideRight, + .doneCritText2.taskTextOutsideLeft, + .doneCritText2.taskTextOutsideRight, + .doneCritText3.taskTextOutsideLeft, + .doneCritText3.taskTextOutsideRight { + fill: ${e.taskTextOutsideColor} !important; + } + + .vert { + stroke: ${e.vertLineColor}; + } + + .vertText { + font-size: 15px; + text-anchor: middle; + fill: ${e.vertLineColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${e.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.titleColor||e.textColor}; + font-family: ${e.fontFamily}; + } +`,"getStyles"),A7e=M5t});var _7e={};ir(_7e,{diagram:()=>N5t});var N5t,L7e=F(()=>{"use strict";e7e();T7e();E7e();R7e();N5t={parser:JDe,db:x7e,renderer:S7e,styles:A7e}});var M7e,N7e=F(()=>{"use strict";Xa();vt();M7e={parse:o(async e=>{let t=await Si("info",e);Z.debug(t)},"parse")}});var $5t,F5t,P7e,O7e=F(()=>{"use strict";$5t={version:"11.16.0"},F5t=o(()=>$5t.version,"getVersion"),P7e={getVersion:F5t}});var xn,Ka=F(()=>{"use strict";$r();Xt();xn=o(e=>{let{securityLevel:t}=Ae(),r=et("body");if(t==="sandbox"){let a=et(`#i${e}`).node()?.contentDocument??document;r=et(a.body)}return r.select(`#${e}`)},"selectSvgElement")});var z5t,B7e,$7e=F(()=>{"use strict";vt();Ka();$n();z5t=o((e,t,r)=>{Z.debug(`rendering info diagram +`+e);let n=xn(t);Wr(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),B7e={draw:z5t}});var F7e={};ir(F7e,{diagram:()=>G5t});var G5t,z7e=F(()=>{"use strict";N7e();O7e();$7e();G5t={parser:M7e,db:P7e,renderer:B7e}});var W7e,GU,lL,VU,q5t,H5t,U5t,Y5t,j5t,X5t,K5t,cL,WU=F(()=>{"use strict";vt();Nn();Wi();W7e=cr.pie,GU={sections:new Map,showData:!1,config:W7e},lL=GU.sections,VU=GU.showData,q5t=structuredClone(W7e),H5t=o(()=>structuredClone(q5t),"getConfig"),U5t=o(()=>{lL=new Map,VU=GU.showData,yr()},"clear"),Y5t=o(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);lL.has(e)||(lL.set(e,t),Z.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),j5t=o(()=>lL,"getSections"),X5t=o(e=>{VU=e},"setShowData"),K5t=o(()=>VU,"getShowData"),cL={getConfig:H5t,clear:U5t,setDiagramTitle:Or,getDiagramTitle:Lr,setAccTitle:kr,getAccTitle:Ar,setAccDescription:Rr,getAccDescription:_r,addSection:Y5t,getSections:j5t,setShowData:X5t,getShowData:K5t}});var Z5t,q7e,H7e=F(()=>{"use strict";Xa();vt();Hs();WU();Z5t=o((e,t)=>{Gn(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),q7e={parse:o(async e=>{let t=await Si("pie",e);Z.debug(t),Z5t(t,cL)},"parse")}});var Q5t,U7e,Y7e=F(()=>{"use strict";Q5t=o(e=>` + .pieCircle{ + stroke: ${e.pieStrokeColor}; + stroke-width : ${e.pieStrokeWidth}; + opacity : ${e.pieOpacity}; + } + .pieCircle.highlighted{ + scale: 1.05; + opacity: 1; + } + .pieCircle.highlightedOnHover:hover{ + transition-duration: 250ms; + scale: 1.05; + opacity: 1; + } + .pieOuterCircle{ + stroke: ${e.pieOuterStrokeColor}; + stroke-width: ${e.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${e.pieTitleTextSize}; + fill: ${e.pieTitleTextColor}; + font-family: ${e.fontFamily}; + } + .slice { + font-family: ${e.fontFamily}; + fill: ${e.pieSectionTextColor}; + font-size:${e.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${e.pieLegendTextColor}; + font-family: ${e.fontFamily}; + font-size: ${e.pieLegendTextSize}; + } +`,"getStyles"),U7e=Q5t});var J5t,eAt,j7e,X7e=F(()=>{"use strict";$r();Xt();vt();Ka();$n();Qt();J5t=o(e=>{let t=[...e.values()].reduce((i,a)=>i+a,0),r=[...e.entries()].map(([i,a])=>({label:i,value:a})).filter(i=>i.value/t*100>=1);return AE().value(i=>i.value).sort(null)(r)},"createPieArcs"),eAt=o((e,t,r,n)=>{Z.debug(`rendering pie chart +`+e);let i=n.db,a=Ae(),s=qr(i.getConfig(),a.pie),l=40,u=18,h=4,d=450,f=d,p=xn(t),m=p.append("g");m.attr("transform","translate("+f/2+","+d/2+")");let{themeVariables:g}=a,[y]=As(g.pieOuterStrokeWidth);y??=2;let v=s.legendPosition,x=s.textPosition,b=s.donutHole>0&&s.donutHole<=.9?s.donutHole:0,T=Math.min(f,d)/2-l,k=ec().innerRadius(b*T).outerRadius(T),C=ec().innerRadius(T*x).outerRadius(T*x),w=m.append("g");w.append("circle").attr("cx",0).attr("cy",0).attr("r",T+y/2).attr("class","pieOuterCircle");let S=i.getSections(),R=J5t(S),L=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],N=0;S.forEach(U=>{N+=U});let I=R.filter(U=>(U.data.value/N*100).toFixed(0)!=="0"),_=Oo(L).domain([...S.keys()]);w.selectAll("mySlices").data(I).enter().append("path").attr("d",k).attr("fill",U=>_(U.data.label)).attr("class",U=>{let oe="pieCircle";return s.highlightSlice==="hover"?oe+=" highlightedOnHover":s.highlightSlice===U.data.label&&(oe+=" highlighted"),oe}),w.selectAll("mySlices").data(I).enter().append("text").text(U=>(U.data.value/N*100).toFixed(0)+"%").attr("transform",U=>"translate("+C.centroid(U)+")").style("text-anchor","middle").attr("class","slice");let A=m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(d-50)/2).attr("class","pieTitleText"),M=[...S.entries()].map(([U,oe])=>({label:U,value:oe})),D=m.selectAll(".legend").data(M).enter().append("g").attr("class","legend");D.append("rect").attr("width",u).attr("height",u).style("fill",U=>_(U.label)).style("stroke",U=>_(U.label)),D.append("text").attr("x",u+h).attr("y",u-h).text(U=>i.getShowData()?`${U.label} [${U.value}]`:U.label);let P=Math.max(...D.selectAll("text").nodes().map(U=>U?.getBoundingClientRect().width??0)),B=d,O=f+l,$=u+h,V=M.length*$;switch(v){case"center":D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=-P/2-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"});break;case"top":B+=V,D.attr("transform",(U,oe)=>{let te=T,le=-P/2-(u+h),ie=oe*$-te;return`translate(${le}, ${ie})`}),w.attr("transform",()=>`translate(0, ${V+$})`);break;case"bottom":B+=V,D.attr("transform",(U,oe)=>{let te=-T-$,le=-P/2-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"});break;case"left":O+=u+h+P,D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=-T-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"}),w.attr("transform",()=>`translate(${P+u+h}, 0)`);break;case"right":default:O+=u+h+P,D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=12*u,ie=oe*$-te;return"translate("+le+","+ie+")"});break}let G=A.node()?.getBoundingClientRect().width??0,z=f/2-G/2,W=f/2+G/2,H=Math.min(0,z),Q=Math.max(O,W)-H;p.attr("viewBox",`${H} 0 ${Q} ${B}`),Wr(p,B,Q,s.useMaxWidth)},"draw"),j7e={draw:eAt}});var K7e={};ir(K7e,{diagram:()=>tAt});var tAt,Z7e=F(()=>{"use strict";H7e();WU();Y7e();X7e();tAt={parser:q7e,db:cL,renderer:j7e,styles:U7e}});var qU,J7e,e8e=F(()=>{"use strict";qU=(function(){var e=o(function(X,fe,K,qe){for(K=K||{},qe=X.length;qe--;K[X[qe]]=fe);return K},"o"),t=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],d=[1,37],f=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,45],x=[1,14],b=[1,23],T=[1,18],k=[1,19],C=[1,20],w=[1,21],S=[1,22],R=[1,24],L=[1,25],N=[1,26],I=[1,27],_=[1,28],A=[1,29],M=[1,32],D=[1,33],P=[1,34],B=[1,39],O=[1,40],$=[1,42],V=[1,44],G=[1,63],z=[1,62],W=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],H=[1,66],j=[1,67],Q=[1,68],U=[1,69],oe=[1,70],te=[1,71],le=[1,72],ie=[1,73],ae=[1,74],Re=[1,75],be=[1,76],Pe=[1,77],Ge=[4,5,6,7,8,9,10,11,12,13,14,15,18],Oe=[1,91],ue=[1,92],ye=[1,93],ke=[1,100],ce=[1,94],re=[1,97],J=[1,95],se=[1,96],ge=[1,98],Te=[1,99],we=[1,103],Me=[10,55,56,57],ve=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(fe,K,qe,_e,Be,Ne,He){var $e=Ne.length-1;switch(Be){case 23:this.$=Ne[$e];break;case 24:this.$=Ne[$e-1]+""+Ne[$e];break;case 26:this.$=Ne[$e-1]+Ne[$e];break;case 27:this.$=[Ne[$e].trim()];break;case 28:Ne[$e-2].push(Ne[$e].trim()),this.$=Ne[$e-2];break;case 29:this.$=Ne[$e-4],_e.addClass(Ne[$e-2],Ne[$e]);break;case 37:this.$=[];break;case 42:this.$=Ne[$e].trim(),_e.setDiagramTitle(this.$);break;case 43:this.$=Ne[$e].trim(),_e.setAccTitle(this.$);break;case 44:case 45:this.$=Ne[$e].trim(),_e.setAccDescription(this.$);break;case 46:_e.addSection(Ne[$e].substr(8)),this.$=Ne[$e].substr(8);break;case 47:_e.addPoint(Ne[$e-3],"",Ne[$e-1],Ne[$e],[]);break;case 48:_e.addPoint(Ne[$e-4],Ne[$e-3],Ne[$e-1],Ne[$e],[]);break;case 49:_e.addPoint(Ne[$e-4],"",Ne[$e-2],Ne[$e-1],Ne[$e]);break;case 50:_e.addPoint(Ne[$e-5],Ne[$e-4],Ne[$e-2],Ne[$e-1],Ne[$e]);break;case 51:_e.setXAxisLeftText(Ne[$e-2]),_e.setXAxisRightText(Ne[$e]);break;case 52:Ne[$e-1].text+=" \u27F6 ",_e.setXAxisLeftText(Ne[$e-1]);break;case 53:_e.setXAxisLeftText(Ne[$e]);break;case 54:_e.setYAxisBottomText(Ne[$e-2]),_e.setYAxisTopText(Ne[$e]);break;case 55:Ne[$e-1].text+=" \u27F6 ",_e.setYAxisBottomText(Ne[$e-1]);break;case 56:_e.setYAxisBottomText(Ne[$e]);break;case 57:_e.setQuadrant1Text(Ne[$e]);break;case 58:_e.setQuadrant2Text(Ne[$e]);break;case 59:_e.setQuadrant3Text(Ne[$e]);break;case 60:_e.setQuadrant4Text(Ne[$e]);break;case 64:this.$={text:Ne[$e],type:"text"};break;case 65:this.$={text:Ne[$e-1].text+""+Ne[$e],type:Ne[$e-1].type};break;case 66:this.$={text:Ne[$e],type:"text"};break;case 67:this.$={text:Ne[$e],type:"markdown"};break;case 68:this.$=Ne[$e];break;case 69:this.$=Ne[$e-1]+""+Ne[$e];break}},"anonymous"),table:[{18:t,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:t,26:8,27:2,28:r,55:n,56:i,57:a},{18:t,26:9,27:2,28:r,55:n,56:i,57:a},e(s,[2,33],{29:10}),e(l,[2,61]),e(l,[2,62]),e(l,[2,63]),{1:[2,30]},{1:[2,31]},e(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:k,39:C,41:w,42:S,48:R,50:L,51:N,52:I,53:_,54:A,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(s,[2,34]),{27:46,55:n,56:i,57:a},e(u,[2,37]),e(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:k,39:C,41:w,42:S,48:R,50:L,51:N,52:I,53:_,54:A,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(u,[2,39]),e(u,[2,40]),e(u,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},e(u,[2,45]),e(u,[2,46]),{18:[1,51]},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:52,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:53,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:54,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:55,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:56,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:57,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,44:[1,58],47:[1,59],58:61,59:60,63:P,64:B,65:O,66:$,67:V},e(W,[2,64]),e(W,[2,66]),e(W,[2,67]),e(W,[2,70]),e(W,[2,71]),e(W,[2,72]),e(W,[2,73]),e(W,[2,74]),e(W,[2,75]),e(W,[2,76]),e(W,[2,77]),e(W,[2,78]),e(W,[2,79]),e(W,[2,80]),e(W,[2,81]),e(s,[2,35]),e(u,[2,38]),e(u,[2,42]),e(u,[2,43]),e(u,[2,44]),{3:65,4:H,5:j,6:Q,7:U,8:oe,9:te,10:le,11:ie,12:ae,13:Re,14:be,15:Pe,21:64},e(u,[2,53],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,49:[1,78],63:P,64:B,65:O,66:$,67:V}),e(u,[2,56],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,49:[1,79],63:P,64:B,65:O,66:$,67:V}),e(u,[2,57],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,58],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,59],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,60],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),{45:[1,80]},{44:[1,81]},e(W,[2,65]),e(W,[2,82]),e(W,[2,83]),e(W,[2,84]),{3:83,4:H,5:j,6:Q,7:U,8:oe,9:te,10:le,11:ie,12:ae,13:Re,14:be,15:Pe,18:[1,82]},e(Ge,[2,23]),e(Ge,[2,1]),e(Ge,[2,2]),e(Ge,[2,3]),e(Ge,[2,4]),e(Ge,[2,5]),e(Ge,[2,6]),e(Ge,[2,7]),e(Ge,[2,8]),e(Ge,[2,9]),e(Ge,[2,10]),e(Ge,[2,11]),e(Ge,[2,12]),e(u,[2,52],{58:31,43:84,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(u,[2,55],{58:31,43:85,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),{46:[1,86]},{45:[1,87]},{4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,16:90,17:J,18:se,19:ge,20:Te,22:89,23:88},e(Ge,[2,24]),e(u,[2,51],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,54],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,47],{22:89,16:90,23:101,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),{46:[1,102]},e(u,[2,29],{10:we}),e(Me,[2,27],{16:104,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),e(ve,[2,25]),e(ve,[2,13]),e(ve,[2,14]),e(ve,[2,15]),e(ve,[2,16]),e(ve,[2,17]),e(ve,[2,18]),e(ve,[2,19]),e(ve,[2,20]),e(ve,[2,21]),e(ve,[2,22]),e(u,[2,49],{10:we}),e(u,[2,48],{22:89,16:90,23:105,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),{4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,16:90,17:J,18:se,19:ge,20:Te,22:106},e(ve,[2,26]),e(u,[2,50],{10:we}),e(Me,[2,28],{16:104,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(fe,K){if(K.recoverable)this.trace(fe);else{var qe=new Error(fe);throw qe.hash=K,qe}},"parseError"),parse:o(function(fe){var K=this,qe=[0],_e=[],Be=[null],Ne=[],He=this.table,$e="",Xe=0,Fe=0,Ke=0,xe=2,mt=1,Le=Ne.slice.call(arguments,1),ft=Object.create(this.lexer),wt={yy:{}};for(var zt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,zt)&&(wt.yy[zt]=this.yy[zt]);ft.setInput(fe,wt.yy),wt.yy.lexer=ft,wt.yy.parser=this,typeof ft.yylloc>"u"&&(ft.yylloc={});var St=ft.yylloc;Ne.push(St);var At=ft.options&&ft.options.ranges;typeof wt.yy.parseError=="function"?this.parseError=wt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function bt(De){qe.length=qe.length-2*De,Be.length=Be.length-De,Ne.length=Ne.length-De}o(bt,"popStack");function me(){var De;return De=_e.pop()||ft.lex()||mt,typeof De!="number"&&(De instanceof Array&&(_e=De,De=_e.pop()),De=K.symbols_[De]||De),De}o(me,"lex");for(var lt,gt,Ze,Ee,tt,at,ot={},Wt,Bt,qt,vr;;){if(Ze=qe[qe.length-1],this.defaultActions[Ze]?Ee=this.defaultActions[Ze]:((lt===null||typeof lt>"u")&&(lt=me()),Ee=He[Ze]&&He[Ze][lt]),typeof Ee>"u"||!Ee.length||!Ee[0]){var Tt="";vr=[];for(Wt in He[Ze])this.terminals_[Wt]&&Wt>xe&&vr.push("'"+this.terminals_[Wt]+"'");ft.showPosition?Tt="Parse error on line "+(Xe+1)+`: +`+ft.showPosition()+` +Expecting `+vr.join(", ")+", got '"+(this.terminals_[lt]||lt)+"'":Tt="Parse error on line "+(Xe+1)+": Unexpected "+(lt==mt?"end of input":"'"+(this.terminals_[lt]||lt)+"'"),this.parseError(Tt,{text:ft.match,token:this.terminals_[lt]||lt,line:ft.yylineno,loc:St,expected:vr})}if(Ee[0]instanceof Array&&Ee.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ze+", token: "+lt);switch(Ee[0]){case 1:qe.push(lt),Be.push(ft.yytext),Ne.push(ft.yylloc),qe.push(Ee[1]),lt=null,gt?(lt=gt,gt=null):(Fe=ft.yyleng,$e=ft.yytext,Xe=ft.yylineno,St=ft.yylloc,Ke>0&&Ke--);break;case 2:if(Bt=this.productions_[Ee[1]][1],ot.$=Be[Be.length-Bt],ot._$={first_line:Ne[Ne.length-(Bt||1)].first_line,last_line:Ne[Ne.length-1].last_line,first_column:Ne[Ne.length-(Bt||1)].first_column,last_column:Ne[Ne.length-1].last_column},At&&(ot._$.range=[Ne[Ne.length-(Bt||1)].range[0],Ne[Ne.length-1].range[1]]),at=this.performAction.apply(ot,[$e,Fe,Xe,wt.yy,Ee[1],Be,Ne].concat(Le)),typeof at<"u")return at;Bt&&(qe=qe.slice(0,-1*Bt*2),Be=Be.slice(0,-1*Bt),Ne=Ne.slice(0,-1*Bt)),qe.push(this.productions_[Ee[1]][0]),Be.push(ot.$),Ne.push(ot._$),qt=He[qe[qe.length-2]][qe[qe.length-1]],qe.push(qt);break;case 3:return!0}}return!0},"parse")},q=(function(){var X={EOF:1,parseError:o(function(K,qe){if(this.yy.parser)this.yy.parser.parseError(K,qe);else throw new Error(K)},"parseError"),setInput:o(function(fe,K){return this.yy=K||this.yy||{},this._input=fe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var fe=this._input[0];this.yytext+=fe,this.yyleng++,this.offset++,this.match+=fe,this.matched+=fe;var K=fe.match(/(?:\r\n?|\n).*/g);return K?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),fe},"input"),unput:o(function(fe){var K=fe.length,qe=fe.split(/(?:\r\n?|\n)/g);this._input=fe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-K),this.offset-=K;var _e=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),qe.length-1&&(this.yylineno-=qe.length-1);var Be=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:qe?(qe.length===_e.length?this.yylloc.first_column:0)+_e[_e.length-qe.length].length-qe[0].length:this.yylloc.first_column-K},this.options.ranges&&(this.yylloc.range=[Be[0],Be[0]+this.yyleng-K]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(fe){this.unput(this.match.slice(fe))},"less"),pastInput:o(function(){var fe=this.matched.substr(0,this.matched.length-this.match.length);return(fe.length>20?"...":"")+fe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var fe=this.match;return fe.length<20&&(fe+=this._input.substr(0,20-fe.length)),(fe.substr(0,20)+(fe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var fe=this.pastInput(),K=new Array(fe.length+1).join("-");return fe+this.upcomingInput()+` +`+K+"^"},"showPosition"),test_match:o(function(fe,K){var qe,_e,Be;if(this.options.backtrack_lexer&&(Be={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Be.yylloc.range=this.yylloc.range.slice(0))),_e=fe[0].match(/(?:\r\n?|\n).*/g),_e&&(this.yylineno+=_e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_e?_e[_e.length-1].length-_e[_e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+fe[0].length},this.yytext+=fe[0],this.match+=fe[0],this.matches=fe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(fe[0].length),this.matched+=fe[0],qe=this.performAction.call(this,this.yy,this,K,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),qe)return qe;if(this._backtrack){for(var Ne in Be)this[Ne]=Be[Ne];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var fe,K,qe,_e;this._more||(this.yytext="",this.match="");for(var Be=this._currentRules(),Ne=0;NeK[0].length)){if(K=qe,_e=Ne,this.options.backtrack_lexer){if(fe=this.test_match(qe,Be[Ne]),fe!==!1)return fe;if(this._backtrack){K=!1;continue}else return!1}else if(!this.options.flex)break}return K?(fe=this.test_match(K,Be[_e]),fe!==!1?fe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var K=this.next();return K||this.lex()},"lex"),begin:o(function(K){this.conditionStack.push(K)},"begin"),popState:o(function(){var K=this.conditionStack.length-1;return K>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(K){return K=this.conditionStack.length-1-Math.abs(K||0),K>=0?this.conditionStack[K]:"INITIAL"},"topState"),pushState:o(function(K){this.begin(K)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(K,qe,_e,Be){var Ne=Be;switch(_e){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 15;case 37:return 11;case 38:return 64;case 39:return 10;case 40:return 65;case 41:return 65;case 42:return 14;case 43:return 13;case 44:return 67;case 45:return 66;case 46:return 12;case 47:return 8;case 48:return 5;case 49:return 18;case 50:return 56;case 51:return 63;case 52:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\x00-\x7F]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return X})();ne.lexer=q;function he(){this.yy={}}return o(he,"Parser"),he.prototype=ne,ne.Parser=he,new he})();qU.parser=qU;J7e=qU});var Us,uL,t8e=F(()=>{"use strict";$r();Wi();vt();Pc();Us=ma(),uL=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:cr.quadrantChart?.chartWidth||500,chartWidth:cr.quadrantChart?.chartHeight||500,titlePadding:cr.quadrantChart?.titlePadding||10,titleFontSize:cr.quadrantChart?.titleFontSize||20,quadrantPadding:cr.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:cr.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:cr.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:cr.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:cr.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:cr.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:cr.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:cr.quadrantChart?.pointTextPadding||5,pointLabelFontSize:cr.quadrantChart?.pointLabelFontSize||12,pointRadius:cr.quadrantChart?.pointRadius||5,xAxisPosition:cr.quadrantChart?.xAxisPosition||"top",yAxisPosition:cr.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:cr.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:cr.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:Us.quadrant1Fill,quadrant2Fill:Us.quadrant2Fill,quadrant3Fill:Us.quadrant3Fill,quadrant4Fill:Us.quadrant4Fill,quadrant1TextFill:Us.quadrant1TextFill,quadrant2TextFill:Us.quadrant2TextFill,quadrant3TextFill:Us.quadrant3TextFill,quadrant4TextFill:Us.quadrant4TextFill,quadrantPointFill:Us.quadrantPointFill,quadrantPointTextFill:Us.quadrantPointTextFill,quadrantXAxisTextFill:Us.quadrantXAxisTextFill,quadrantYAxisTextFill:Us.quadrantYAxisTextFill,quadrantTitleFill:Us.quadrantTitleFill,quadrantInternalBorderStrokeFill:Us.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:Us.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Z.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,r){this.classes.set(t,r)}setConfig(t){Z.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){Z.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:t==="top"&&r?a:0,bottom:t==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,d={top:i?h:0},f=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+d.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-d.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:d,quadrantSpace:{quadrantLeft:f,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(t,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:d,quadrantTop:f,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+d+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(t){let{quadrantSpace:r}=t,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s,width:a,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(t){let{quadrantSpace:r}=t,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=Kl().domain([0,1]).range([i,s+i]),u=Kl().domain([0,1]).range([n+a,a]);return this.data.points.map(d=>{let f=this.classes.get(d.className);return f&&(d={...f,...d}),{x:l(d.x),y:u(d.y),fill:d.color??this.themeConfig.quadrantPointFill,radius:d.radius??this.config.pointRadius,text:{text:d.text,fill:this.themeConfig.quadrantPointTextFill,x:l(d.x),y:u(d.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:d.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:d.strokeWidth??"0px"}})}getBorders(t){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=t,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let t=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,t,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,t,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function HU(e){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(e)}function r8e(e){return!/^\d+$/.test(e)}function n8e(e){return!/^\d+px$/.test(e)}var w0,i8e=F(()=>{"use strict";w0=class extends Error{static{o(this,"InvalidStyleError")}constructor(t,r,n){super(`value for ${t} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o(HU,"validateHexCode");o(r8e,"validateNumber");o(n8e,"validateSizeInPixels")});function cd(e){return mr(e.trim(),Ae())}function iAt(e){Za.setData({quadrant1Text:cd(e.text)})}function aAt(e){Za.setData({quadrant2Text:cd(e.text)})}function sAt(e){Za.setData({quadrant3Text:cd(e.text)})}function oAt(e){Za.setData({quadrant4Text:cd(e.text)})}function lAt(e){Za.setData({xAxisLeftText:cd(e.text)})}function cAt(e){Za.setData({xAxisRightText:cd(e.text)})}function uAt(e){Za.setData({yAxisTopText:cd(e.text)})}function hAt(e){Za.setData({yAxisBottomText:cd(e.text)})}function UU(e){let t={};for(let r of e){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(r8e(i))throw new w0(n,i,"number");t.radius=parseInt(i)}else if(n==="color"){if(HU(i))throw new w0(n,i,"hex code");t.color=i}else if(n==="stroke-color"){if(HU(i))throw new w0(n,i,"hex code");t.strokeColor=i}else if(n==="stroke-width"){if(n8e(i))throw new w0(n,i,"number of pixels (eg. 10px)");t.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return t}function dAt(e,t,r,n,i){let a=UU(i);Za.addPoints([{x:r,y:n,text:cd(e.text),className:t,...a}])}function fAt(e,t){Za.addClass(e,UU(t))}function pAt(e){Za.setConfig({chartWidth:e})}function mAt(e){Za.setConfig({chartHeight:e})}function gAt(){let e=Ae(),{themeVariables:t,quadrantChart:r}=e;return r&&Za.setConfig(r),Za.setThemeConfig({quadrant1Fill:t.quadrant1Fill,quadrant2Fill:t.quadrant2Fill,quadrant3Fill:t.quadrant3Fill,quadrant4Fill:t.quadrant4Fill,quadrant1TextFill:t.quadrant1TextFill,quadrant2TextFill:t.quadrant2TextFill,quadrant3TextFill:t.quadrant3TextFill,quadrant4TextFill:t.quadrant4TextFill,quadrantPointFill:t.quadrantPointFill,quadrantPointTextFill:t.quadrantPointTextFill,quadrantXAxisTextFill:t.quadrantXAxisTextFill,quadrantYAxisTextFill:t.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:t.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:t.quadrantInternalBorderStrokeFill,quadrantTitleFill:t.quadrantTitleFill}),Za.setData({titleText:Lr()}),Za.build()}var Za,yAt,a8e,s8e=F(()=>{"use strict";Xt();Vr();Nn();t8e();i8e();o(cd,"textSanitizer");Za=new uL;o(iAt,"setQuadrant1Text");o(aAt,"setQuadrant2Text");o(sAt,"setQuadrant3Text");o(oAt,"setQuadrant4Text");o(lAt,"setXAxisLeftText");o(cAt,"setXAxisRightText");o(uAt,"setYAxisTopText");o(hAt,"setYAxisBottomText");o(UU,"parseStyles");o(dAt,"addPoint");o(fAt,"addClass");o(pAt,"setWidth");o(mAt,"setHeight");o(gAt,"getQuadrantData");yAt=o(function(){Za.clear(),yr()},"clear"),a8e={setWidth:pAt,setHeight:mAt,setQuadrant1Text:iAt,setQuadrant2Text:aAt,setQuadrant3Text:sAt,setQuadrant4Text:oAt,setXAxisLeftText:lAt,setXAxisRightText:cAt,setYAxisTopText:uAt,setYAxisBottomText:hAt,parseStyles:UU,addPoint:dAt,addClass:fAt,getQuadrantData:gAt,clear:yAt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var vAt,o8e,l8e=F(()=>{"use strict";$r();Xt();vt();$n();vAt=o((e,t,r,n)=>{function i(R){return R==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(R){return R==="left"?"start":"middle"}o(a,"getTextAnchor");function s(R){return`translate(${R.x}, ${R.y}) rotate(${R.rotation||0})`}o(s,"getTransformation");let l=Ae();Z.debug(`Rendering quadrant chart +`+e);let u=l.securityLevel,h;u==="sandbox"&&(h=et("#i"+t));let f=(u==="sandbox"?et(h.nodes()[0].contentDocument.body):et("body")).select(`[id="${t}"]`),p=f.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;Wr(f,g,m,l.quadrantChart?.useMaxWidth??!0),f.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),T=p.append("g").attr("class","labels"),k=p.append("g").attr("class","title");y.title&&k.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",R=>R.x1).attr("y1",R=>R.y1).attr("x2",R=>R.x2).attr("y2",R=>R.y2).style("stroke",R=>R.strokeFill).style("stroke-width",R=>R.strokeWidth);let C=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");C.append("rect").attr("x",R=>R.x).attr("y",R=>R.y).attr("width",R=>R.width).attr("height",R=>R.height).attr("fill",R=>R.fill),C.append("text").attr("x",0).attr("y",0).attr("fill",R=>R.text.fill).attr("font-size",R=>R.text.fontSize).attr("dominant-baseline",R=>i(R.text.horizontalPos)).attr("text-anchor",R=>a(R.text.verticalPos)).attr("transform",R=>s(R.text)).text(R=>R.text.text),T.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(R=>R.text).attr("fill",R=>R.fill).attr("font-size",R=>R.fontSize).attr("dominant-baseline",R=>i(R.horizontalPos)).attr("text-anchor",R=>a(R.verticalPos)).attr("transform",R=>s(R));let S=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",R=>R.x).attr("cy",R=>R.y).attr("r",R=>R.radius).attr("fill",R=>R.fill).attr("stroke",R=>R.strokeColor).attr("stroke-width",R=>R.strokeWidth),S.append("text").attr("x",0).attr("y",0).text(R=>R.text.text).attr("fill",R=>R.text.fill).attr("font-size",R=>R.text.fontSize).attr("dominant-baseline",R=>i(R.text.horizontalPos)).attr("text-anchor",R=>a(R.text.verticalPos)).attr("transform",R=>s(R.text))},"draw"),o8e={draw:vAt}});var c8e={};ir(c8e,{diagram:()=>xAt});var xAt,u8e=F(()=>{"use strict";e8e();s8e();l8e();xAt={parser:J7e,db:a8e,renderer:o8e,styles:o(()=>"","styles")}});var YU,f8e,p8e=F(()=>{"use strict";YU=(function(){var e=o(function(P,B,O,$){for(O=O||{},$=P.length;$--;O[P[$]]=B);return O},"o"),t=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,36,37,38],u=[1,25],h=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],k=[1,43],C=[1,42],w=[1,47],S=[1,50],R=[1,10,12,14,16,18,19,21,23,36,37,38],L=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38],N=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38,42,43,44,45,46,47,48,49,50,51],I=[1,65],_=[26,28],A={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,dataPoints:25,SQUARE_BRACES_END:26,dataPoint:27,COMMA:28,NUMBER_WITH_DECIMAL:29,STR:30,xAxisData:31,bandData:32,ARROW_DELIMITER:33,commaSeparatedTexts:34,yAxisData:35,NEWLINE:36,SEMI:37,EOF:38,alphaNum:39,MD_STR:40,alphaNumToken:41,AMP:42,NUM:43,ALPHA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,MINUS:50,UNDERSCORE:51,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",28:"COMMA",29:"NUMBER_WITH_DECIMAL",30:"STR",33:"ARROW_DELIMITER",36:"NEWLINE",37:"SEMI",38:"EOF",40:"MD_STR",42:"AMP",43:"NUM",44:"ALPHA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"MINUS",51:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[27,2],[27,1],[13,1],[13,2],[13,1],[31,1],[31,3],[32,3],[34,3],[34,1],[15,1],[15,2],[15,1],[35,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]],performAction:o(function(B,O,$,V,G,z,W){var H=z.length-1;switch(G){case 5:V.setOrientation(z[H]);break;case 9:V.setDiagramTitle(z[H].text.trim());break;case 12:V.setLineData({text:"",type:"text"},z[H]);break;case 13:V.setLineData(z[H-1],z[H]);break;case 14:V.setBarData({text:"",type:"text"},z[H]);break;case 15:V.setBarData(z[H-1],z[H]);break;case 16:this.$=z[H].trim(),V.setAccTitle(this.$);break;case 17:case 18:this.$=z[H].trim(),V.setAccDescription(this.$);break;case 19:this.$=z[H-1];break;case 20:case 30:this.$=[z[H-2],...z[H]];break;case 21:case 31:this.$=[z[H]];break;case 22:this.$={value:Number(z[H-1]),label:z[H]};break;case 23:this.$={value:Number(z[H]),label:""};break;case 24:V.setXAxisTitle(z[H]);break;case 25:V.setXAxisTitle(z[H-1]);break;case 26:V.setXAxisTitle({type:"text",text:""});break;case 27:V.setXAxisBand(z[H]);break;case 28:V.setXAxisRangeData(Number(z[H-2]),Number(z[H]));break;case 29:this.$=z[H-1];break;case 32:V.setYAxisTitle(z[H]);break;case 33:V.setYAxisTitle(z[H-1]);break;case 34:V.setYAxisTitle({type:"text",text:""});break;case 35:V.setYAxisRangeData(Number(z[H-2]),Number(z[H]));break;case 39:this.$={text:z[H],type:"text"};break;case 40:this.$={text:z[H],type:"text"};break;case 41:this.$={text:z[H],type:"markdown"};break;case 42:this.$=z[H];break;case 43:this.$=z[H-1]+""+z[H];break}},"anonymous"),table:[e(t,r,{3:1,4:2,7:4,5:n,36:i,37:a,38:s}),{1:[3]},e(t,r,{4:2,7:4,3:8,5:n,36:i,37:a,38:s}),e(t,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],36:i,37:a,38:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(l,[2,36]),e(l,[2,37]),e(l,[2,38]),{1:[2,1]},e(t,r,{4:2,7:4,3:21,5:n,36:i,37:a,38:s}),{1:[2,3]},e(l,[2,5]),e(t,[2,7],{4:22,36:i,37:a,38:s}),{11:23,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:39,13:38,24:k,29:C,30:u,31:40,32:41,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:45,15:44,29:w,30:u,35:46,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:49,17:48,24:S,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:52,17:51,24:S,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{20:[1,53]},{22:[1,54]},e(R,[2,18]),{1:[2,2]},e(R,[2,8]),e(R,[2,9]),e(L,[2,39],{41:55,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T}),e(L,[2,40]),e(L,[2,41]),e(N,[2,42]),e(N,[2,44]),e(N,[2,45]),e(N,[2,46]),e(N,[2,47]),e(N,[2,48]),e(N,[2,49]),e(N,[2,50]),e(N,[2,51]),e(N,[2,52]),e(N,[2,53]),e(R,[2,10]),e(R,[2,24],{32:41,31:56,24:k,29:C}),e(R,[2,26]),e(R,[2,27]),{33:[1,57]},{11:59,30:u,34:58,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},e(R,[2,11]),e(R,[2,32],{35:60,29:w}),e(R,[2,34]),{33:[1,61]},e(R,[2,12]),{17:62,24:S},{25:63,27:64,29:I},e(R,[2,14]),{17:66,24:S},e(R,[2,16]),e(R,[2,17]),e(N,[2,43]),e(R,[2,25]),{29:[1,67]},{26:[1,68]},{26:[2,31],28:[1,69]},e(R,[2,33]),{29:[1,70]},e(R,[2,13]),{26:[1,71]},{26:[2,21],28:[1,72]},e(_,[2,23],{30:[1,73]}),e(R,[2,15]),e(R,[2,28]),e(R,[2,29]),{11:59,30:u,34:74,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},e(R,[2,35]),e(R,[2,19]),{25:75,27:64,29:I},e(_,[2,22]),{26:[2,30]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],74:[2,30],75:[2,20]},parseError:o(function(B,O){if(O.recoverable)this.trace(B);else{var $=new Error(B);throw $.hash=O,$}},"parseError"),parse:o(function(B){var O=this,$=[0],V=[],G=[null],z=[],W=this.table,H="",j=0,Q=0,U=0,oe=2,te=1,le=z.slice.call(arguments,1),ie=Object.create(this.lexer),ae={yy:{}};for(var Re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Re)&&(ae.yy[Re]=this.yy[Re]);ie.setInput(B,ae.yy),ae.yy.lexer=ie,ae.yy.parser=this,typeof ie.yylloc>"u"&&(ie.yylloc={});var be=ie.yylloc;z.push(be);var Pe=ie.options&&ie.options.ranges;typeof ae.yy.parseError=="function"?this.parseError=ae.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ge(ne){$.length=$.length-2*ne,G.length=G.length-ne,z.length=z.length-ne}o(Ge,"popStack");function Oe(){var ne;return ne=V.pop()||ie.lex()||te,typeof ne!="number"&&(ne instanceof Array&&(V=ne,ne=V.pop()),ne=O.symbols_[ne]||ne),ne}o(Oe,"lex");for(var ue,ye,ke,ce,re,J,se={},ge,Te,we,Me;;){if(ke=$[$.length-1],this.defaultActions[ke]?ce=this.defaultActions[ke]:((ue===null||typeof ue>"u")&&(ue=Oe()),ce=W[ke]&&W[ke][ue]),typeof ce>"u"||!ce.length||!ce[0]){var ve="";Me=[];for(ge in W[ke])this.terminals_[ge]&&ge>oe&&Me.push("'"+this.terminals_[ge]+"'");ie.showPosition?ve="Parse error on line "+(j+1)+`: +`+ie.showPosition()+` +Expecting `+Me.join(", ")+", got '"+(this.terminals_[ue]||ue)+"'":ve="Parse error on line "+(j+1)+": Unexpected "+(ue==te?"end of input":"'"+(this.terminals_[ue]||ue)+"'"),this.parseError(ve,{text:ie.match,token:this.terminals_[ue]||ue,line:ie.yylineno,loc:be,expected:Me})}if(ce[0]instanceof Array&&ce.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ke+", token: "+ue);switch(ce[0]){case 1:$.push(ue),G.push(ie.yytext),z.push(ie.yylloc),$.push(ce[1]),ue=null,ye?(ue=ye,ye=null):(Q=ie.yyleng,H=ie.yytext,j=ie.yylineno,be=ie.yylloc,U>0&&U--);break;case 2:if(Te=this.productions_[ce[1]][1],se.$=G[G.length-Te],se._$={first_line:z[z.length-(Te||1)].first_line,last_line:z[z.length-1].last_line,first_column:z[z.length-(Te||1)].first_column,last_column:z[z.length-1].last_column},Pe&&(se._$.range=[z[z.length-(Te||1)].range[0],z[z.length-1].range[1]]),J=this.performAction.apply(se,[H,Q,j,ae.yy,ce[1],G,z].concat(le)),typeof J<"u")return J;Te&&($=$.slice(0,-1*Te*2),G=G.slice(0,-1*Te),z=z.slice(0,-1*Te)),$.push(this.productions_[ce[1]][0]),G.push(se.$),z.push(se._$),we=W[$[$.length-2]][$[$.length-1]],$.push(we);break;case 3:return!0}}return!0},"parse")},M=(function(){var P={EOF:1,parseError:o(function(O,$){if(this.yy.parser)this.yy.parser.parseError(O,$);else throw new Error(O)},"parseError"),setInput:o(function(B,O){return this.yy=O||this.yy||{},this._input=B,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var B=this._input[0];this.yytext+=B,this.yyleng++,this.offset++,this.match+=B,this.matched+=B;var O=B.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),B},"input"),unput:o(function(B){var O=B.length,$=B.split(/(?:\r\n?|\n)/g);this._input=B+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var V=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),$.length-1&&(this.yylineno-=$.length-1);var G=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:$?($.length===V.length?this.yylloc.first_column:0)+V[V.length-$.length].length-$[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(B){this.unput(this.match.slice(B))},"less"),pastInput:o(function(){var B=this.matched.substr(0,this.matched.length-this.match.length);return(B.length>20?"...":"")+B.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var B=this.match;return B.length<20&&(B+=this._input.substr(0,20-B.length)),(B.substr(0,20)+(B.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var B=this.pastInput(),O=new Array(B.length+1).join("-");return B+this.upcomingInput()+` +`+O+"^"},"showPosition"),test_match:o(function(B,O){var $,V,G;if(this.options.backtrack_lexer&&(G={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(G.yylloc.range=this.yylloc.range.slice(0))),V=B[0].match(/(?:\r\n?|\n).*/g),V&&(this.yylineno+=V.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:V?V[V.length-1].length-V[V.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+B[0].length},this.yytext+=B[0],this.match+=B[0],this.matches=B,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(B[0].length),this.matched+=B[0],$=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),$)return $;if(this._backtrack){for(var z in G)this[z]=G[z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var B,O,$,V;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),z=0;zO[0].length)){if(O=$,V=z,this.options.backtrack_lexer){if(B=this.test_match($,G[z]),B!==!1)return B;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(B=this.test_match(O,G[V]),B!==!1?B:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,$,V,G){var z=G;switch(V){case 0:break;case 1:break;case 2:return this.popState(),36;break;case 3:return this.popState(),36;break;case 4:return 36;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 33;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 29;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 44;case 33:return"COLON";case 34:return 45;case 35:return 28;case 36:return 46;case 37:return 47;case 38:return 49;case 39:return 51;case 40:return 48;case 41:return 42;case 42:return 50;case 43:return 43;case 44:break;case 45:return 37;case 46:return 38}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return P})();A.lexer=M;function D(){this.yy={}}return o(D,"Parser"),D.prototype=A,A.Parser=D,new D})();YU.parser=YU;f8e=YU});function jU(e){return e.type==="bar"}function Pw(e){return e.type==="band"}function Qv(e){return e.type==="linear"}var hL=F(()=>{"use strict";o(jU,"isBarPlot");o(Pw,"isBandAxisData");o(Qv,"isLinearAxisData")});var Jv,XU=F(()=>{"use strict";Ls();Jv=class{constructor(t){this.parentGroup=t}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,r){if(!this.parentGroup)return{width:t.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of t){let s=Nse(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var ex,KU=F(()=>{"use strict";ex=class{constructor(t,r,n,i){this.axisConfig=t;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.normalizedLabelRotationInRad=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.normalizedLabelRotationInRad=this.axisConfig.labelRotation>=-90&&this.axisConfig.labelRotation<=90?this.axisConfig.labelRotation*Math.PI/180:0}static{o(this,"BaseAxis")}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){let t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let r=t.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*t.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height;this.axisPosition==="bottom"&&this.normalizedLabelRotationInRad!==0&&(a=Math.max(a,Math.abs(Math.sin(this.normalizedLabelRotationInRad)*n.width)+Math.abs(Math.cos(this.normalizedLabelRotationInRad)*n.height))),a+=this.axisConfig.labelPadding*2,this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-r}calculateSpaceIfDrawnVertical(t){let r=t.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*t.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=t.width-r,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateOffsetByRotation(t){let r=this.normalizedLabelRotationInRad;return r===0?0:Math.sin(r)*this.getLabelDimension()[t]/2}getDrawableElementsForLeftAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r)+this.calculateOffsetByRotation("height"),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0)+Math.abs(this.calculateOffsetByRotation("width")),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:this.normalizedLabelRotationInRad*180/Math.PI,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var dL,m8e=F(()=>{"use strict";$r();vt();KU();dL=class extends ex{static{o(this,"BandAxis")}constructor(t,r,n,i,a){super(t,i,a,r),this.categories=n,this.scale=by().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=by().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Z.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}}});var fL,g8e=F(()=>{"use strict";$r();KU();fL=class extends ex{static{o(this,"LinearAxis")}constructor(t,r,n,i,a){super(t,i,a,r),this.domain=n,this.scale=Kl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=Kl().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}});function ZU(e,t,r,n){let i=new Jv(n);return Pw(e)?new dL(t,r,e.categories,e.title,i):new fL(t,r,[e.min,e.max],e.title,i)}var y8e=F(()=>{"use strict";hL();XU();m8e();g8e();o(ZU,"getAxis")});function v8e(e,t,r,n){let i=new Jv(n);return new QU(i,e,t,r)}var QU,x8e=F(()=>{"use strict";XU();QU=class{constructor(t,r,n,i){this.textDimensionCalculator=t;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,t.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};o(v8e,"getChartTitleComponent")});var pL,b8e=F(()=>{"use strict";$r();pL=class{constructor(t,r,n,i,a){this.plotData=t;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let t=this.plotData.data.map(i=>[this.xAxis.getScaleValue(i[0]),this.yAxis.getScaleValue(i[1])]),r;if(this.orientation==="horizontal"?r=tc().y(i=>i[0]).x(i=>i[1])(t):r=tc().x(i=>i[0]).y(i=>i[1])(t),!r)return[];let n=[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}];if(this.plotData.pointLabels&&this.plotData.pointLabels.length>0){let s=[];for(let[l,[u,h]]of t.entries()){let d=this.plotData.pointLabels[l];d&&(this.orientation==="horizontal"?s.push({x:h+10,y:u,text:d,fill:this.plotData.strokeFill,verticalPos:"middle",horizontalPos:"left",fontSize:12,rotation:0}):s.push({x:u,y:h-10,text:d,fill:this.plotData.strokeFill,verticalPos:"middle",horizontalPos:"center",fontSize:12,rotation:0}))}s.length>0&&n.push({groupTexts:["plot",`line-plot-${this.plotIndex}`,"labels"],type:"text",data:s})}return n}}});var mL,T8e=F(()=>{"use strict";mL=class{constructor(t,r,n,i,a,s){this.barData=t;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function C8e(e,t,r){return new JU(e,t,r)}var JU,w8e=F(()=>{"use strict";b8e();T8e();JU=class{constructor(t,r,n){this.chartConfig=t;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(t,r){this.xAxis=t,this.yAxis=r}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let t=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new pL(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...i.getDrawableElement())}break;case"bar":{let i=new mL(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...i.getDrawableElement())}break}return t}};o(C8e,"getPlotComponent")});var gL,k8e=F(()=>{"use strict";y8e();x8e();w8e();hL();gL=class{constructor(t,r,n,i){this.chartConfig=t;this.chartData=r;this.componentStore={title:v8e(t,r,n,i),plot:C8e(t,r,n),xAxis:ZU(r.xAxis,t.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:ZU(r.yAxis,t.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});t-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:t,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:t,height:r}),n=l.width,t-=l.width,t>0&&(a+=t,t=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>jU(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});t-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:t,height:r}),t-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:t,height:r}),r-=u.height,a=n+u.height,t>0&&(s+=t,t=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>jU(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))t.push(...r.getDrawableElements());return t}}});var yL,S8e=F(()=>{"use strict";k8e();yL=class{static{o(this,"XYChartBuilder")}static build(t,r,n,i){return new gL(t,r,n,i).getDrawableElement()}}});function A8e(){let e=ma(),t=_t();return qr(e.xyChart,t.themeVariables.xyChart)}function R8e(){let e=_t();return qr(cr.xyChart,e.xyChart)}function _8e(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function xL(e){let t=_t();return mr(e.trim(),t)}function wAt(e){E8e=e}function kAt(e){e==="horizontal"?Bw.chartOrientation="horizontal":Bw.chartOrientation="vertical"}function SAt(e){fn.xAxis.title=xL(e.text)}function L8e(e,t){fn.xAxis={type:"linear",title:fn.xAxis.title,min:e,max:t},vL=!0}function EAt(e){fn.xAxis={type:"band",title:fn.xAxis.title,categories:e.map(t=>xL(t.text))},vL=!0}function AAt(e){fn.yAxis.title=xL(e.text)}function RAt(e,t){fn.yAxis={type:"linear",title:fn.yAxis.title,min:e,max:t},tY=!0}function _At(e){let t=Math.min(...e),r=Math.max(...e),n=Qv(fn.yAxis)?fn.yAxis.min:1/0,i=Qv(fn.yAxis)?fn.yAxis.max:-1/0;fn.yAxis={type:"linear",title:fn.yAxis.title,min:Math.min(n,t),max:Math.max(i,r)}}function D8e(e){let t=[];if(e.length===0)return t;if(!vL){let r=Qv(fn.xAxis)?fn.xAxis.min:1/0,n=Qv(fn.xAxis)?fn.xAxis.max:-1/0;L8e(Math.min(r,1),Math.max(n,e.length))}if(Pw(fn.xAxis)&&e.length>fn.xAxis.categories.length&&(e=e.slice(0,fn.xAxis.categories.length)),tY||_At(e),Pw(fn.xAxis)&&(t=fn.xAxis.categories.map((r,n)=>[r,e[n]])),Qv(fn.xAxis)){let r=fn.xAxis.min,n=fn.xAxis.max,i=(n-r)/(e.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);t=a.map((s,l)=>[s,e[l]])}return t}function I8e(e){return eY[e===0?0:e%eY.length]}function LAt(e,t){let r=t.map(s=>s.value),n=t.map(s=>s.label?xL(s.label):""),i=D8e(r),a=n.some(s=>s!=="");fn.plots.push({type:"line",strokeFill:I8e(Ow),strokeWidth:2,data:i,...a?{pointLabels:n}:{}}),Ow++}function DAt(e,t){let r=t.map(i=>i.value),n=D8e(r);fn.plots.push({type:"bar",fill:I8e(Ow),data:n}),Ow++}function IAt(){if(fn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return fn.title=Lr(),yL.build(Bw,fn,$w,E8e)}function MAt(){return $w}function NAt(){return Bw}function PAt(){return fn}var Ow,E8e,Bw,$w,fn,eY,vL,tY,OAt,M8e,N8e=F(()=>{"use strict";ur();Wi();Pc();Qt();Vr();Nn();S8e();hL();Ow=0,Bw=R8e(),$w=A8e(),fn=_8e(),eY=$w.plotColorPalette.split(",").map(e=>e.trim()),vL=!1,tY=!1;o(A8e,"getChartDefaultThemeConfig");o(R8e,"getChartDefaultConfig");o(_8e,"getChartDefaultData");o(xL,"textSanitizer");o(wAt,"setTmpSVGG");o(kAt,"setOrientation");o(SAt,"setXAxisTitle");o(L8e,"setXAxisRangeData");o(EAt,"setXAxisBand");o(AAt,"setYAxisTitle");o(RAt,"setYAxisRangeData");o(_At,"setYAxisRangeFromPlotData");o(D8e,"transformDataWithoutCategory");o(I8e,"getPlotColorFromPalette");o(LAt,"setLineData");o(DAt,"setBarData");o(IAt,"getDrawableElem");o(MAt,"getChartThemeConfig");o(NAt,"getChartConfig");o(PAt,"getXYChartData");OAt=o(function(){yr(),Ow=0,Bw=R8e(),fn=_8e(),$w=A8e(),eY=$w.plotColorPalette.split(",").map(e=>e.trim()),vL=!1,tY=!1},"clear"),M8e={getDrawableElem:IAt,clear:OAt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr,setOrientation:kAt,setXAxisTitle:SAt,setXAxisRangeData:L8e,setXAxisBand:EAt,setYAxisTitle:AAt,setYAxisRangeData:RAt,setLineData:LAt,setBarData:DAt,setTmpSVGG:wAt,getChartThemeConfig:MAt,getChartConfig:NAt,getXYChartData:PAt}});var BAt,P8e,O8e=F(()=>{"use strict";vt();Ka();$n();BAt=o((e,t,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),l=i.getXYChartData().plots[0].data.map(T=>T[1]);function u(T){return T==="top"?"text-before-edge":"middle"}o(u,"getDominantBaseLine");function h(T){return T==="left"?"start":T==="right"?"end":"middle"}o(h,"getTextAnchor");function d(T){return`translate(${T.x}, ${T.y}) rotate(${T.rotation||0})`}o(d,"getTextTransformation"),Z.debug(`Rendering xychart chart +`+e);let f=xn(t),p=f.append("g").attr("class","main"),m=p.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");Wr(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),m.attr("fill",a.backgroundColor),i.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let g=i.getDrawableElem(),y={};function v(T){let k=p,C="";for(let[w]of T.entries()){let S=p;w>0&&y[C]&&(S=y[C]),C+=T[w],k=y[C],k||(k=y[C]=S.append("g").attr("class",T[w]))}return k}o(v,"getGroup");for(let T of g){if(T.data.length===0)continue;let k=v(T.groupTexts);switch(T.type){case"rect":if(k.selectAll("rect").data(T.data).enter().append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth),s.showDataLabel){let C=s.showDataLabelOutsideBar;if(s.chartOrientation==="horizontal"){let L=function(A,M){let{data:D,label:P}=A;return M*P.length*.7<=D.width-10};var x=L;o(L,"fitsHorizontally");let w=.7,S=10,R=T.data.map((A,M)=>({data:A,label:l[M].toString()})).filter(A=>A.data.width>0&&A.data.height>0),N=R.map(A=>{let{data:M}=A,D=M.height*.7;for(;!L(A,D)&&D>0;)D-=1;return D}),I=Math.floor(Math.min(...N)),_=o(A=>C?A.data.x+A.data.width+10:A.data.x+A.data.width-10,"determineLabelXPosition");k.selectAll("text").data(R).enter().append("text").attr("x",_).attr("y",A=>A.data.y+A.data.height/2).attr("text-anchor",C?"start":"end").attr("dominant-baseline","middle").attr("fill",a.dataLabelColor).attr("font-size",`${I}px`).text(A=>A.label)}else{let R=function(_,A,M){let{data:D,label:P}=_,O=A*P.length*.7,$=D.x+D.width/2,V=$-O/2,G=$+O/2,z=V>=D.x&&G<=D.x+D.width,W=D.y+M+A<=D.y+D.height;return z&&W};var b=R;o(R,"fitsInBar");let w=10,S=T.data.map((_,A)=>({data:_,label:l[A].toString()})).filter(_=>_.data.width>0&&_.data.height>0),L=S.map(_=>{let{data:A,label:M}=_,D=A.width/(M.length*.7);for(;!R(_,D,10)&&D>0;)D-=1;return D}),N=Math.floor(Math.min(...L)),I=o(_=>C?_.data.y-10:_.data.y+10,"determineLabelYPosition");k.selectAll("text").data(S).enter().append("text").attr("x",_=>_.data.x+_.data.width/2).attr("y",I).attr("text-anchor","middle").attr("dominant-baseline",C?"auto":"hanging").attr("fill",a.dataLabelColor).attr("font-size",`${N}px`).text(_=>_.label)}}break;case"text":k.selectAll("text").data(T.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>u(C.verticalPos)).attr("text-anchor",C=>h(C.horizontalPos)).attr("transform",C=>d(C)).text(C=>C.text);break;case"path":k.selectAll("path").data(T.data).enter().append("path").attr("d",C=>C.path).attr("fill",C=>C.fill?C.fill:"none").attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth);break}}},"draw"),P8e={draw:BAt}});var B8e={};ir(B8e,{diagram:()=>$At});var $At,$8e=F(()=>{"use strict";p8e();N8e();O8e();$At={parser:f8e,db:M8e,renderer:P8e}});var rY,G8e,V8e=F(()=>{"use strict";rY=(function(){var e=o(function(ve,ne,q,he){for(q=q||{},he=ve.length;he--;q[ve[he]]=ne);return q},"o"),t=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],d=[1,28],f=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],T=[1,31],k=[1,32],C=[1,30],w=[1,39],S=[1,40],R=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],L=[1,61],N=[89,90],I=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],_=[27,29],A=[1,70],M=[1,71],D=[1,72],P=[1,73],B=[1,74],O=[1,75],$=[1,76],V=[1,83],G=[1,80],z=[1,84],W=[1,85],H=[1,86],j=[1,87],Q=[1,88],U=[1,89],oe=[1,90],te=[1,91],le=[1,92],ie=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],ae=[63,64],Re=[1,101],be=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],Pe=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Ge=[1,110],Oe=[1,106],ue=[1,107],ye=[1,108],ke=[1,109],ce=[1,111],re=[1,116],J=[1,117],se=[1,114],ge=[1,115],Te={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(ne,q,he,X,fe,K,qe){var _e=K.length-1;switch(fe){case 4:this.$=K[_e].trim(),X.setAccTitle(this.$);break;case 5:case 6:this.$=K[_e].trim(),X.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:X.setDirection("TB");break;case 18:X.setDirection("BT");break;case 19:X.setDirection("RL");break;case 20:X.setDirection("LR");break;case 21:X.addRequirement(K[_e-3],K[_e-4]);break;case 22:X.addRequirement(K[_e-5],K[_e-6]),X.setClass([K[_e-5]],K[_e-3]);break;case 23:X.setNewReqId(K[_e-2]);break;case 24:X.setNewReqText(K[_e-2]);break;case 25:X.setNewReqRisk(K[_e-2]);break;case 26:X.setNewReqVerifyMethod(K[_e-2]);break;case 29:this.$=X.RequirementType.REQUIREMENT;break;case 30:this.$=X.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=X.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=X.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=X.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=X.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=X.RiskLevel.LOW_RISK;break;case 36:this.$=X.RiskLevel.MED_RISK;break;case 37:this.$=X.RiskLevel.HIGH_RISK;break;case 38:this.$=X.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=X.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=X.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=X.VerifyType.VERIFY_TEST;break;case 42:X.addElement(K[_e-3]);break;case 43:X.addElement(K[_e-5]),X.setClass([K[_e-5]],K[_e-3]);break;case 44:X.setNewElementType(K[_e-2]);break;case 45:X.setNewElementDocRef(K[_e-2]);break;case 48:X.addRelationship(K[_e-2],K[_e],K[_e-4]);break;case 49:X.addRelationship(K[_e-2],K[_e-4],K[_e]);break;case 50:this.$=X.Relationships.CONTAINS;break;case 51:this.$=X.Relationships.COPIES;break;case 52:this.$=X.Relationships.DERIVES;break;case 53:this.$=X.Relationships.SATISFIES;break;case 54:this.$=X.Relationships.VERIFIES;break;case 55:this.$=X.Relationships.REFINES;break;case 56:this.$=X.Relationships.TRACES;break;case 57:this.$=K[_e-2],X.defineClass(K[_e-1],K[_e]);break;case 58:X.setClass(K[_e-1],K[_e]);break;case 59:X.setClass([K[_e-2]],K[_e]);break;case 60:case 62:this.$=[K[_e]];break;case 61:case 63:this.$=K[_e-2].concat([K[_e]]);break;case 64:this.$=K[_e-2],X.setCssStyle(K[_e-1],K[_e]);break;case 65:this.$=[K[_e]];break;case 66:K[_e-2].push(K[_e]),this.$=K[_e-2];break;case 68:this.$=K[_e-1]+K[_e];break}},"anonymous"),table:[{3:1,4:2,6:t,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(a,[2,6]),{3:12,4:2,6:t,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},e(a,[2,4]),e(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(R,[2,17]),e(R,[2,18]),e(R,[2,19]),e(R,[2,20]),{30:60,33:62,75:L,89:w,90:S},{30:63,33:62,75:L,89:w,90:S},{30:64,33:62,75:L,89:w,90:S},e(N,[2,29]),e(N,[2,30]),e(N,[2,31]),e(N,[2,32]),e(N,[2,33]),e(N,[2,34]),e(I,[2,81]),e(I,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(_,[2,79]),e(_,[2,80]),{27:[1,67],29:[1,68]},e(_,[2,85]),e(_,[2,86]),{62:69,65:A,66:M,67:D,68:P,69:B,70:O,71:$},{62:77,65:A,66:M,67:D,68:P,69:B,70:O,71:$},{30:78,33:62,75:L,89:w,90:S},{73:79,75:V,76:G,78:81,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},e(ie,[2,60]),e(ie,[2,62]),{73:93,75:V,76:G,78:81,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},{30:94,33:62,75:L,76:G,89:w,90:S},{5:[1,95]},{30:96,33:62,75:L,89:w,90:S},{5:[1,97]},{30:98,33:62,75:L,89:w,90:S},{63:[1,99]},e(ae,[2,50]),e(ae,[2,51]),e(ae,[2,52]),e(ae,[2,53]),e(ae,[2,54]),e(ae,[2,55]),e(ae,[2,56]),{64:[1,100]},e(R,[2,59],{76:G}),e(R,[2,64],{76:Re}),{33:103,75:[1,102],89:w,90:S},e(be,[2,65],{79:104,75:V,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le}),e(Pe,[2,67]),e(Pe,[2,69]),e(Pe,[2,70]),e(Pe,[2,71]),e(Pe,[2,72]),e(Pe,[2,73]),e(Pe,[2,74]),e(Pe,[2,75]),e(Pe,[2,76]),e(Pe,[2,77]),e(Pe,[2,78]),e(R,[2,57],{76:Re}),e(R,[2,58],{76:G}),{5:Ge,28:105,31:Oe,34:ue,36:ye,38:ke,40:ce},{27:[1,112],76:G},{5:re,40:J,56:113,57:se,59:ge},{27:[1,118],76:G},{33:119,89:w,90:S},{33:120,89:w,90:S},{75:V,78:121,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},e(ie,[2,61]),e(ie,[2,63]),e(Pe,[2,68]),e(R,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Ge,28:126,31:Oe,34:ue,36:ye,38:ke,40:ce},e(R,[2,28]),{5:[1,127]},e(R,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:J,56:130,57:se,59:ge},e(R,[2,47]),{5:[1,131]},e(R,[2,48]),e(R,[2,49]),e(be,[2,66],{79:104,75:V,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le}),{33:132,89:w,90:S},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(R,[2,27]),{5:Ge,28:145,31:Oe,34:ue,36:ye,38:ke,40:ce},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(R,[2,46]),{5:re,40:J,56:152,57:se,59:ge},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(R,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(R,[2,43]),{5:Ge,28:159,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:160,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:161,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:162,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:re,40:J,56:163,57:se,59:ge},{5:re,40:J,56:164,57:se,59:ge},e(R,[2,23]),e(R,[2,24]),e(R,[2,25]),e(R,[2,26]),e(R,[2,44]),e(R,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(ne,q){if(q.recoverable)this.trace(ne);else{var he=new Error(ne);throw he.hash=q,he}},"parseError"),parse:o(function(ne){var q=this,he=[0],X=[],fe=[null],K=[],qe=this.table,_e="",Be=0,Ne=0,He=0,$e=2,Xe=1,Fe=K.slice.call(arguments,1),Ke=Object.create(this.lexer),xe={yy:{}};for(var mt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,mt)&&(xe.yy[mt]=this.yy[mt]);Ke.setInput(ne,xe.yy),xe.yy.lexer=Ke,xe.yy.parser=this,typeof Ke.yylloc>"u"&&(Ke.yylloc={});var Le=Ke.yylloc;K.push(Le);var ft=Ke.options&&Ke.options.ranges;typeof xe.yy.parseError=="function"?this.parseError=xe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function wt(Bt){he.length=he.length-2*Bt,fe.length=fe.length-Bt,K.length=K.length-Bt}o(wt,"popStack");function zt(){var Bt;return Bt=X.pop()||Ke.lex()||Xe,typeof Bt!="number"&&(Bt instanceof Array&&(X=Bt,Bt=X.pop()),Bt=q.symbols_[Bt]||Bt),Bt}o(zt,"lex");for(var St,At,bt,me,lt,gt,Ze={},Ee,tt,at,ot;;){if(bt=he[he.length-1],this.defaultActions[bt]?me=this.defaultActions[bt]:((St===null||typeof St>"u")&&(St=zt()),me=qe[bt]&&qe[bt][St]),typeof me>"u"||!me.length||!me[0]){var Wt="";ot=[];for(Ee in qe[bt])this.terminals_[Ee]&&Ee>$e&&ot.push("'"+this.terminals_[Ee]+"'");Ke.showPosition?Wt="Parse error on line "+(Be+1)+`: +`+Ke.showPosition()+` +Expecting `+ot.join(", ")+", got '"+(this.terminals_[St]||St)+"'":Wt="Parse error on line "+(Be+1)+": Unexpected "+(St==Xe?"end of input":"'"+(this.terminals_[St]||St)+"'"),this.parseError(Wt,{text:Ke.match,token:this.terminals_[St]||St,line:Ke.yylineno,loc:Le,expected:ot})}if(me[0]instanceof Array&&me.length>1)throw new Error("Parse Error: multiple actions possible at state: "+bt+", token: "+St);switch(me[0]){case 1:he.push(St),fe.push(Ke.yytext),K.push(Ke.yylloc),he.push(me[1]),St=null,At?(St=At,At=null):(Ne=Ke.yyleng,_e=Ke.yytext,Be=Ke.yylineno,Le=Ke.yylloc,He>0&&He--);break;case 2:if(tt=this.productions_[me[1]][1],Ze.$=fe[fe.length-tt],Ze._$={first_line:K[K.length-(tt||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(tt||1)].first_column,last_column:K[K.length-1].last_column},ft&&(Ze._$.range=[K[K.length-(tt||1)].range[0],K[K.length-1].range[1]]),gt=this.performAction.apply(Ze,[_e,Ne,Be,xe.yy,me[1],fe,K].concat(Fe)),typeof gt<"u")return gt;tt&&(he=he.slice(0,-1*tt*2),fe=fe.slice(0,-1*tt),K=K.slice(0,-1*tt)),he.push(this.productions_[me[1]][0]),fe.push(Ze.$),K.push(Ze._$),at=qe[he[he.length-2]][he[he.length-1]],he.push(at);break;case 3:return!0}}return!0},"parse")},we=(function(){var ve={EOF:1,parseError:o(function(q,he){if(this.yy.parser)this.yy.parser.parseError(q,he);else throw new Error(q)},"parseError"),setInput:o(function(ne,q){return this.yy=q||this.yy||{},this._input=ne,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var ne=this._input[0];this.yytext+=ne,this.yyleng++,this.offset++,this.match+=ne,this.matched+=ne;var q=ne.match(/(?:\r\n?|\n).*/g);return q?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ne},"input"),unput:o(function(ne){var q=ne.length,he=ne.split(/(?:\r\n?|\n)/g);this._input=ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-q),this.offset-=q;var X=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),he.length-1&&(this.yylineno-=he.length-1);var fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:he?(he.length===X.length?this.yylloc.first_column:0)+X[X.length-he.length].length-he[0].length:this.yylloc.first_column-q},this.options.ranges&&(this.yylloc.range=[fe[0],fe[0]+this.yyleng-q]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(ne){this.unput(this.match.slice(ne))},"less"),pastInput:o(function(){var ne=this.matched.substr(0,this.matched.length-this.match.length);return(ne.length>20?"...":"")+ne.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ne=this.match;return ne.length<20&&(ne+=this._input.substr(0,20-ne.length)),(ne.substr(0,20)+(ne.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ne=this.pastInput(),q=new Array(ne.length+1).join("-");return ne+this.upcomingInput()+` +`+q+"^"},"showPosition"),test_match:o(function(ne,q){var he,X,fe;if(this.options.backtrack_lexer&&(fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(fe.yylloc.range=this.yylloc.range.slice(0))),X=ne[0].match(/(?:\r\n?|\n).*/g),X&&(this.yylineno+=X.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:X?X[X.length-1].length-X[X.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ne[0].length},this.yytext+=ne[0],this.match+=ne[0],this.matches=ne,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ne[0].length),this.matched+=ne[0],he=this.performAction.call(this,this.yy,this,q,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),he)return he;if(this._backtrack){for(var K in fe)this[K]=fe[K];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ne,q,he,X;this._more||(this.yytext="",this.match="");for(var fe=this._currentRules(),K=0;Kq[0].length)){if(q=he,X=K,this.options.backtrack_lexer){if(ne=this.test_match(he,fe[K]),ne!==!1)return ne;if(this._backtrack){q=!1;continue}else return!1}else if(!this.options.flex)break}return q?(ne=this.test_match(q,fe[X]),ne!==!1?ne:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var q=this.next();return q||this.lex()},"lex"),begin:o(function(q){this.conditionStack.push(q)},"begin"),popState:o(function(){var q=this.conditionStack.length-1;return q>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(q){return q=this.conditionStack.length-1-Math.abs(q||0),q>=0?this.conditionStack[q]:"INITIAL"},"topState"),pushState:o(function(q){this.begin(q)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(q,he,X,fe){var K=fe;switch(X){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return he.yytext=he.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return ve})();Te.lexer=we;function Me(){this.yy={}}return o(Me,"Parser"),Me.prototype=Te,Te.Parser=Me,new Me})();rY.parser=rY;G8e=rY});var bL,W8e=F(()=>{"use strict";Xt();vt();Nn();bL=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(t){this.direction=t}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(t,r){return this.requirements.has(t)||this.requirements.set(t,{name:t,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(t)}getRequirements(){return this.requirements}setNewReqId(t){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=t)}setNewReqText(t){this.latestRequirement!==void 0&&(this.latestRequirement.text=t)}setNewReqRisk(t){this.latestRequirement!==void 0&&(this.latestRequirement.risk=t)}setNewReqVerifyMethod(t){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=t)}addElement(t){return this.elements.has(t)||(this.elements.set(t,{name:t,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),Z.info("Added new element: ",t)),this.resetLatestElement(),this.elements.get(t)}getElements(){return this.elements}setNewElementType(t){this.latestElement!==void 0&&(this.latestElement.type=t)}setNewElementDocRef(t){this.latestElement!==void 0&&(this.latestElement.docRef=t)}addRelationship(t,r,n){this.relations.push({type:t,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,yr()}setCssStyle(t,r){for(let n of t){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(t,r){for(let n of t){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(t,r){for(let n of t){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let t=Ae(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=t.look,a.colorIndex=r.length,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=t.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.colorIndex=r.length,r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:t.look,labelType:"markdown"};n.push(l),a++}return{nodes:r,edges:n,other:{},config:t,direction:this.getDirection()}}}});var VAt,WAt,q8e,H8e=F(()=>{"use strict";ur();VAt=o(e=>{let t=_t(),{themeVariables:r,look:n}=t,{bkgColorArray:i,borderColorArray:a}=r;if(!a?.length)return"";let s="";for(let l=0;l{let t=_t(),{look:r,themeVariables:n}=t,{requirementEdgeLabelBackground:i}=n;return` + ${VAt(e)} + marker { + fill: ${e.relationColor}; + stroke: ${e.relationColor}; + } + + marker.cross { + stroke: ${e.lineColor}; + } + + svg { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + } + + .reqBox { + fill: ${e.requirementBackground}; + fill-opacity: 1.0; + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${e.requirementTextColor}; + } + .reqLabelBox { + fill: ${e.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + .relationshipLine { + stroke: ${e.relationColor}; + stroke-width: ${r==="neo"?e.strokeWidth:"1px"}; + } + .relationshipLabel { + fill: ${e.relationLabelColor}; + } + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + } + .edgeLabel .label rect { + fill: ${e.edgeLabelBackground}; + } + .edgeLabel .label text { + fill: ${e.relationLabelColor}; + } + .divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; + } + .label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .label text,span { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + .labelBkg { + background-color: ${i??e.edgeLabelBackground}; + } + +`},"getStyles"),q8e=WAt});var nY={};ir(nY,{draw:()=>qAt});var qAt,U8e=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();qAt=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing requirement diagram (unified)",t);let{securityLevel:i,state:a,layout:s,look:l}=Ae(),u=n.db.getData(),h=pl(t,i);u.type=n.type,u.layoutAlgorithm=Su(s),u.nodeSpacing=a?.nodeSpacing??50,u.rankSpacing=a?.rankSpacing??50,u.markers=l==="neo"?["requirement_contains_neo","requirement_arrow_neo"]:["requirement_contains","requirement_arrow"],u.diagramId=t,await Al(u,h);let d=8;Zt.insertTitle(h,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(h,d,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var Y8e={};ir(Y8e,{diagram:()=>HAt});var HAt,j8e=F(()=>{"use strict";V8e();W8e();H8e();U8e();HAt={parser:G8e,get db(){return new bL},renderer:nY,styles:q8e}});var iY,Z8e,Q8e=F(()=>{"use strict";iY=(function(){var e=o(function(Ne,He,$e,Xe){for($e=$e||{},Xe=Ne.length;Xe--;$e[Ne[Xe]]=He);return $e},"o"),t=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,12],u=[1,14],h=[1,15],d=[1,17],f=[1,18],p=[1,19],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],T=[1,31],k=[1,32],C=[1,33],w=[1,34],S=[1,35],R=[1,36],L=[1,37],N=[1,38],I=[1,39],_=[1,40],A=[1,42],M=[1,43],D=[1,44],P=[1,45],B=[1,46],O=[1,47],$=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],V=[1,74],G=[1,80],z=[1,81],W=[1,82],H=[1,83],j=[1,84],Q=[1,85],U=[1,86],oe=[1,87],te=[1,88],le=[1,89],ie=[1,90],ae=[1,91],Re=[1,92],be=[1,93],Pe=[1,94],Ge=[1,95],Oe=[1,96],ue=[1,97],ye=[1,98],ke=[1,99],ce=[1,100],re=[1,101],J=[1,102],se=[1,103],ge=[1,104],Te=[1,105],we=[2,78],Me=[4,5,17,51,53,54],ve=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],ne=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],q=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],he=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],X=[5,52],fe=[70,71,72,73],K=[1,151],qe={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,INVALID:10,box_section:11,box_line:12,participant_statement:13,create:14,box:15,restOfLine:16,end:17,signal:18,autonumber:19,NUM:20,off:21,activate:22,actor:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,legacy_title:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,loop:37,rect:38,opt:39,alt:40,else_sections:41,par:42,par_sections:43,par_over:44,critical:45,option_sections:46,break:47,option:48,and:49,else:50,participant:51,AS:52,participant_actor:53,destroy:54,actor_with_config:55,note:56,placement:57,text2:58,over:59,actor_pair:60,links:61,link:62,properties:63,details:64,spaceList:65,",":66,left_of:67,right_of:68,signaltype:69,"+":70,"-":71,"()":72,ACTOR:73,config_object:74,CONFIG_START:75,CONFIG_CONTENT:76,CONFIG_END:77,SOLID_OPEN_ARROW:78,DOTTED_OPEN_ARROW:79,SOLID_ARROW:80,SOLID_ARROW_TOP:81,SOLID_ARROW_BOTTOM:82,STICK_ARROW_TOP:83,STICK_ARROW_BOTTOM:84,SOLID_ARROW_TOP_DOTTED:85,SOLID_ARROW_BOTTOM_DOTTED:86,STICK_ARROW_TOP_DOTTED:87,STICK_ARROW_BOTTOM_DOTTED:88,SOLID_ARROW_TOP_REVERSE:89,SOLID_ARROW_BOTTOM_REVERSE:90,STICK_ARROW_TOP_REVERSE:91,STICK_ARROW_BOTTOM_REVERSE:92,SOLID_ARROW_TOP_REVERSE_DOTTED:93,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:94,STICK_ARROW_TOP_REVERSE_DOTTED:95,STICK_ARROW_BOTTOM_REVERSE_DOTTED:96,BIDIRECTIONAL_SOLID_ARROW:97,DOTTED_ARROW:98,BIDIRECTIONAL_DOTTED_ARROW:99,SOLID_CROSS:100,DOTTED_CROSS:101,SOLID_POINT:102,DOTTED_POINT:103,TXT:104,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",10:"INVALID",14:"create",15:"box",16:"restOfLine",17:"end",19:"autonumber",20:"NUM",21:"off",22:"activate",24:"deactivate",30:"title",31:"legacy_title",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"loop",38:"rect",39:"opt",40:"alt",42:"par",44:"par_over",45:"critical",47:"break",48:"option",49:"and",50:"else",51:"participant",52:"AS",53:"participant_actor",54:"destroy",56:"note",59:"over",61:"links",62:"link",63:"properties",64:"details",66:",",67:"left_of",68:"right_of",70:"+",71:"-",72:"()",73:"ACTOR",75:"CONFIG_START",76:"CONFIG_CONTENT",77:"CONFIG_END",78:"SOLID_OPEN_ARROW",79:"DOTTED_OPEN_ARROW",80:"SOLID_ARROW",81:"SOLID_ARROW_TOP",82:"SOLID_ARROW_BOTTOM",83:"STICK_ARROW_TOP",84:"STICK_ARROW_BOTTOM",85:"SOLID_ARROW_TOP_DOTTED",86:"SOLID_ARROW_BOTTOM_DOTTED",87:"STICK_ARROW_TOP_DOTTED",88:"STICK_ARROW_BOTTOM_DOTTED",89:"SOLID_ARROW_TOP_REVERSE",90:"SOLID_ARROW_BOTTOM_REVERSE",91:"STICK_ARROW_TOP_REVERSE",92:"STICK_ARROW_BOTTOM_REVERSE",93:"SOLID_ARROW_TOP_REVERSE_DOTTED",94:"SOLID_ARROW_BOTTOM_REVERSE_DOTTED",95:"STICK_ARROW_TOP_REVERSE_DOTTED",96:"STICK_ARROW_BOTTOM_REVERSE_DOTTED",97:"BIDIRECTIONAL_SOLID_ARROW",98:"DOTTED_ARROW",99:"BIDIRECTIONAL_DOTTED_ARROW",100:"SOLID_CROSS",101:"DOTTED_CROSS",102:"SOLID_POINT",103:"DOTTED_POINT",104:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],performAction:o(function(He,$e,Xe,Fe,Ke,xe,mt){var Le=xe.length-1;switch(Ke){case 3:return Fe.apply(xe[Le]),xe[Le];break;case 4:case 10:this.$=[];break;case 5:case 11:xe[Le-1].push(xe[Le]),this.$=xe[Le-1];break;case 6:case 7:case 12:case 13:this.$=xe[Le];break;case 8:case 9:case 14:this.$=[];break;case 16:xe[Le].type="createParticipant",this.$=xe[Le];break;case 17:xe[Le-1].unshift({type:"boxStart",boxData:Fe.parseBoxData(xe[Le-2])}),xe[Le-1].push({type:"boxEnd",boxText:xe[Le-2]}),this.$=xe[Le-1];break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(xe[Le-2]),sequenceIndexStep:Number(xe[Le-1]),sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(xe[Le-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Fe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"activeStart",signalType:Fe.LINETYPE.ACTIVE_START,actor:xe[Le-1].actor};break;case 24:this.$={type:"activeEnd",signalType:Fe.LINETYPE.ACTIVE_END,actor:xe[Le-1].actor};break;case 30:Fe.setDiagramTitle(xe[Le].substring(6)),this.$=xe[Le].substring(6);break;case 31:Fe.setDiagramTitle(xe[Le].substring(7)),this.$=xe[Le].substring(7);break;case 32:this.$=xe[Le].trim(),Fe.setAccTitle(this.$);break;case 33:case 34:this.$=xe[Le].trim(),Fe.setAccDescription(this.$);break;case 35:xe[Le-1].unshift({type:"loopStart",loopText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.LOOP_START}),xe[Le-1].push({type:"loopEnd",loopText:xe[Le-2],signalType:Fe.LINETYPE.LOOP_END}),this.$=xe[Le-1];break;case 36:xe[Le-1].unshift({type:"rectStart",color:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.RECT_START}),xe[Le-1].push({type:"rectEnd",color:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.RECT_END}),this.$=xe[Le-1];break;case 37:xe[Le-1].unshift({type:"optStart",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.OPT_START}),xe[Le-1].push({type:"optEnd",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.OPT_END}),this.$=xe[Le-1];break;case 38:xe[Le-1].unshift({type:"altStart",altText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.ALT_START}),xe[Le-1].push({type:"altEnd",signalType:Fe.LINETYPE.ALT_END}),this.$=xe[Le-1];break;case 39:xe[Le-1].unshift({type:"parStart",parText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.PAR_START}),xe[Le-1].push({type:"parEnd",signalType:Fe.LINETYPE.PAR_END}),this.$=xe[Le-1];break;case 40:xe[Le-1].unshift({type:"parStart",parText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.PAR_OVER_START}),xe[Le-1].push({type:"parEnd",signalType:Fe.LINETYPE.PAR_END}),this.$=xe[Le-1];break;case 41:xe[Le-1].unshift({type:"criticalStart",criticalText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.CRITICAL_START}),xe[Le-1].push({type:"criticalEnd",signalType:Fe.LINETYPE.CRITICAL_END}),this.$=xe[Le-1];break;case 42:xe[Le-1].unshift({type:"breakStart",breakText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.BREAK_START}),xe[Le-1].push({type:"breakEnd",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.BREAK_END}),this.$=xe[Le-1];break;case 44:this.$=xe[Le-3].concat([{type:"option",optionText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.CRITICAL_OPTION},xe[Le]]);break;case 46:this.$=xe[Le-3].concat([{type:"and",parText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.PAR_AND},xe[Le]]);break;case 48:this.$=xe[Le-3].concat([{type:"else",altText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.ALT_ELSE},xe[Le]]);break;case 49:xe[Le-3].draw="participant",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 50:xe[Le-1].draw="participant",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 51:xe[Le-3].draw="actor",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 52:case 57:xe[Le-1].draw="actor",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 53:xe[Le-1].type="destroyParticipant",this.$=xe[Le-1];break;case 54:xe[Le-3].draw="participant",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 55:xe[Le-1].draw="participant",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 56:xe[Le-3].draw="actor",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 58:this.$=[xe[Le-1],{type:"addNote",placement:xe[Le-2],actor:xe[Le-1].actor,text:xe[Le]}];break;case 59:xe[Le-2]=[].concat(xe[Le-1],xe[Le-1]).slice(0,2),xe[Le-2][0]=xe[Le-2][0].actor,xe[Le-2][1]=xe[Le-2][1].actor,this.$=[xe[Le-1],{type:"addNote",placement:Fe.PLACEMENT.OVER,actor:xe[Le-2].slice(0,2),text:xe[Le]}];break;case 60:this.$=[xe[Le-1],{type:"addLinks",actor:xe[Le-1].actor,text:xe[Le]}];break;case 61:this.$=[xe[Le-1],{type:"addALink",actor:xe[Le-1].actor,text:xe[Le]}];break;case 62:this.$=[xe[Le-1],{type:"addProperties",actor:xe[Le-1].actor,text:xe[Le]}];break;case 63:this.$=[xe[Le-1],{type:"addDetails",actor:xe[Le-1].actor,text:xe[Le]}];break;case 66:this.$=[xe[Le-2],xe[Le]];break;case 67:this.$=xe[Le];break;case 68:this.$=Fe.PLACEMENT.LEFTOF;break;case 69:this.$=Fe.PLACEMENT.RIGHTOF;break;case 70:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0},{type:"activeStart",signalType:Fe.LINETYPE.ACTIVE_START,actor:xe[Le-1].actor}];break;case 71:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le]},{type:"activeEnd",signalType:Fe.LINETYPE.ACTIVE_END,actor:xe[Le-4].actor}];break;case 72:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION},{type:"centralConnection",signalType:Fe.LINETYPE.CENTRAL_CONNECTION,actor:xe[Le-1].actor}];break;case 73:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-2],msg:xe[Le],activate:!1,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE},{type:"centralConnectionReverse",signalType:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:xe[Le-4].actor}];break;case 74:this.$=[xe[Le-5],xe[Le-1],{type:"addMessage",from:xe[Le-5].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION_DUAL},{type:"centralConnection",signalType:Fe.LINETYPE.CENTRAL_CONNECTION,actor:xe[Le-1].actor},{type:"centralConnectionReverse",signalType:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:xe[Le-5].actor}];break;case 75:this.$=[xe[Le-3],xe[Le-1],{type:"addMessage",from:xe[Le-3].actor,to:xe[Le-1].actor,signalType:xe[Le-2],msg:xe[Le]}];break;case 76:this.$={type:"addParticipant",actor:xe[Le-1],config:xe[Le]};break;case 77:this.$=xe[Le-1].trim();break;case 78:this.$={type:"addParticipant",actor:xe[Le]};break;case 79:this.$=Fe.LINETYPE.SOLID_OPEN;break;case 80:this.$=Fe.LINETYPE.DOTTED_OPEN;break;case 81:this.$=Fe.LINETYPE.SOLID;break;case 82:this.$=Fe.LINETYPE.SOLID_TOP;break;case 83:this.$=Fe.LINETYPE.SOLID_BOTTOM;break;case 84:this.$=Fe.LINETYPE.STICK_TOP;break;case 85:this.$=Fe.LINETYPE.STICK_BOTTOM;break;case 86:this.$=Fe.LINETYPE.SOLID_TOP_DOTTED;break;case 87:this.$=Fe.LINETYPE.SOLID_BOTTOM_DOTTED;break;case 88:this.$=Fe.LINETYPE.STICK_TOP_DOTTED;break;case 89:this.$=Fe.LINETYPE.STICK_BOTTOM_DOTTED;break;case 90:this.$=Fe.LINETYPE.SOLID_ARROW_TOP_REVERSE;break;case 91:this.$=Fe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE;break;case 92:this.$=Fe.LINETYPE.STICK_ARROW_TOP_REVERSE;break;case 93:this.$=Fe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE;break;case 94:this.$=Fe.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED;break;case 95:this.$=Fe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED;break;case 96:this.$=Fe.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED;break;case 97:this.$=Fe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;break;case 98:this.$=Fe.LINETYPE.BIDIRECTIONAL_SOLID;break;case 99:this.$=Fe.LINETYPE.DOTTED;break;case 100:this.$=Fe.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 101:this.$=Fe.LINETYPE.SOLID_CROSS;break;case 102:this.$=Fe.LINETYPE.DOTTED_CROSS;break;case 103:this.$=Fe.LINETYPE.SOLID_POINT;break;case 104:this.$=Fe.LINETYPE.DOTTED_POINT;break;case 105:this.$=Fe.parseMessage(xe[Le].trim().substring(1));break}},"anonymous"),table:[{3:1,4:t,5:r,6:n},{1:[3]},{3:5,4:t,5:r,6:n},{3:6,4:t,5:r,6:n},e([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},e($,[2,5]),{9:48,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},e($,[2,7]),e($,[2,8]),e($,[2,9]),e($,[2,15]),{13:49,51:N,53:I,54:_},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:O},{23:56,73:O},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},e($,[2,30]),e($,[2,31]),{33:[1,62]},{35:[1,63]},e($,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:V},{23:75,55:76,73:V},{23:77,73:O},{69:78,72:[1,79],78:G,79:z,80:W,81:H,82:j,83:Q,84:U,85:oe,86:te,87:le,88:ie,89:ae,90:Re,91:be,92:Pe,93:Ge,94:Oe,95:ue,96:ye,97:ke,98:ce,99:re,100:J,101:se,102:ge,103:Te},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:O},{23:111,73:O},{23:112,73:O},{23:113,73:O},e([5,66,72,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],we),e($,[2,6]),e($,[2,16]),e(Me,[2,10],{11:114}),e($,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},e($,[2,22]),{5:[1,118]},{5:[1,119]},e($,[2,25]),e($,[2,26]),e($,[2,27]),e($,[2,28]),e($,[2,29]),e($,[2,32]),e($,[2,33]),e(ve,i,{7:120}),e(ve,i,{7:121}),e(ve,i,{7:122}),e(ne,i,{41:123,7:124}),e(q,i,{43:125,7:126}),e(q,i,{7:126,43:127}),e(he,i,{46:128,7:129}),e(ve,i,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},e(X,we,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:O},{69:146,78:G,79:z,80:W,81:H,82:j,83:Q,84:U,85:oe,86:te,87:le,88:ie,89:ae,90:Re,91:be,92:Pe,93:Ge,94:Oe,95:ue,96:ye,97:ke,98:ce,99:re,100:J,101:se,102:ge,103:Te},e(fe,[2,79]),e(fe,[2,80]),e(fe,[2,81]),e(fe,[2,82]),e(fe,[2,83]),e(fe,[2,84]),e(fe,[2,85]),e(fe,[2,86]),e(fe,[2,87]),e(fe,[2,88]),e(fe,[2,89]),e(fe,[2,90]),e(fe,[2,91]),e(fe,[2,92]),e(fe,[2,93]),e(fe,[2,94]),e(fe,[2,95]),e(fe,[2,96]),e(fe,[2,97]),e(fe,[2,98]),e(fe,[2,99]),e(fe,[2,100]),e(fe,[2,101]),e(fe,[2,102]),e(fe,[2,103]),e(fe,[2,104]),{23:147,73:O},{23:149,60:148,73:O},{73:[2,68]},{73:[2,69]},{58:150,104:K},{58:152,104:K},{58:153,104:K},{58:154,104:K},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:N,53:I,54:_},{5:[1,160]},e($,[2,20]),e($,[2,21]),e($,[2,23]),e($,[2,24]),{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,161],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,162],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,163],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,164]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,47],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,50:[1,165],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,166]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,45],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,49:[1,167],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,168]},{17:[1,169]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,43],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,48:[1,170],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,171],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{16:[1,172]},e($,[2,50]),{16:[1,173]},e($,[2,55]),e(X,[2,76]),{76:[1,174]},{16:[1,175]},e($,[2,52]),{16:[1,176]},e($,[2,57]),e($,[2,53]),{23:177,73:O},{23:178,73:O},{23:179,73:O},{58:180,104:K},{23:181,72:[1,182],73:O},{58:183,104:K},{58:184,104:K},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},e($,[2,17]),e(Me,[2,11]),{13:186,51:N,53:I,54:_},e(Me,[2,13]),e(Me,[2,14]),e($,[2,19]),e($,[2,35]),e($,[2,36]),e($,[2,37]),e($,[2,38]),{16:[1,187]},e($,[2,39]),{16:[1,188]},e($,[2,40]),e($,[2,41]),{16:[1,189]},e($,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:K},{58:196,104:K},{58:197,104:K},{5:[2,75]},{58:198,104:K},{23:199,73:O},{5:[2,58]},{5:[2,59]},{23:200,73:O},e(Me,[2,12]),e(ne,i,{7:124,41:201}),e(q,i,{7:126,43:202}),e(he,i,{7:129,46:203}),e($,[2,49]),e($,[2,54]),e(X,[2,77]),e($,[2,51]),e($,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:K},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],defaultActions:{5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},parseError:o(function(He,$e){if($e.recoverable)this.trace(He);else{var Xe=new Error(He);throw Xe.hash=$e,Xe}},"parseError"),parse:o(function(He){var $e=this,Xe=[0],Fe=[],Ke=[null],xe=[],mt=this.table,Le="",ft=0,wt=0,zt=0,St=2,At=1,bt=xe.slice.call(arguments,1),me=Object.create(this.lexer),lt={yy:{}};for(var gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,gt)&&(lt.yy[gt]=this.yy[gt]);me.setInput(He,lt.yy),lt.yy.lexer=me,lt.yy.parser=this,typeof me.yylloc>"u"&&(me.yylloc={});var Ze=me.yylloc;xe.push(Ze);var Ee=me.options&&me.options.ranges;typeof lt.yy.parseError=="function"?this.parseError=lt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tt(Ht){Xe.length=Xe.length-2*Ht,Ke.length=Ke.length-Ht,xe.length=xe.length-Ht}o(tt,"popStack");function at(){var Ht;return Ht=Fe.pop()||me.lex()||At,typeof Ht!="number"&&(Ht instanceof Array&&(Fe=Ht,Ht=Fe.pop()),Ht=$e.symbols_[Ht]||Ht),Ht}o(at,"lex");for(var ot,Wt,Bt,qt,vr,Tt,De={},it,We,rt,yt;;){if(Bt=Xe[Xe.length-1],this.defaultActions[Bt]?qt=this.defaultActions[Bt]:((ot===null||typeof ot>"u")&&(ot=at()),qt=mt[Bt]&&mt[Bt][ot]),typeof qt>"u"||!qt.length||!qt[0]){var Yt="";yt=[];for(it in mt[Bt])this.terminals_[it]&&it>St&&yt.push("'"+this.terminals_[it]+"'");me.showPosition?Yt="Parse error on line "+(ft+1)+`: +`+me.showPosition()+` +Expecting `+yt.join(", ")+", got '"+(this.terminals_[ot]||ot)+"'":Yt="Parse error on line "+(ft+1)+": Unexpected "+(ot==At?"end of input":"'"+(this.terminals_[ot]||ot)+"'"),this.parseError(Yt,{text:me.match,token:this.terminals_[ot]||ot,line:me.yylineno,loc:Ze,expected:yt})}if(qt[0]instanceof Array&&qt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bt+", token: "+ot);switch(qt[0]){case 1:Xe.push(ot),Ke.push(me.yytext),xe.push(me.yylloc),Xe.push(qt[1]),ot=null,Wt?(ot=Wt,Wt=null):(wt=me.yyleng,Le=me.yytext,ft=me.yylineno,Ze=me.yylloc,zt>0&&zt--);break;case 2:if(We=this.productions_[qt[1]][1],De.$=Ke[Ke.length-We],De._$={first_line:xe[xe.length-(We||1)].first_line,last_line:xe[xe.length-1].last_line,first_column:xe[xe.length-(We||1)].first_column,last_column:xe[xe.length-1].last_column},Ee&&(De._$.range=[xe[xe.length-(We||1)].range[0],xe[xe.length-1].range[1]]),Tt=this.performAction.apply(De,[Le,wt,ft,lt.yy,qt[1],Ke,xe].concat(bt)),typeof Tt<"u")return Tt;We&&(Xe=Xe.slice(0,-1*We*2),Ke=Ke.slice(0,-1*We),xe=xe.slice(0,-1*We)),Xe.push(this.productions_[qt[1]][0]),Ke.push(De.$),xe.push(De._$),rt=mt[Xe[Xe.length-2]][Xe[Xe.length-1]],Xe.push(rt);break;case 3:return!0}}return!0},"parse")},_e=(function(){var Ne={EOF:1,parseError:o(function($e,Xe){if(this.yy.parser)this.yy.parser.parseError($e,Xe);else throw new Error($e)},"parseError"),setInput:o(function(He,$e){return this.yy=$e||this.yy||{},this._input=He,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var He=this._input[0];this.yytext+=He,this.yyleng++,this.offset++,this.match+=He,this.matched+=He;var $e=He.match(/(?:\r\n?|\n).*/g);return $e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),He},"input"),unput:o(function(He){var $e=He.length,Xe=He.split(/(?:\r\n?|\n)/g);this._input=He+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$e),this.offset-=$e;var Fe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Xe.length-1&&(this.yylineno-=Xe.length-1);var Ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Xe?(Xe.length===Fe.length?this.yylloc.first_column:0)+Fe[Fe.length-Xe.length].length-Xe[0].length:this.yylloc.first_column-$e},this.options.ranges&&(this.yylloc.range=[Ke[0],Ke[0]+this.yyleng-$e]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(He){this.unput(this.match.slice(He))},"less"),pastInput:o(function(){var He=this.matched.substr(0,this.matched.length-this.match.length);return(He.length>20?"...":"")+He.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var He=this.match;return He.length<20&&(He+=this._input.substr(0,20-He.length)),(He.substr(0,20)+(He.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var He=this.pastInput(),$e=new Array(He.length+1).join("-");return He+this.upcomingInput()+` +`+$e+"^"},"showPosition"),test_match:o(function(He,$e){var Xe,Fe,Ke;if(this.options.backtrack_lexer&&(Ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ke.yylloc.range=this.yylloc.range.slice(0))),Fe=He[0].match(/(?:\r\n?|\n).*/g),Fe&&(this.yylineno+=Fe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Fe?Fe[Fe.length-1].length-Fe[Fe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+He[0].length},this.yytext+=He[0],this.match+=He[0],this.matches=He,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(He[0].length),this.matched+=He[0],Xe=this.performAction.call(this,this.yy,this,$e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Xe)return Xe;if(this._backtrack){for(var xe in Ke)this[xe]=Ke[xe];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var He,$e,Xe,Fe;this._more||(this.yytext="",this.match="");for(var Ke=this._currentRules(),xe=0;xe$e[0].length)){if($e=Xe,Fe=xe,this.options.backtrack_lexer){if(He=this.test_match(Xe,Ke[xe]),He!==!1)return He;if(this._backtrack){$e=!1;continue}else return!1}else if(!this.options.flex)break}return $e?(He=this.test_match($e,Ke[Fe]),He!==!1?He:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var $e=this.next();return $e||this.lex()},"lex"),begin:o(function($e){this.conditionStack.push($e)},"begin"),popState:o(function(){var $e=this.conditionStack.length-1;return $e>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function($e){return $e=this.conditionStack.length-1-Math.abs($e||0),$e>=0?this.conditionStack[$e]:"INITIAL"},"topState"),pushState:o(function($e){this.begin($e)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function($e,Xe,Fe,Ke){var xe=Ke;switch(Fe){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 20;case 7:return this.begin("CONFIG"),75;break;case 8:return 76;case 9:return this.popState(),this.begin("ALIAS"),77;break;case 10:return this.popState(),this.popState(),77;break;case 11:return Xe.yytext=Xe.yytext.trim(),73;break;case 12:return Xe.yytext=Xe.yytext.trim(),this.begin("ALIAS"),73;break;case 13:return Xe.yytext=Xe.yytext.trim(),this.popState(),73;break;case 14:return this.popState(),10;break;case 15:return Xe.yytext=Xe.yytext.trim(),this.popState(),10;break;case 16:return this.begin("LINE"),15;break;case 17:return this.begin("ID"),51;break;case 18:return this.begin("ID"),53;break;case 19:return 14;case 20:return this.begin("ID"),54;break;case 21:return this.popState(),this.popState(),this.begin("LINE"),52;break;case 22:return this.popState(),this.popState(),5;break;case 23:return this.begin("LINE"),37;break;case 24:return this.begin("LINE"),38;break;case 25:return this.begin("LINE"),39;break;case 26:return this.begin("LINE"),40;break;case 27:return this.begin("LINE"),50;break;case 28:return this.begin("LINE"),42;break;case 29:return this.begin("LINE"),44;break;case 30:return this.begin("LINE"),49;break;case 31:return this.begin("LINE"),45;break;case 32:return this.begin("LINE"),48;break;case 33:return this.begin("LINE"),47;break;case 34:return this.popState(),16;break;case 35:return 17;case 36:return 67;case 37:return 68;case 38:return 61;case 39:return 62;case 40:return 63;case 41:return 64;case 42:return 59;case 43:return 56;case 44:return this.begin("ID"),22;break;case 45:return this.begin("ID"),24;break;case 46:return 30;case 47:return 31;case 48:return this.begin("acc_title"),32;break;case 49:return this.popState(),"acc_title_value";break;case 50:return this.begin("acc_descr"),34;break;case 51:return this.popState(),"acc_descr_value";break;case 52:this.begin("acc_descr_multiline");break;case 53:this.popState();break;case 54:return"acc_descr_multiline_value";case 55:return 6;case 56:return 19;case 57:return 21;case 58:return 66;case 59:return 5;case 60:return Xe.yytext=Xe.yytext.trim(),73;break;case 61:return 80;case 62:return 97;case 63:return 98;case 64:return 99;case 65:return 78;case 66:return 79;case 67:return 100;case 68:return 101;case 69:return 102;case 70:return 103;case 71:return 85;case 72:return 86;case 73:return 87;case 74:return 88;case 75:return 93;case 76:return 94;case 77:return 95;case 78:return 96;case 79:return 81;case 80:return 82;case 81:return 83;case 82:return 84;case 83:return 89;case 84:return 90;case 85:return 91;case 86:return 92;case 87:return 104;case 88:return 104;case 89:return 70;case 90:return 71;case 91:return 72;case 92:return 5;case 93:return 10}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:([0-9]+(\.[0-9]{1,2})?|\.[0-9]{1,2})(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\}(?=\s+as\s))/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^<>:\n,;@\s]+(?=\s+as\s))/i,/^(?:[^<>:\n,;@]+(?=\s*[\n;#]|$))/i,/^(?:[^<>:\n,;@]*<[^\n]*)/i,/^(?:[^\n]+)/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\/\\\+\()\+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)|-\|\\|-\\|-\/|-\/\/|-\|\/|\/\|-|\\\|-|\/\/-|\\\\-|\/\|-|--\|\\|--|\(\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?:--\|\\)/i,/^(?:--\|\/)/i,/^(?:--\\\\)/i,/^(?:--\/\/)/i,/^(?:\/\|--)/i,/^(?:\\\|--)/i,/^(?:\/\/--)/i,/^(?:\\\\--)/i,/^(?:-\|\\)/i,/^(?:-\|\/)/i,/^(?:-\\\\)/i,/^(?:-\/\/)/i,/^(?:\/\|-)/i,/^(?:\\\|-)/i,/^(?:\/\/-)/i,/^(?:\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\(\))/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[53,54],inclusive:!1},acc_descr:{rules:[51],inclusive:!1},acc_title:{rules:[49],inclusive:!1},ID:{rules:[2,3,7,11,12,13,14,15],inclusive:!1},ALIAS:{rules:[2,3,21,22],inclusive:!1},LINE:{rules:[2,3,34],inclusive:!1},CONFIG:{rules:[8,9,10],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,52,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],inclusive:!0}}};return Ne})();qe.lexer=_e;function Be(){this.yy={}}return o(Be,"Parser"),Be.prototype=qe,qe.Parser=Be,new Be})();iY.parser=iY;Z8e=iY});var XAt,KAt,ZAt,Fw,TL,aY=F(()=>{"use strict";Xt();A2();vt();J_();Vr();Nn();XAt={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34,SOLID_TOP:41,SOLID_BOTTOM:42,STICK_TOP:43,STICK_BOTTOM:44,SOLID_ARROW_TOP_REVERSE:45,SOLID_ARROW_BOTTOM_REVERSE:46,STICK_ARROW_TOP_REVERSE:47,STICK_ARROW_BOTTOM_REVERSE:48,SOLID_TOP_DOTTED:51,SOLID_BOTTOM_DOTTED:52,STICK_TOP_DOTTED:53,STICK_BOTTOM_DOTTED:54,SOLID_ARROW_TOP_REVERSE_DOTTED:55,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:56,STICK_ARROW_TOP_REVERSE_DOTTED:57,STICK_ARROW_BOTTOM_REVERSE_DOTTED:58,CENTRAL_CONNECTION:59,CENTRAL_CONNECTION_REVERSE:60,CENTRAL_CONNECTION_DUAL:61},KAt={FILLED:0,OPEN:1},ZAt={LEFTOF:0,RIGHTOF:1,OVER:2},Fw={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},TL=class{constructor(){this.state=new Cp(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=kr;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getAccTitle=Ar;this.getAccDescription=_r;this.getDiagramTitle=Lr;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(Ae().wrap),this.LINETYPE=XAt,this.ARROWTYPE=KAt,this.PLACEMENT=ZAt}static{o(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,r,n,i,a){let s=this.state.records.currentBox,l;if(a!==void 0){let h;a.includes(` +`)?h=a+` +`:h=`{ +`+a+` +}`,l=Qd(h,{schema:Zd})}i=l?.type??i,l?.alias&&(!n||n.text===r)&&(n={text:l.alias,wrap:n?.wrap,type:i});let u=this.state.records.actors.get(t);if(u){if(this.state.records.currentBox&&u.box&&this.state.records.currentBox!==u.box)throw new Error(`A same participant should only be defined in one Box: ${u.name} can't be in '${u.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(s=u.box?u.box:this.state.records.currentBox,u.box=s,u&&r===u.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(t,{box:s,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let r,n=0;if(!t)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},u}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a,centralConnection:s??0}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(t===void 0)return{};t=t.trim();let r=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(r===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:Ae().sequence?.wrap??!1}clear(){this.state.reset(),yr()}parseMessage(t){let r=t.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return Z.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(t){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=t.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=t.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?mr(s,Ae()):void 0,color:n,wrap:a}}addNote(t,r,n){let i={actor:t,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(t,t);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(t,r){let n=this.getActor(t);try{let i=mr(r.text,Ae());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){Z.error("error while parsing actor link text",i)}}addALink(t,r){let n=this.getActor(t);try{let i={},a=mr(r.text,Ae()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){Z.error("error while parsing actor link text",i)}}insertLinks(t,r){if(t.links==null)t.links=r;else for(let n in r)t.links[n]=r[n]}addProperties(t,r){let n=this.getActor(t);try{let i=mr(r.text,Ae()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){Z.error("error while parsing actor properties text",i)}}insertProperties(t,r){if(t.properties==null)t.properties=r;else for(let n in r)t.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,r){let n=this.getActor(t),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){Z.error("error while parsing actor details text",a)}}getActorProperty(t,r){if(t?.properties!==void 0)return t.properties[r]}apply(t){if(Array.isArray(t))t.forEach(r=>{this.apply(r)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnection":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnectionReverse":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate,t.centralConnection);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"altStart":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":kr(t.text);break;case"parStart":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break}}getConfig(){return Ae().sequence}}});var QAt,J8e,eIe=F(()=>{"use strict";Xt();QAt=o(e=>{let t=e.dropShadow??"none",{look:r}=Ae();return`.actor { + stroke: ${e.actorBorder}; + fill: ${e.actorBkg}; + stroke-width: ${e.strokeWidth??1}; + } + + rect.actor.outer-path[data-look="neo"] { + filter: ${t}; + } + + rect.note[data-look="neo"] { + stroke:${e.noteBorderColor}; + fill:${e.noteBkgColor}; + filter: ${t}; + } + + text.actor > tspan { + fill: ${e.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${e.actorLineColor}; + } + + .innerArc { + stroke-width: 1.5; + stroke-dasharray: none; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${e.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${e.signalColor}; + } + + [id$="-arrowhead"] path { + fill: ${e.signalColor}; + stroke: ${e.signalColor}; + } + + .sequenceNumber { + fill: ${e.sequenceNumberColor}; + } + + [id$="-sequencenumber"] { + fill: ${e.signalColor}; + } + + [id$="-crosshead"] path { + fill: ${e.signalColor}; + stroke: ${e.signalColor}; + } + + .messageText { + fill: ${e.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${e.labelBoxBorderColor}; + fill: ${e.labelBoxBkgColor}; + filter: ${r==="neo"?t:"none"}; + } + + .labelText, .labelText > tspan { + fill: ${e.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${e.loopTextColor}; + stroke: none; + } + + .sectionTitle, .sectionTitle > tspan { + fill: ${e.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${e.labelBoxBorderColor}; + fill: ${e.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${e.noteBorderColor}; + fill: ${e.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${e.noteTextColor}; + stroke: none; + ${e.noteFontWeight?`font-weight: ${e.noteFontWeight};`:""} + } + + .activation0 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .activation1 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .activation2 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${e.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man circle, line { + fill: ${e.actorBkg}; + stroke-width: 2px; + } + + g rect.rect { + filter: ${t}; + stroke: ${e.nodeBorder}; + } +`},"getStyles"),J8e=QAt});var sY,Sp,Ep,Ap,CL,k0,ud,zw,JAt,wL,Gw,S0,tIe,nn,oY,e6t,t6t,r6t,n6t,i6t,a6t,s6t,o6t,l6t,c6t,u6t,h6t,d6t,rIe,f6t,p6t,m6t,g6t,y6t,v6t,x6t,b6t,nIe,T6t,hd,C6t,w6t,k6t,S6t,E6t,Un,iIe=F(()=>{"use strict";sY=Xs(Ly(),1);ur();Qt();Vr();Hd();Sp=36,Ep="actor-top",Ap="actor-bottom",CL="actor-box",k0="actor-man",ud=new Set(["redux-color","redux-dark-color"]),zw=o(function(e,t){let r=dm(e,t);return _t().look==="neo"&&r.attr("data-look","neo"),r},"drawRect"),JAt=o(function(e,t,r,n,i){if(t.links===void 0||t.links===null||Object.keys(t.links).length===0)return{height:0,width:0};let a=t.links,s=t.actorCnt,l=t.rectData;var u="none";i&&(u="block !important");let h=e.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var d="";l.class!==void 0&&(d=" "+l.class);let f=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+d),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",f),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,sY.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),C6t(n)(v,g,l.x+10,l.height+m,f,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:f}},"drawPopup"),wL=o(function(e){return"var pu = document.getElementById('"+e+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),Gw=o(async function(e,t,r=null){let n=e.append("foreignObject"),i=await ey(t.text,_t()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),t.class==="noteText"){let l=e.node().firstChild;l.setAttribute("height",s.height+2*t.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let d=l;l=u,u=d}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),t.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),S0=o(function(e,t){let r=0,n=0,i=t.text.split(xt.lineBreakRegex),[a,s]=As(t.fontSize),l=[],u=0,h=o(()=>t.y,"yfunc");if(t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0)switch(t.valign){case"top":case"start":h=o(()=>Math.round(t.y+t.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(t.y+(r+n+t.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(t.y+(r+n+2*t.textMargin)-t.textMargin),"yfunc");break}if(t.anchor!==void 0&&t.textMargin!==void 0&&t.width!==void 0)switch(t.anchor){case"left":case"start":t.x=Math.round(t.x+t.textMargin),t.anchor="start",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"middle":case"center":t.x=Math.round(t.x+t.width/2),t.anchor="middle",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"right":case"end":t.x=Math.round(t.x+t.width-t.textMargin),t.anchor="end",t.dominantBaseline="middle",t.alignmentBaseline="middle";break}for(let[d,f]of i.entries()){t.textMargin!==void 0&&t.textMargin===0&&a!==void 0&&(u=d*a);let p=e.append("text");p.attr("x",t.x),p.attr("y",h()),t.anchor!==void 0&&p.attr("text-anchor",t.anchor).attr("dominant-baseline",t.dominantBaseline).attr("alignment-baseline",t.alignmentBaseline),t.fontFamily!==void 0&&p.style("font-family",t.fontFamily),s!==void 0&&p.style("font-size",s),t.fontWeight!==void 0&&p.style("font-weight",t.fontWeight),t.fill!==void 0&&p.attr("fill",t.fill),t.class!==void 0&&p.attr("class",t.class),t.dy!==void 0?p.attr("dy",t.dy):u!==0&&p.attr("dy",u);let m=f||oP;if(t.tspan){let g=p.append("tspan");g.attr("x",t.x),t.fill!==void 0&&g.attr("fill",t.fill),g.text(m)}else p.text(m);t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),tIe=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");return n.attr("points",r(t.x,t.y,t.width,t.height,7)),n.attr("class","labelBox"),t.y=t.y+t.height/2,S0(e,t),n},"drawLabel"),nn=-1,oY=o((e,t,r,n)=>{e.select&&r.forEach(i=>{let a=t.get(i),s=e.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),e6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.rx=3,y.ry=3,y.name=t.name,u==="neo"&&(y.rx=6,y.ry=6);let x=zw(g,y),b=i.get(t.name)??0;if(ud.has(h)&&(x.style("stroke",p[b%p.length]),x.style("fill",f[b%p.length])),u==="neo"&&x.attr("filter","url(#drop-shadow)"),t.rectData=y,t.properties?.icon){let k=t.properties.icon.trim();k.charAt(0)==="@"?zE(g,y.x+y.width-20,y.y+10,k.substr(1)):FE(g,y.x+y.width-20,y.y+10,k)}n||(g.attr("data-et","participant"),g.attr("data-type","participant"),g.attr("data-id",t.name)),hd(r,ni(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${CL}`},r);let T=t.height;if(x.node){let k=x.node().getBBox();t.height=k.height,T=k.height}return T},"drawActorTypeParticipant"),t6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.name=t.name;let x=6,b={...y,x:y.x+-x,y:y.y+ +x,class:"actor"},T=zw(g,y),k=zw(g,b);t.rectData=y,u==="neo"&&g.attr("filter","url(#drop-shadow)");let C=i.get(t.name)??0;if(ud.has(h)&&(T.style("stroke",p[C%p.length]),T.style("fill",f[C%p.length]),k.style("stroke",p[C%p.length]),k.style("fill",f[C%p.length])),t.properties?.icon){let S=t.properties.icon.trim();S.charAt(0)==="@"?zE(g,y.x+y.width-20,y.y+10,S.substr(1)):FE(g,y.x+y.width-20,y.y+10,S)}hd(r,ni(t.description))(t.description,g,y.x-x,y.y+x,y.width,y.height,{class:`actor ${CL}`},r);let w=t.height;if(T.node){let S=T.node().getBBox();t.height=S.height,w=S.height}return n||(g.attr("data-et","participant"),g.attr("data-type","collections"),g.attr("data-id",t.name)),w},"drawActorTypeCollections"),r6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa(),v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,g.attr("class",v),y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.name=t.name;let x=y.height/2,b=x/(2.5+y.height/50),T=g.append("g"),k=g.append("g"),C=`M ${y.x},${y.y+x} + a ${b},${x} 0 0 0 0,${y.height} + h ${y.width-2*b} + a ${b},${x} 0 0 0 0,-${y.height} + Z + `;T.append("path").attr("d",C),k.append("path").attr("d",`M ${y.x},${y.y+x} + a ${b},${x} 0 0 0 0,${y.height}`),T.attr("transform",`translate(${b}, ${-(y.height/2)})`),k.attr("transform",`translate(${y.width-b}, ${-y.height/2})`),t.rectData=y,u==="neo"&&T.attr("filter","url(#drop-shadow)");let w=i.get(t.name)??0;if(ud.has(h)&&(T.style("stroke",p[w%p.length]),T.style("fill",f[w%p.length]),k.style("stroke",p[w%p.length]),k.style("fill",f[w%p.length])),t.properties?.icon){let L=t.properties.icon.trim(),N=y.x+y.width-20,I=y.y+10;L.charAt(0)==="@"?zE(g,N,I,L.substr(1)):FE(g,N,I,L)}hd(r,ni(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${CL}`},r);let S=t.height,R=T.select("path:last-child");if(R.node()){let L=R.node().getBBox();t.height=L.height,S=L.height}return n||(g.attr("data-et","participant"),g.attr("data-type","queue"),g.attr("data-id",t.name)),S},"drawActorTypeQueue"),n6t=o(function(e,t,r,n,i,a){let s=n?t.stopy:t.starty,l=t.x+t.width/2,u=s+75,{look:h,theme:d,themeVariables:f}=r,{bkgColorArray:p,borderColorArray:m,actorBorder:g,actorBkg:y}=f,v=e.append("g").lower();n||(nn++,v.append("line").attr("id","actor"+nn).attr("x1",l).attr("y1",u).attr("x2",l).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let x=e.append("g"),b=k0;n?b+=` ${Ap}`:b+=` ${Ep}`,x.attr("class",b),x.attr("name",t.name);let T=Fa();T.x=t.x,T.y=s,T.fill="#eaeaea",T.width=t.width,T.height=t.height,T.class="actor";let k=t.x+t.width/2,C=s+32,w=22;x.append("defs").append("marker").attr("id",i+"-filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").attr("stroke-width",1.2).append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),x.append("circle").attr("cx",k).attr("cy",C).attr("r",w).attr("filter",`${h==="neo"?"url(#drop-shadow)":""}`),x.append("line").attr("marker-end","url(#"+i+"-filled-head-control)").attr("transform",`translate(${k}, ${C-w})`);let S=a.get(t.name)??0;ud.has(d)?(x.style("stroke",m[S%m.length]),x.style("fill",p[S%m.length])):(x.style("stroke",g),x.style("fill",y));let R=x.node().getBBox();return t.height=R.height+2*(r?.sequence?.labelBoxHeight??0),hd(r,ni(t.description))(t.description,x,T.x,T.y+w+(n?5:12),T.width,T.height,{class:`actor ${k0}`},r),n||(x.attr("data-et","participant"),x.attr("data-type","control"),x.attr("data-id",t.name)),t.height},"drawActorTypeControl"),i6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+75,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=e.append("g"),y="actor";n?y+=` ${Ap}`:y+=` ${Ep}`,g.attr("class",y),g.attr("name",t.name);let v=Fa();v.x=t.x,v.y=a,v.fill="#eaeaea",v.width=t.width,v.height=t.height,v.class="actor";let x=t.x+t.width/2,b=a+(n?10:25),T=22;g.append("circle").attr("cx",x).attr("cy",b).attr("r",T).attr("width",t.width).attr("height",t.height),g.append("line").attr("x1",x-T).attr("x2",x+T).attr("y1",b+T).attr("y2",b+T).attr("stroke-width",2),u==="neo"&&g.attr("filter","url(#drop-shadow)");let k=i.get(t.name)??0;ud.has(h)&&(g.style("stroke",p[k%p.length]),g.style("fill",f[k%p.length]));let C=g.node().getBBox();return t.height=C.height+(r?.sequence?.labelBoxHeight??0),n||(nn++,m.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn),hd(r,ni(t.description))(t.description,g,v.x,v.y+(n?15:30),v.width,v.height,{class:`actor ${k0}`},r),n?g.attr("transform",`translate(0, ${T})`):(g.attr("transform",`translate(0, ${T/2-5})`),g.attr("data-et","participant"),g.attr("data-type","entity"),g.attr("data-id",t.name)),t.height},"drawActorTypeEntity"),a6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height+2*r.boxTextMargin,{theme:u,themeVariables:h,look:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=h,g=e.append("g").lower(),y=g;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&y.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),y.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),y=g.append("g"),t.actorCnt=nn,t.links!=null&&y.attr("id","root-"+nn),d==="neo"&&y.attr("data-look","neo"));let v=Fa(),x="actor";t.properties?.class?x=t.properties.class:v.fill="#eaeaea",n?x+=` ${Ap}`:x+=` ${Ep}`,v.x=t.x,v.y=a,v.width=t.width,v.height=t.height,v.class=x,v.name=t.name,v.x=t.x,v.y=a;let b=v.width/3,T=v.width/3,k=b/2,C=k/(2.5+b/50),w=y.append("g");w.attr("class",x);let S=` + M ${v.x},${v.y+C} + a ${k},${C} 0 0 0 ${b},0 + a ${k},${C} 0 0 0 -${b},0 + l 0,${T-2*C} + a ${k},${C} 0 0 0 ${b},0 + l 0,-${T-2*C} +`;w.append("path").attr("d",S),d==="neo"&&w.attr("filter","url(#drop-shadow)");let R=i.get(t.name)??0;ud.has(u)?(w.style("stroke",p[R%p.length]),w.style("fill",f[R%p.length])):w.style("stroke",m),w.attr("transform",`translate(${b}, ${C})`),t.rectData=v,hd(r,ni(t.description))(t.description,y,v.x,v.y+35,v.width,v.height,{class:`actor ${CL}`},r);let L=w.select("path:last-child");if(L.node()){let N=L.node().getBBox();t.height=N.height+(r.sequence.labelBoxHeight??0)}return n||(y.attr("data-et","participant"),y.attr("data-type","database"),y.attr("data-id",t.name)),t.height},"drawActorTypeDatabase"),s6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,u=22,h=e.append("g").lower(),{look:d,theme:f,themeVariables:p}=r,{bkgColorArray:m,borderColorArray:g,actorBorder:y}=p;n||(nn++,h.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let v=e.append("g"),x=k0;n?x+=` ${Ap}`:x+=` ${Ep}`,v.attr("class",x),v.attr("name",t.name);let b=Fa();b.x=t.x,b.y=a,b.fill="#eaeaea",b.width=t.width,b.height=t.height,b.class="actor",v.append("line").attr("id","actor-man-torso"+nn).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+12).attr("x2",t.x+t.width/2-15).attr("y2",a+12),v.append("line").attr("id","actor-man-arms"+nn).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+2).attr("x2",t.x+t.width/2-u*2.5).attr("y2",a+22),v.append("circle").attr("cx",t.x+t.width/2).attr("cy",a+12).attr("r",u),d==="neo"&&v.attr("filter","url(#drop-shadow)");let T=i.get(t.name)??0;ud.has(f)?(v.style("stroke",g[T%g.length]),v.style("fill",m[T%g.length])):v.style("stroke",y);let k=v.node().getBBox();return t.height=k.height+(r.sequence.labelBoxHeight??0),hd(r,ni(t.description))(t.description,v,b.x,b.y+15,b.width,b.height,{class:`actor ${k0}`},r),v.attr("transform",`translate(0,${u/2+10})`),n||(v.attr("data-et","participant"),v.attr("data-type","boundary"),v.attr("data-id",t.name)),t.height},"drawActorTypeBoundary"),o6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=d,g=e.append("g").lower();n||(nn++,g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let y=e.append("g"),v=k0;n?v+=` ${Ap}`:v+=` ${Ep}`,y.attr("class",v),y.attr("name",t.name),n||y.attr("data-et","participant").attr("data-type","actor").attr("data-id",t.name);let x=u==="neo"?.5:1,b=u==="neo"?a+(1-x)*30:a;y.append("line").attr("id","actor-man-torso"+nn).attr("x1",s).attr("y1",b+25*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("id","actor-man-arms"+nn).attr("x1",s-Sp/2*x).attr("y1",b+33*x).attr("x2",s+Sp/2*x).attr("y2",b+33*x),y.append("line").attr("x1",s-Sp/2*x).attr("y1",b+60*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("x1",s).attr("y1",b+45*x).attr("x2",s+(Sp/2-2)*x).attr("y2",b+60*x);let T=y.append("circle");T.attr("cx",t.x+t.width/2),T.attr("cy",b+10*x),T.attr("r",15*x),T.attr("width",t.width*x),T.attr("height",t.height*x);let k=y.node().getBBox();t.height=k.height;let C=Fa();C.x=t.x,C.y=b,C.fill="#eaeaea",C.width=t.width,C.height=t.height/x,C.class="actor",C.rx=3,C.ry=3;let w=i.get(t.name)??0;return ud.has(h)?(y.style("stroke",p[w%p.length]),y.style("fill",f[w%p.length])):y.style("stroke",m),hd(r,ni(t.description))(t.description,y,C.x,b+35*x-(u==="neo"?10:0),C.width,C.height,{class:`actor ${k0}`},r),t.height},"drawActorTypeActor"),l6t=o(async function(e,t,r,n,i,a,s){let l=s??new Map([...a.db.getActors().values()].map((u,h)=>[u.name,h]));switch(t.type){case"actor":return await o6t(e,t,r,n,l);case"participant":return await e6t(e,t,r,n,l);case"boundary":return await s6t(e,t,r,n,l);case"control":return await n6t(e,t,r,n,i,l);case"entity":return await i6t(e,t,r,n,l);case"database":return await a6t(e,t,r,n,l);case"collections":return await t6t(e,t,r,n,l);case"queue":return await r6t(e,t,r,n,l)}},"drawActor"),c6t=o(function(e,t,r){let i=e.append("g");rIe(i,t),t.name&&hd(r)(t.name,i,t.x,t.y+r.boxTextMargin+(t.textMaxHeight||0)/2,t.width,0,{class:"text"},r),i.lower()},"drawBox"),u6t=o(function(e){return e.append("g")},"anchorElement"),h6t=o(function(e,t,r,n,i,a,s){let{theme:l,themeVariables:u}=n,{bkgColorArray:h,borderColorArray:d,mainBkg:f}=u,p=Fa(),m=t.anchored,g=t.actor;p.x=t.startx,p.y=t.starty,p.class="activation"+i%3,p.width=t.stopx-t.startx,p.height=r-t.starty;let y=zw(m,p),x=(s??new Map([...a.db.getActors().values()].map((b,T)=>[b.name,T]))).get(g)??0;ud.has(l)&&(y.style("stroke",d[x%d.length]),y.style("fill",h[x%d.length]??f))},"drawActivation"),d6t=o(async function(e,t,r,n,i){let{boxMargin:a,boxTextMargin:s,labelBoxHeight:l,labelBoxWidth:u,messageFontFamily:h,messageFontSize:d,messageFontWeight:f}=n,p=e.append("g").attr("data-et","control-structure").attr("data-id","i"+i.id),m=o(function(v,x,b,T){return p.append("line").attr("x1",v).attr("y1",x).attr("x2",b).attr("y2",T).attr("class","loopLine")},"drawLoopLine");m(t.startx,t.starty,t.stopx,t.starty),m(t.stopx,t.starty,t.stopx,t.stopy),m(t.startx,t.stopy,t.stopx,t.stopy),m(t.startx,t.starty,t.startx,t.stopy),t.sections!==void 0&&t.sections.forEach(function(v){m(t.startx,v.y,t.stopx,v.y).style("stroke-dasharray","3, 3")});let g=l2();g.text=r,g.x=t.startx,g.y=t.starty,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.anchor="middle",g.valign="middle",g.tspan=!1,g.width=Math.max(u??0,50),g.height=l+(n.look==="neo"?15:0)||20,g.textMargin=s,g.class="labelText",tIe(p,g),g=nIe(),g.text=t.title,g.x=t.startx+u/2+(t.stopx-t.startx)/2,g.y=t.starty+a+s,g.anchor="middle",g.valign="middle",g.textMargin=s,g.class="loopText",g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=!0;let y=ni(g.text)?await Gw(p,g,t):S0(p,g);if(t.sectionTitles!==void 0){for(let[v,x]of Object.entries(t.sectionTitles))if(x.message){g.text=x.message,g.x=t.startx+(t.stopx-t.startx)/2,g.y=t.sections[v].y+a+s,g.class="sectionTitle",g.anchor="middle",g.valign="middle",g.tspan=!1,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=t.wrap,ni(g.text)?(t.starty=t.sections[v].y,await Gw(p,g,t)):S0(p,g);let b=Math.round(y.map(T=>(T._groups||T)[0][0].getBBox().height).reduce((T,k)=>T+k));t.sections[v].height+=b-(a+s)}}return t.height=Math.round(t.stopy-t.starty),p},"drawLoop"),rIe=o(function(e,t){$E(e,t)},"drawBackgroundRect"),f6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),p6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),m6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),g6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),y6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),v6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),x6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),b6t=o(function(e,t){let{theme:r}=t;e.append("defs").append("filter").attr("id","drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${r==="redux"||r==="redux-color"?"#000000":"#FFFFFF"}`)},"insertDropShadow"),nIe=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),T6t=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),hd=(function(){function e(a,s,l,u,h,d,f){let p=s.append("text").attr("x",l+h/2).attr("y",u+d/2+5).style("text-anchor","middle").text(a);i(p,f)}o(e,"byText");function t(a,s,l,u,h,d,f,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=As(m),b=a.split(xt.lineBreakRegex);for(let T=0;T{let s=E0(je),l=a.actorKeys.reduce((f,p)=>f+=e.get(p).width+(e.get(p).margin||0),0),u=je.boxMargin*8;l+=u,l-=2*je.boxTextMargin,a.wrap&&(a.name=Zt.wrapLabel(a.name,l-2*je.wrapPadding,s));let h=Zt.calculateTextDimensions(a.name,s);i=xt.getMax(h.height,i);let d=xt.getMax(l,h.width+2*je.wrapPadding);if(a.margin=je.boxTextMargin,la.textMaxHeight=i),xt.getMax(n,je.height)}var je,Et,A6t,aIe,E0,tx,cY,_6t,L6t,uY,oIe,lIe,kL,sIe,I6t,N6t,O6t,B6t,$6t,lY,F6t,cIe,z6t,G6t,V6t,uIe,hIe=F(()=>{"use strict";$r();iIe();vt();Vr();Vr();Hd();Xt();G0();Qt();$n();aY();je={},Et={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(e=>e.height||0))+(this.loops.length===0?0:this.loops.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.messages.length===0?0:this.messages.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.notes.length===0?0:this.notes.map(e=>e.height||0).reduce((e,t)=>e+t))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(e){this.boxes.push(e)},"addBox"),addActor:o(function(e){this.actors.push(e)},"addActor"),addLoop:o(function(e){this.loops.push(e)},"addLoop"),addMessage:o(function(e){this.messages.push(e)},"addMessage"),addNote:o(function(e){this.notes.push(e)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,lIe(Ae())},"init"),updateVal:o(function(e,t,r,n){e[t]===void 0?e[t]=r:e[t]=n(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let d=i.sequenceItems.length-a+1;i.updateVal(h,"starty",t-d*je.boxMargin,Math.min),i.updateVal(h,"stopy",n+d*je.boxMargin,Math.max),i.updateVal(Et.data,"startx",e-d*je.boxMargin,Math.min),i.updateVal(Et.data,"stopx",r+d*je.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",e-d*je.boxMargin,Math.min),i.updateVal(h,"stopx",r+d*je.boxMargin,Math.max),i.updateVal(Et.data,"starty",t-d*je.boxMargin,Math.min),i.updateVal(Et.data,"stopy",n+d*je.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(e,t,r,n){let i=xt.getMin(e,r),a=xt.getMax(e,r),s=xt.getMin(t,n),l=xt.getMax(t,n);this.updateVal(Et.data,"startx",i,Math.min),this.updateVal(Et.data,"starty",s,Math.min),this.updateVal(Et.data,"stopx",a,Math.max),this.updateVal(Et.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(e,t,r){let n=r.get(e.from),i=kL(e.from).length||0,a=n.x+n.width/2+(i-1)*je.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+je.activationWidth,stopy:void 0,actor:e.from,anchored:Un.anchorElement(t)})},"newActivation"),endActivation:o(function(e){let t=this.activations.map(function(r){return r.actor}).lastIndexOf(e.from);return this.activations.splice(t,1)[0]},"endActivation"),createLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:e.message,wrap:e.wrap,width:e.width,height:0,fill:t}},"createLoop"),newLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){this.sequenceItems.push(this.createLoop(e,t))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(e){let t=this.sequenceItems.pop();t.sections=t.sections||[],t.sectionTitles=t.sectionTitles||[],t.sections.push({y:Et.getVerticalPos(),height:0}),t.sectionTitles.push(e),this.sequenceItems.push(t)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=xt.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},A6t=o(async function(e,t,r){Et.bumpVerticalPos(je.boxMargin),t.height=je.boxMargin,t.starty=Et.getVerticalPos();let n=Fa();n.x=t.startx,n.y=t.starty,n.width=t.width||je.width,n.class="note";let i=e.append("g");i.attr("data-et","note"),i.attr("data-id","i"+r);let a=Un.drawRect(i,n),s=l2();s.x=t.startx,s.y=t.starty,s.width=n.width,s.dy="1em",s.text=t.message,s.class="noteText",s.fontFamily=je.noteFontFamily,s.fontSize=je.noteFontSize,s.fontWeight=je.noteFontWeight,s.anchor=je.noteAlign,s.textMargin=je.noteMargin,s.valign="center";let l=ni(s.text)?await Gw(i,s):S0(i,s),u=Math.round(l.map(h=>(h._groups||h)[0][0].getBBox().height).reduce((h,d)=>h+d));a.attr("height",u+2*je.noteMargin),t.height+=u+2*je.noteMargin,Et.bumpVerticalPos(u+2*je.noteMargin),t.stopy=t.starty+u+2*je.noteMargin,t.stopx=t.startx+n.width,Et.insert(t.startx,t.starty,t.stopx,t.stopy),Et.models.addNote(t)},"drawNote"),aIe=o(function(e,t,r,n,i,a,s){let l=n.db.getActors(),u=l.get(t.from),h=l.get(t.to),d=r.sequenceVisible,f=u.x+u.width/2,p=h.x+h.width/2,m=f<=p,g=cIe(t,n),y=e.append("g"),v=16.5,x=o((w,S)=>{let R=w?v:-v;return S?-R:R},"getCircleOffset"),b=o(w=>{y.append("circle").attr("cx",w).attr("cy",s).attr("r",5).attr("width",10).attr("height",10)},"drawCircle"),{CENTRAL_CONNECTION:T,CENTRAL_CONNECTION_REVERSE:k,CENTRAL_CONNECTION_DUAL:C}=n.db.LINETYPE;if(d)switch(t.centralConnection){case T:g&&(p+=x(m,!0));break;case k:g||(f+=x(m,!1));break;case C:g?p+=x(m,!0):f+=x(m,!1);break}switch(t.centralConnection){case T:b(p);break;case k:b(f);break;case C:b(f),b(p);break}},"drawCentralConnection"),E0=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont"),tx=o(e=>({fontFamily:e.noteFontFamily,fontSize:e.noteFontSize,fontWeight:e.noteFontWeight}),"noteFont"),cY=o(e=>({fontFamily:e.actorFontFamily,fontSize:e.actorFontSize,fontWeight:e.actorFontWeight}),"actorFont");o(R6t,"boundMessage");_6t=o(async function(e,t,r,n,i,a){let{startx:s,stopx:l,starty:u,message:h,type:d,sequenceIndex:f,sequenceVisible:p}=t,m=Zt.calculateTextDimensions(h,E0(je)),g=l2();g.x=Math.min(s,l),g.y=u+10,g.width=Math.abs(l-s),g.class="messageText",g.dy="1em",g.text=h,g.fontFamily=je.messageFontFamily,g.fontSize=je.messageFontSize,g.fontWeight=je.messageFontWeight,g.anchor=je.messageAlign,g.valign="center",g.textMargin=je.wrapPadding,g.tspan=!1,ni(g.text)?await Gw(e,g,{startx:s,stopx:l,starty:r}):S0(e,g);let y=m.width,v;if(s===l){let b=p||je.showSequenceNumbers,T=cIe(i,n),k=z6t(i,n),C=s+(b&&(T||k)?10:0);je.rightAngles?v=e.append("path").attr("d",`M ${C},${r} H ${s+xt.getMax(je.width/2,y/2)} V ${r+25} H ${s}`):v=e.append("path").attr("d","M "+C+","+r+" C "+(C+60)+","+(r-10)+" "+(s+60)+","+(r+30)+" "+s+","+(r+20)),lY(i,n)&&aIe(e,i,t,n,s,l,r)}else v=e.append("line"),v.attr("x1",s),v.attr("y1",r),v.attr("x2",l),v.attr("y2",r),lY(i,n)&&aIe(e,i,t,n,s,l,r);d===n.db.LINETYPE.DOTTED||d===n.db.LINETYPE.DOTTED_CROSS||d===n.db.LINETYPE.DOTTED_POINT||d===n.db.LINETYPE.DOTTED_OPEN||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED||d===n.db.LINETYPE.SOLID_TOP_DOTTED||d===n.db.LINETYPE.SOLID_BOTTOM_DOTTED||d===n.db.LINETYPE.STICK_TOP_DOTTED||d===n.db.LINETYPE.STICK_BOTTOM_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED?(v.style("stroke-dasharray","3, 3"),v.attr("class","messageLine1")):v.attr("class","messageLine0"),v.attr("data-et","message"),v.attr("data-id","i"+t.id),v.attr("data-from",t.from),v.attr("data-to",t.to);let x="";if(je.arrowMarkerAbsolute&&(x=Wp(!0)),v.attr("stroke-width",2),v.attr("stroke","none"),v.style("fill","none"),(d===n.db.LINETYPE.SOLID_TOP||d===n.db.LINETYPE.SOLID_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidTopArrowHead)"),(d===n.db.LINETYPE.SOLID_BOTTOM||d===n.db.LINETYPE.SOLID_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===n.db.LINETYPE.STICK_TOP||d===n.db.LINETYPE.STICK_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickTopArrowHead)"),(d===n.db.LINETYPE.STICK_BOTTOM||d===n.db.LINETYPE.STICK_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidTopArrowHead)"),(d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickTopArrowHead)"),(d===n.db.LINETYPE.SOLID||d===n.db.LINETYPE.DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-arrowhead)"),(d===n.db.LINETYPE.BIDIRECTIONAL_SOLID||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(v.attr("marker-start","url("+x+"#"+a+"-arrowhead)"),v.attr("marker-end","url("+x+"#"+a+"-arrowhead)")),(d===n.db.LINETYPE.SOLID_POINT||d===n.db.LINETYPE.DOTTED_POINT)&&v.attr("marker-end","url("+x+"#"+a+"-filled-head)"),(d===n.db.LINETYPE.SOLID_CROSS||d===n.db.LINETYPE.DOTTED_CROSS)&&v.attr("marker-end","url("+x+"#"+a+"-crosshead)"),p||je.showSequenceNumbers){let b=d===n.db.LINETYPE.BIDIRECTIONAL_SOLID||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED,T=d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,k=6,C=lY(i,n),w=s,S=l;b?(ss?S=l-2*k:(S=l-k,w+=i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_DUAL||i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),S+=C?15:0,v.attr("x2",S),v.attr("x1",w)):v.attr("x1",s+k);let R=0,L=s===l,N=s<=l;L?R=t.fromBounds+1:T?R=N?t.toBounds-1:t.fromBounds+1:R=N?t.fromBounds+1:t.toBounds-1;let I="12px",_=f.toString().length;_>5?I="7px":_>3&&(I="9px"),e.append("line").attr("x1",R).attr("y1",r).attr("x2",R).attr("y2",r).attr("stroke-width",0).attr("marker-start","url("+x+"#"+a+"-sequencenumber)"),e.append("text").attr("x",R).attr("y",r+4).attr("font-family","sans-serif").attr("font-size",I).attr("text-anchor","middle").attr("class","sequenceNumber").text(f)}},"drawMessage"),L6t=o(function(e,t,r,n,i,a,s){let l=0,u=0,h,d=0;for(let f of n){let p=t.get(f),m=p.box;h&&h!=m&&(s||Et.models.addBox(h),u+=je.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=i),u+=m.margin),p.width=xt.getMax(p.width||je.width,je.width),p.height=xt.getMax(p.height||je.height,je.height),p.margin=p.margin||je.actorMargin,d=xt.getMax(d,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=Et.getVerticalPos(),Et.insert(p.x,i,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,Et.models.addActor(p)}h&&!s&&Et.models.addBox(h),Et.bumpVerticalPos(d)},"addActorRenderingData"),uY=o(async function(e,t,r,n,i,a,s){if(n){let l=0;Et.bumpVerticalPos(je.boxMargin*2);for(let u of r){let h=t.get(u);h.stopy||(h.stopy=Et.getVerticalPos());let d=await Un.drawActor(e,h,je,!0,i,a,s);l=xt.getMax(l,d)}Et.bumpVerticalPos(l+je.boxMargin)}else for(let l of r){let u=t.get(l);await Un.drawActor(e,u,je,!1,i,a,s)}},"drawActors"),oIe=o(function(e,t,r,n){let i=0,a=0;for(let s of r){let l=t.get(s),u=N6t(l),h=Un.drawPopup(e,l,u,je,je.forceMenus,n);h.height>i&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),lIe=o(function(e){Yn(je,e),e.fontFamily&&(je.actorFontFamily=je.noteFontFamily=je.messageFontFamily=e.fontFamily),e.fontSize&&(je.actorFontSize=je.noteFontSize=je.messageFontSize=e.fontSize),e.fontWeight&&(je.actorFontWeight=je.noteFontWeight=je.messageFontWeight=e.fontWeight)},"setConf"),kL=o(function(e){return Et.activations.filter(function(t){return t.actor===e})},"actorActivations"),sIe=o(function(e,t){let r=t.get(e),n=kL(e),i=n.reduce(function(s,l){return xt.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return xt.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(Hu,"adjustLoopHeightForWrap");o(D6t,"adjustCreatedDestroyedData");I6t=o(async function(e,t,r,n){let{securityLevel:i,sequence:a,look:s,themeVariables:l}=Ae();je=a;let u;i==="sandbox"&&(u=et("#i"+t));let h=i==="sandbox"?et(u.nodes()[0].contentDocument.body):et("body"),d=i==="sandbox"?u.nodes()[0].contentDocument:document;Et.init(),Z.debug(n.db);let f=i==="sandbox"?h.select(`[id="${t}"]`):et(`[id="${t}"]`),p=n.db.getActors(),m=n.db.getCreatedActors(),g=n.db.getDestroyedActors(),y=n.db.getBoxes(),v=n.db.getActorKeys(),x=n.db.getMessages(),b=n.db.getDiagramTitle(),T=n.db.hasAtLeastOneBox(),k=n.db.hasAtLeastOneBoxWithTitle(),C=await M6t(p,x,n);if(je.height=await P6t(p,C,y),Un.insertComputerIcon(f,t),Un.insertDatabaseIcon(f,t),Un.insertClockIcon(f,t),T&&(Et.bumpVerticalPos(je.boxMargin),k&&Et.bumpVerticalPos(y[0].textMaxHeight)),je.hideUnusedParticipants===!0){let z=new Set;x.forEach(W=>{z.add(W.from),z.add(W.to)}),v=v.filter(W=>z.has(W))}let w=new Map(v.map((z,W)=>[p.get(z)?.name??z,W]));L6t(f,p,m,v,0,x,!1);let S=await V6t(x,p,C,n);Un.insertArrowHead(f,t),Un.insertArrowCrossHead(f,t),Un.insertArrowFilledHead(f,t),Un.insertSequenceNumber(f,t),Un.insertSolidTopArrowHead(f,t),Un.insertSolidBottomArrowHead(f,t),Un.insertStickTopArrowHead(f,t),Un.insertStickBottomArrowHead(f,t),s==="neo"&&Un.insertDropShadow(f,je);function R(z,W){let H=Et.endActivation(z);H.starty+18>W&&(H.starty=W-6,W+=12),Un.drawActivation(f,H,W,je,kL(z.from).length,n,w),Et.insert(H.startx,W-10,H.stopx,W)}o(R,"activeEnd");let L=1,N=1,I=[],_=[],A=0;for(let z of x){let W,H,j;switch(z.type){case n.db.LINETYPE.NOTE:Et.resetVerticalPos(),H=z.noteModel,await A6t(f,H,z.id);break;case n.db.LINETYPE.ACTIVE_START:Et.newActivation(z,f,p);break;case n.db.LINETYPE.CENTRAL_CONNECTION:Et.newActivation(z,f,p);break;case n.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:Et.newActivation(z,f,p);break;case n.db.LINETYPE.ACTIVE_END:R(z,Et.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.LOOP_END:W=Et.endLoop(),await Un.drawLoop(f,W,"loop",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.RECT_START:Hu(S,z,je.boxMargin,je.boxMargin,Q=>{let U=Q.message;U||(U=l?.rectBkgColor||l?.actorBkg||"rgba(128, 128, 128, 0.5)"),Et.newLoop(void 0,U)});break;case n.db.LINETYPE.RECT_END:W=Et.endLoop(),_.push(W),Et.models.addLoop(W),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos());break;case n.db.LINETYPE.OPT_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.OPT_END:W=Et.endLoop(),await Un.drawLoop(f,W,"opt",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.ALT_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.ALT_ELSE:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.ALT_END:W=Et.endLoop(),await Un.drawLoop(f,W,"alt",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q)),Et.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.PAR_END:W=Et.endLoop(),await Un.drawLoop(f,W,"par",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.AUTONUMBER:L=z.message.start||L,N=z.message.step||N,z.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.CRITICAL_OPTION:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.CRITICAL_END:W=Et.endLoop(),await Un.drawLoop(f,W,"critical",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.BREAK_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.BREAK_END:W=Et.endLoop(),await Un.drawLoop(f,W,"break",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;default:try{j=z.msgModel,j.starty=Et.getVerticalPos(),j.sequenceIndex=L,j.sequenceVisible=n.db.showSequenceNumbers(),j.id=z.id,j.from=z.from,j.to=z.to;let Q=await R6t(f,j);D6t(z,j,Q,A,p,m,g),I.push({messageModel:j,lineStartY:Q,msg:z}),Et.models.addMessage(j)}catch(Q){Z.error("error while drawing message",Q)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.SOLID_TOP,n.db.LINETYPE.SOLID_BOTTOM,n.db.LINETYPE.STICK_TOP,n.db.LINETYPE.STICK_BOTTOM,n.db.LINETYPE.SOLID_TOP_DOTTED,n.db.LINETYPE.SOLID_BOTTOM_DOTTED,n.db.LINETYPE.STICK_TOP_DOTTED,n.db.LINETYPE.STICK_BOTTOM_DOTTED,n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,n.db.LINETYPE.STICK_ARROW_TOP_REVERSE,n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(z.type)&&(L=Math.round((L+N)*100)/100),A++}Z.debug("createdActors",m),Z.debug("destroyedActors",g),await uY(f,p,v,!1,t,n,w);for(let z of I)await _6t(f,z.messageModel,z.lineStartY,n,z.msg,t);je.mirrorActors&&await uY(f,p,v,!0,t,n,w),_.forEach(z=>Un.drawBackgroundRect(f,z)),oY(f,p,v,je);for(let z of Et.models.boxes){z.height=Et.getVerticalPos()-z.y,Et.insert(z.x,z.y,z.x+z.width,z.height);let W=je.boxMargin*2;z.startx=z.x-W,z.starty=z.y-W*.25,z.stopx=z.startx+z.width+2*W,z.stopy=z.starty+z.height+W*.75,z.stroke="rgb(0,0,0, 0.5)",Un.drawBox(f,z,je)}T&&Et.bumpVerticalPos(je.boxMargin);let M=oIe(f,p,v,d),{bounds:D}=Et.getBounds();D.startx===void 0&&(D.startx=0),D.starty===void 0&&(D.starty=0),D.stopx===void 0&&(D.stopx=0),D.stopy===void 0&&(D.stopy=0);let P=D.stopy-D.starty;P2,p=o(v=>u?-v:v,"adjustValue");e.from===e.to?d=h:(e.activate&&!f&&(d+=p(je.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)||(d+=p(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)&&(h-=p(3)));let m=[i,a,s,l],g=Math.abs(h-d);e.wrap&&e.message&&(e.message=Zt.wrapLabel(e.message,xt.getMax(g+2*je.wrapPadding,je.width),E0(je)));let y=Zt.calculateTextDimensions(e.message,E0(je));return{width:xt.getMax(e.wrap?0:y.width+2*je.wrapPadding,g+2*je.wrapPadding,je.width),height:0,startx:h,stopx:d,starty:0,stopy:0,message:e.message,type:e.type,wrap:e.wrap,fromBounds:Math.min.apply(null,m),toBounds:Math.max.apply(null,m)}},"buildMessageModel"),V6t=o(async function(e,t,r,n){let i={},a=[],s,l,u;for(let h of e){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let f=t.get(h.from?h.from:h.to.actor),p=kL(h.from?h.from:h.to.actor).length,m=f.x+f.width/2+(p-1)*je.activationWidth/2,g={startx:m,stopx:m+je.activationWidth,actor:h.from,enabled:!0};Et.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let f=Et.activations.map(p=>p.actor).lastIndexOf(h.from);Et.activations.splice(f,1).splice(0,1)}break}h.placement!==void 0?(l=await O6t(h,t,n),h.noteModel=l,a.forEach(f=>{s=f,s.from=xt.getMin(s.from,l.startx),s.to=xt.getMax(s.to,l.startx+l.width),s.width=xt.getMax(s.width,Math.abs(s.from-s.to))-je.labelBoxWidth})):(u=G6t(h,t,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(f=>{if(s=f,u.startx===u.stopx){let p=t.get(h.from),m=t.get(h.to);s.from=xt.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=xt.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=xt.getMax(s.width,Math.abs(s.to-s.from))-je.labelBoxWidth}else s.from=xt.getMin(u.startx,s.from),s.to=xt.getMax(u.stopx,s.to),s.width=xt.getMax(s.width,u.width)-je.labelBoxWidth}))}return Et.activations=[],Z.debug("Loop type widths:",i),i},"calculateLoopBounds"),uIe={bounds:Et,drawActors:uY,drawActorsPopup:oIe,setConf:lIe,draw:I6t}});var dIe={};ir(dIe,{diagram:()=>W6t});var W6t,fIe=F(()=>{"use strict";Q8e();aY();eIe();Xt();hIe();W6t={parser:Z8e,get db(){return new TL},renderer:uIe,styles:J8e,init:o(e=>{e.sequence||(e.sequence={}),e.wrap&&(e.sequence.wrap=e.wrap,cb({sequence:{wrap:e.wrap}}))},"init")}});var hY,SL,dY=F(()=>{"use strict";hY=(function(){var e=o(function(we,Me,ve,ne){for(ve=ve||{},ne=we.length;ne--;ve[we[ne]]=Me);return ve},"o"),t=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,26],s=[1,42],l=[1,24],u=[1,25],h=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],T=[1,29],k=[1,30],C=[1,31],w=[1,44],S=[1,46],R=[1,43],L=[1,47],N=[1,9],I=[1,8,9],_=[1,58],A=[1,59],M=[1,60],D=[1,61],P=[1,62],B=[1,63],O=[1,64],$=[1,8,9,41],V=[1,77],G=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],z=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],W=[13,60,86,100,102,103],H=[13,60,73,74,86,100,102,103],j=[13,60,68,69,70,71,72,86,100,102,103],Q=[1,103],U=[1,121],oe=[1,117],te=[1,113],le=[1,119],ie=[1,114],ae=[1,115],Re=[1,116],be=[1,118],Pe=[1,120],Ge=[22,50,60,61,82,86,87,88,89,90],Oe=[1,128],ue=[12,39],ye=[1,8,9,39,41,44,46],ke=[1,8,9,22],ce=[1,153],re=[1,8,9,61],J=[1,8,9,22,50,60,61,82,86,87,88,89,90],se={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"ANNOTATION_START",47:"ANNOTATION_END",48:"CLASS",50:"SPACE",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:o(function(Me,ve,ne,q,he,X,fe){var K=X.length-1;switch(he){case 8:this.$=X[K-1];break;case 9:case 10:case 13:case 15:this.$=X[K];break;case 11:case 14:this.$=X[K-2]+"."+X[K];break;case 12:case 16:this.$=X[K-1]+X[K];break;case 17:case 18:this.$=X[K-1]+"~"+X[K]+"~";break;case 19:q.addRelation(X[K]);break;case 20:X[K-1].title=q.cleanupLabel(X[K]),q.addRelation(X[K-1]);break;case 31:this.$=X[K].trim(),q.setAccTitle(this.$);break;case 32:case 33:this.$=X[K].trim(),q.setAccDescription(this.$);break;case 34:q.addClassesToNamespace(X[K-3],X[K-1][0],X[K-1][1]),q.popNamespace();break;case 35:q.addClassesToNamespace(X[K-4],X[K-1][0],X[K-1][1]),q.popNamespace();break;case 36:this.$=q.addNamespace(X[K]);break;case 37:this.$=q.addNamespace(X[K-1],X[K]);break;case 38:this.$=[[X[K]],[]];break;case 39:this.$=[[X[K-1]],[]];break;case 40:X[K][0].unshift(X[K-2]),this.$=X[K];break;case 41:this.$=[[],[X[K]]];break;case 42:this.$=[[],[X[K-1]]];break;case 43:X[K][1].unshift(X[K-2]),this.$=X[K];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=X[K];break;case 48:q.setCssClass(X[K-2],X[K]);break;case 49:q.addMembers(X[K-3],X[K-1]);break;case 51:q.setCssClass(X[K-5],X[K-3]),q.addMembers(X[K-5],X[K-1]);break;case 52:q.addAnnotation(X[K-3],X[K-1]);break;case 53:q.addAnnotation(X[K-6],X[K-4]),q.addMembers(X[K-6],X[K-1]);break;case 54:q.addAnnotation(X[K-5],X[K-3]);break;case 55:this.$=X[K],q.addClass(X[K]);break;case 56:this.$=X[K-1],q.addClass(X[K-1]),q.setClassLabel(X[K-1],X[K]);break;case 60:q.addAnnotation(X[K],X[K-2]);break;case 61:case 74:this.$=[X[K]];break;case 62:X[K].push(X[K-1]),this.$=X[K];break;case 63:break;case 64:q.addMember(X[K-1],q.cleanupLabel(X[K]));break;case 65:break;case 66:break;case 67:this.$={id1:X[K-2],id2:X[K],relation:X[K-1],relationTitle1:"none",relationTitle2:"none"};break;case 68:this.$={id1:X[K-3],id2:X[K],relation:X[K-1],relationTitle1:X[K-2],relationTitle2:"none"};break;case 69:this.$={id1:X[K-3],id2:X[K],relation:X[K-2],relationTitle1:"none",relationTitle2:X[K-1]};break;case 70:this.$={id1:X[K-4],id2:X[K],relation:X[K-2],relationTitle1:X[K-3],relationTitle2:X[K-1]};break;case 71:this.$=q.addNote(X[K],X[K-1]);break;case 72:this.$=q.addNote(X[K]);break;case 73:this.$=X[K-2],q.defineClass(X[K-1],X[K]);break;case 75:this.$=X[K-2].concat([X[K]]);break;case 76:q.setDirection("TB");break;case 77:q.setDirection("BT");break;case 78:q.setDirection("RL");break;case 79:q.setDirection("LR");break;case 80:this.$={type1:X[K-2],type2:X[K],lineType:X[K-1]};break;case 81:this.$={type1:"none",type2:X[K],lineType:X[K-1]};break;case 82:this.$={type1:X[K-1],type2:"none",lineType:X[K]};break;case 83:this.$={type1:"none",type2:"none",lineType:X[K]};break;case 84:this.$=q.relationType.AGGREGATION;break;case 85:this.$=q.relationType.EXTENSION;break;case 86:this.$=q.relationType.COMPOSITION;break;case 87:this.$=q.relationType.DEPENDENCY;break;case 88:this.$=q.relationType.LOLLIPOP;break;case 89:this.$=q.lineType.LINE;break;case 90:this.$=q.lineType.DOTTED_LINE;break;case 91:case 97:this.$=X[K-2],q.setClickEvent(X[K-1],X[K]);break;case 92:case 98:this.$=X[K-3],q.setClickEvent(X[K-2],X[K-1]),q.setTooltip(X[K-2],X[K]);break;case 93:this.$=X[K-2],q.setLink(X[K-1],X[K]);break;case 94:this.$=X[K-3],q.setLink(X[K-2],X[K-1],X[K]);break;case 95:this.$=X[K-3],q.setLink(X[K-2],X[K-1]),q.setTooltip(X[K-2],X[K]);break;case 96:this.$=X[K-4],q.setLink(X[K-3],X[K-2],X[K]),q.setTooltip(X[K-3],X[K-1]);break;case 99:this.$=X[K-3],q.setClickEvent(X[K-2],X[K-1],X[K]);break;case 100:this.$=X[K-4],q.setClickEvent(X[K-3],X[K-2],X[K-1]),q.setTooltip(X[K-3],X[K]);break;case 101:this.$=X[K-3],q.setLink(X[K-2],X[K]);break;case 102:this.$=X[K-4],q.setLink(X[K-3],X[K-1],X[K]);break;case 103:this.$=X[K-4],q.setLink(X[K-3],X[K-1]),q.setTooltip(X[K-3],X[K]);break;case 104:this.$=X[K-5],q.setLink(X[K-4],X[K-2],X[K]),q.setTooltip(X[K-4],X[K-1]);break;case 105:this.$=X[K-2],q.setCssStyle(X[K-1],X[K]);break;case 106:q.setCssClass(X[K-1],X[K]);break;case 107:this.$=[X[K]];break;case 108:X[K-2].push(X[K]),this.$=X[K-2];break;case 110:this.$=X[K-1]+X[K];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:n,38:22,42:i,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(N,[2,5],{8:[1,48]}),{8:[1,49]},e(I,[2,19],{22:[1,50]}),e(I,[2,21]),e(I,[2,22]),e(I,[2,23]),e(I,[2,24]),e(I,[2,25]),e(I,[2,26]),e(I,[2,27]),e(I,[2,28]),e(I,[2,29]),e(I,[2,30]),{34:[1,51]},{36:[1,52]},e(I,[2,33]),e(I,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:_,69:A,70:M,71:D,72:P,73:B,74:O}),{39:[1,65]},e($,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(I,[2,65]),e(I,[2,66]),{16:69,60:p,86:w,100:S,102:R},{16:39,17:40,19:70,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:71,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:72,60:p,86:w,100:S,102:R,103:L},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:w,100:S,102:R,103:L},{13:V,55:76},{58:78,60:[1,79]},e(I,[2,76]),e(I,[2,77]),e(I,[2,78]),e(I,[2,79]),e(G,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:w,100:S,102:R,103:L}),e(G,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:87,60:p,86:w,100:S,102:R,103:L},e(z,[2,133]),e(z,[2,134]),e(z,[2,135]),e(z,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(N,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:r,37:n,42:i,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:n,38:22,42:i,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L},e(I,[2,20]),e(I,[2,31]),e(I,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:w,100:S,102:R,103:L},{53:92,66:56,67:57,68:_,69:A,70:M,71:D,72:P,73:B,74:O},e(I,[2,64]),{67:93,73:B,74:O},e(W,[2,83],{66:94,68:_,69:A,70:M,71:D,72:P}),e(H,[2,84]),e(H,[2,85]),e(H,[2,86]),e(H,[2,87]),e(H,[2,88]),e(j,[2,89]),e(j,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:i,43:23,48:s,54:h,56:d},{16:100,60:p,86:w,100:S,102:R},{41:[1,102],45:101,51:Q},{16:104,60:p,86:w,100:S,102:R},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:U,50:oe,59:110,60:te,82:le,84:111,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},{60:[1,122]},{13:V,55:123},e($,[2,72]),e($,[2,138]),{22:U,50:oe,59:124,60:te,61:[1,125],82:le,84:111,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},e(Ge,[2,74]),{16:39,17:40,19:126,60:p,86:w,100:S,102:R,103:L},e(G,[2,16]),e(G,[2,17]),e(G,[2,18]),{11:127,12:Oe,39:[2,36]},e(ue,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:w,100:S,102:R,103:L}),e(ue,[2,10]),e(ye,[2,55],{11:131,12:Oe}),e(N,[2,7]),{9:[1,132]},e(ke,[2,67]),{16:39,17:40,19:133,60:p,86:w,100:S,102:R,103:L},{13:[1,135],16:39,17:40,19:134,60:p,86:w,100:S,102:R,103:L},e(W,[2,82],{66:136,68:_,69:A,70:M,71:D,72:P}),e(W,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:i,43:23,48:s,54:h,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e($,[2,48],{39:[1,142]}),{41:[1,143]},e($,[2,50]),{41:[2,61],45:144,51:Q},{47:[1,145]},{16:39,17:40,19:146,60:p,86:w,100:S,102:R,103:L},e(I,[2,91],{13:[1,147]}),e(I,[2,93],{13:[1,149],77:[1,148]}),e(I,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(I,[2,105],{61:ce}),e(re,[2,107],{85:154,22:U,50:oe,60:te,82:le,86:ie,87:ae,88:Re,89:be,90:Pe}),e(J,[2,109]),e(J,[2,111]),e(J,[2,112]),e(J,[2,113]),e(J,[2,114]),e(J,[2,115]),e(J,[2,116]),e(J,[2,117]),e(J,[2,118]),e(J,[2,119]),e(I,[2,106]),e($,[2,71]),e(I,[2,73],{61:ce}),{60:[1,155]},e(G,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:w,100:S,102:R,103:L},e(ue,[2,12]),e(ye,[2,56]),{1:[2,4]},e(ke,[2,69]),e(ke,[2,68]),{16:39,17:40,19:158,60:p,86:w,100:S,102:R,103:L},e(W,[2,80]),e($,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:i,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:i,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:i,43:23,48:s,54:h,56:d},{45:163,51:Q},e($,[2,49]),{41:[2,62]},e($,[2,52],{39:[1,164]}),e(I,[2,60]),e(I,[2,92]),e(I,[2,94]),e(I,[2,95],{77:[1,165]}),e(I,[2,98]),e(I,[2,99],{13:[1,166]}),e(I,[2,101],{13:[1,168],77:[1,167]}),{22:U,50:oe,60:te,82:le,84:169,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},e(J,[2,110]),e(Ge,[2,75]),{14:[1,170]},e(ue,[2,11]),e(ke,[2,70]),e($,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:Q},e(I,[2,96]),e(I,[2,100]),e(I,[2,102]),e(I,[2,103],{77:[1,174]}),e(re,[2,108],{85:154,22:U,50:oe,60:te,82:le,86:ie,87:ae,88:Re,89:be,90:Pe}),e(ye,[2,8]),e($,[2,51]),{41:[1,175]},e($,[2,54]),e(I,[2,104]),e($,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:o(function(Me,ve){if(ve.recoverable)this.trace(Me);else{var ne=new Error(Me);throw ne.hash=ve,ne}},"parseError"),parse:o(function(Me){var ve=this,ne=[0],q=[],he=[null],X=[],fe=this.table,K="",qe=0,_e=0,Be=0,Ne=2,He=1,$e=X.slice.call(arguments,1),Xe=Object.create(this.lexer),Fe={yy:{}};for(var Ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ke)&&(Fe.yy[Ke]=this.yy[Ke]);Xe.setInput(Me,Fe.yy),Fe.yy.lexer=Xe,Fe.yy.parser=this,typeof Xe.yylloc>"u"&&(Xe.yylloc={});var xe=Xe.yylloc;X.push(xe);var mt=Xe.options&&Xe.options.ranges;typeof Fe.yy.parseError=="function"?this.parseError=Fe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Le(ot){ne.length=ne.length-2*ot,he.length=he.length-ot,X.length=X.length-ot}o(Le,"popStack");function ft(){var ot;return ot=q.pop()||Xe.lex()||He,typeof ot!="number"&&(ot instanceof Array&&(q=ot,ot=q.pop()),ot=ve.symbols_[ot]||ot),ot}o(ft,"lex");for(var wt,zt,St,At,bt,me,lt={},gt,Ze,Ee,tt;;){if(St=ne[ne.length-1],this.defaultActions[St]?At=this.defaultActions[St]:((wt===null||typeof wt>"u")&&(wt=ft()),At=fe[St]&&fe[St][wt]),typeof At>"u"||!At.length||!At[0]){var at="";tt=[];for(gt in fe[St])this.terminals_[gt]&>>Ne&&tt.push("'"+this.terminals_[gt]+"'");Xe.showPosition?at="Parse error on line "+(qe+1)+`: +`+Xe.showPosition()+` +Expecting `+tt.join(", ")+", got '"+(this.terminals_[wt]||wt)+"'":at="Parse error on line "+(qe+1)+": Unexpected "+(wt==He?"end of input":"'"+(this.terminals_[wt]||wt)+"'"),this.parseError(at,{text:Xe.match,token:this.terminals_[wt]||wt,line:Xe.yylineno,loc:xe,expected:tt})}if(At[0]instanceof Array&&At.length>1)throw new Error("Parse Error: multiple actions possible at state: "+St+", token: "+wt);switch(At[0]){case 1:ne.push(wt),he.push(Xe.yytext),X.push(Xe.yylloc),ne.push(At[1]),wt=null,zt?(wt=zt,zt=null):(_e=Xe.yyleng,K=Xe.yytext,qe=Xe.yylineno,xe=Xe.yylloc,Be>0&&Be--);break;case 2:if(Ze=this.productions_[At[1]][1],lt.$=he[he.length-Ze],lt._$={first_line:X[X.length-(Ze||1)].first_line,last_line:X[X.length-1].last_line,first_column:X[X.length-(Ze||1)].first_column,last_column:X[X.length-1].last_column},mt&&(lt._$.range=[X[X.length-(Ze||1)].range[0],X[X.length-1].range[1]]),me=this.performAction.apply(lt,[K,_e,qe,Fe.yy,At[1],he,X].concat($e)),typeof me<"u")return me;Ze&&(ne=ne.slice(0,-1*Ze*2),he=he.slice(0,-1*Ze),X=X.slice(0,-1*Ze)),ne.push(this.productions_[At[1]][0]),he.push(lt.$),X.push(lt._$),Ee=fe[ne[ne.length-2]][ne[ne.length-1]],ne.push(Ee);break;case 3:return!0}}return!0},"parse")},ge=(function(){var we={EOF:1,parseError:o(function(ve,ne){if(this.yy.parser)this.yy.parser.parseError(ve,ne);else throw new Error(ve)},"parseError"),setInput:o(function(Me,ve){return this.yy=ve||this.yy||{},this._input=Me,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Me=this._input[0];this.yytext+=Me,this.yyleng++,this.offset++,this.match+=Me,this.matched+=Me;var ve=Me.match(/(?:\r\n?|\n).*/g);return ve?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Me},"input"),unput:o(function(Me){var ve=Me.length,ne=Me.split(/(?:\r\n?|\n)/g);this._input=Me+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ve),this.offset-=ve;var q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ne.length-1&&(this.yylineno-=ne.length-1);var he=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ne?(ne.length===q.length?this.yylloc.first_column:0)+q[q.length-ne.length].length-ne[0].length:this.yylloc.first_column-ve},this.options.ranges&&(this.yylloc.range=[he[0],he[0]+this.yyleng-ve]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Me){this.unput(this.match.slice(Me))},"less"),pastInput:o(function(){var Me=this.matched.substr(0,this.matched.length-this.match.length);return(Me.length>20?"...":"")+Me.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Me=this.match;return Me.length<20&&(Me+=this._input.substr(0,20-Me.length)),(Me.substr(0,20)+(Me.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Me=this.pastInput(),ve=new Array(Me.length+1).join("-");return Me+this.upcomingInput()+` +`+ve+"^"},"showPosition"),test_match:o(function(Me,ve){var ne,q,he;if(this.options.backtrack_lexer&&(he={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(he.yylloc.range=this.yylloc.range.slice(0))),q=Me[0].match(/(?:\r\n?|\n).*/g),q&&(this.yylineno+=q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:q?q[q.length-1].length-q[q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Me[0].length},this.yytext+=Me[0],this.match+=Me[0],this.matches=Me,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Me[0].length),this.matched+=Me[0],ne=this.performAction.call(this,this.yy,this,ve,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ne)return ne;if(this._backtrack){for(var X in he)this[X]=he[X];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Me,ve,ne,q;this._more||(this.yytext="",this.match="");for(var he=this._currentRules(),X=0;Xve[0].length)){if(ve=ne,q=X,this.options.backtrack_lexer){if(Me=this.test_match(ne,he[X]),Me!==!1)return Me;if(this._backtrack){ve=!1;continue}else return!1}else if(!this.options.flex)break}return ve?(Me=this.test_match(ve,he[q]),Me!==!1?Me:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ve=this.next();return ve||this.lex()},"lex"),begin:o(function(ve){this.conditionStack.push(ve)},"begin"),popState:o(function(){var ve=this.conditionStack.length-1;return ve>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ve){return ve=this.conditionStack.length-1-Math.abs(ve||0),ve>=0?this.conditionStack[ve]:"INITIAL"},"topState"),pushState:o(function(ve){this.begin(ve)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(ve,ne,q,he){var X=he;switch(q){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:this.popState(),this.less(0);break;case 34:return this.popState(),41;break;case 35:return"EOF_IN_STRUCT";case 36:return 8;case 37:break;case 38:return"EDGE_STATE";case 39:return this.begin("class"),48;break;case 40:return this.popState(),8;break;case 41:break;case 42:return this.popState(),this.popState(),41;break;case 43:return this.begin("class-body"),39;break;case 44:return this.popState(),41;break;case 45:return"EOF_IN_STRUCT";case 46:return"EDGE_STATE";case 47:return"OPEN_IN_STRUCT";case 48:break;case 49:return"MEMBER";case 50:return 83;case 51:return 75;case 52:return 76;case 53:return 78;case 54:return 54;case 55:return 56;case 56:return 46;case 57:return 47;case 58:return 81;case 59:this.popState();break;case 60:return"GENERICTYPE";case 61:this.begin("generic");break;case 62:this.popState();break;case 63:return"BQUOTE_STR";case 64:this.begin("bqstring");break;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 77;case 69:return 69;case 70:return 69;case 71:return 71;case 72:return 71;case 73:return 70;case 74:return 68;case 75:return 72;case 76:return 73;case 77:return 74;case 78:return 22;case 79:return 44;case 80:return 100;case 81:return 18;case 82:return"PLUS";case 83:return 87;case 84:return 61;case 85:return 89;case 86:return 89;case 87:return 90;case 88:return"EQUALS";case 89:return"EQUALS";case 90:return 60;case 91:return 12;case 92:return 14;case 93:return"PUNCTUATION";case 94:return 86;case 95:return 102;case 96:return 50;case 97:return 50;case 98:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,29,34,35,36,37,38,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},namespace:{rules:[26,29,30,31,32,33,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},"class-body":{rules:[26,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},class:{rules:[26,40,41,42,43,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr:{rules:[9,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_title:{rules:[7,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_args:{rules:[22,23,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_name:{rules:[19,20,21,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},href:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},struct:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},generic:{rules:[26,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},bqstring:{rules:[26,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},string:{rules:[24,25,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}};return we})();se.lexer=ge;function Te(){this.yy={}}return o(Te,"Parser"),Te.prototype=se,se.Parser=Te,new Te})();hY.parser=hY;SL=hY});var gIe,Vw,yIe=F(()=>{"use strict";Xt();Vr();gIe=["#","+","~","-",""],Vw=class{static{o(this,"ClassMember")}constructor(t,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=mr(t,Ae());this.parseMember(n)}getDisplayDetails(){let t=this.visibility+qc(this.id);this.memberType==="method"&&(t+=`(${qc(this.parameters.trim())})`,this.returnType&&(t+=" : "+qc(this.returnType))),t=t.trim();let r=this.parseClassifier();return{displayText:t,cssStyle:r}}parseMember(t){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(a){let s=a[1]?a[1].trim():"";if(gIe.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=t.length,a=t.substring(0,1),s=t.substring(i-1);gIe.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=t.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${qc(this.id)}${this.memberType==="method"?`(${qc(this.parameters)})${this.returnType?" : "+qc(this.returnType):""}`:""}`;this.text=n.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var EL,vIe,A0,rx,fY=F(()=>{"use strict";$r();vt();Xt();Vr();Qt();Nn();Hd();yIe();H0();EL="classId-",vIe=0,A0=o(e=>xt.sanitizeText(e,Ae()),"sanitizeText"),rx=class e{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=new Map;this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.namespaceStack=[];this.diagramId="";this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(t=>{let r=Dy();et(t).select("svg").selectAll("g").filter(function(){return et(this).attr("title")!==null}).on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(!l)return;let u=a.currentTarget.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.html(Zs.sanitize(l)).style("left",`${window.scrollX+u.left+u.width/2}px`).style("top",`${window.scrollY+u.bottom+4}px`),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.popNamespace=this.popNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(t){let r=xt.sanitizeText(t,Ae()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=A0(a[0]),n=A0(a[1])}return{className:i,type:n}}setClassLabel(t,r){let n=xt.sanitizeText(t,Ae());r&&(r=A0(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){let r=xt.sanitizeText(t,Ae()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=xt.sanitizeText(n,Ae());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:EL+a+"-"+vIe}),vIe++}addInterface(t,r){let n={id:`interface${this.interfaces.length}`,label:t,classId:r};this.interfaces.push(n)}setDiagramId(t){this.diagramId=t}lookUpDomId(t){let r=xt.sanitizeText(t,Ae());if(this.classes.has(r)){let n=this.classes.get(r).domId;return this.diagramId?`${this.diagramId}-${n}`:n}throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=new Map,this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.namespaceStack=[],this.diagramId="",this.direction="TB",yr()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNote(t){let r=typeof t=="number"?`note${t}`:t;return this.notes.get(r)}getNotes(){return this.notes}addRelation(t){Z.debug("Adding relation: "+JSON.stringify(t));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1===this.relationType.LOLLIPOP&&!r.includes(t.relation.type2)?(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1=`interface${this.interfaces.length-1}`):t.relation.type2===this.relationType.LOLLIPOP&&!r.includes(t.relation.type1)?(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2=`interface${this.interfaces.length-1}`):(this.addClass(t.id1),this.addClass(t.id2)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=xt.sanitizeText(t.relationTitle1.trim(),Ae()),t.relationTitle2=xt.sanitizeText(t.relationTitle2.trim(),Ae()),this.relations.push(t)}addAnnotation(t,r){let n=this.splitClassNameAndType(t).className;this.classes.get(n).annotations.push(r)}addMember(t,r){this.addClass(t);let n=this.splitClassNameAndType(t).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(A0(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new Vw(a,"method")):a&&i.members.push(new Vw(a,"attribute"))}}addMembers(t,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(t,n)))}addNote(t,r){let n=this.notes.size,i={id:`note${n}`,class:r,text:t,index:n};return this.notes.set(i.id,i),i.id}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),A0(t.trim())}setCssClass(t,r){t.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=EL+i),i=this.splitClassNameAndType(i).className;let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(t,r){for(let n of t){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(t,r){t.split(",").forEach(n=>{if(r!==void 0){let i=this.splitClassNameAndType(n).className,a=this.classes.get(i);a&&(a.tooltip=A0(r))}})}getTooltip(t,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,r,n){let i=Ae();t.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=EL+s),s=this.splitClassNameAndType(s).className;let l=this.classes.get(s);l&&(l.link=Zt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=A0(n):l.linkTarget="_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,r,n){t.split(",").forEach(i=>{this.setClickFunc(i,r,n);let a=this.splitClassNameAndType(i).className,s=this.classes.get(a);s&&(s.haveCallback=!0)}),this.setCssClass(t,"clickable")}setClickFunc(t,r,n){let i=xt.sanitizeText(t,Ae());if(Ae().securityLevel!=="loose"||r===void 0)return;let s=this.splitClassNameAndType(i).className;if(this.classes.has(s)){let l=[];if(typeof n=="string"){l=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let u=0;u{let u=this.lookUpDomId(s),h=document.querySelector(`[id="${u}"]`);h!==null&&h.addEventListener("click",()=>{Zt.runFunc(r,...l)},!1)})}}bindFunctions(t){this.functions.forEach(r=>{r(t)})}escapeHtml(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}getDirection(){return this.direction}setDirection(t){this.direction=t}static resolveQualifiedId(t,r){let n=r.at(-1);return n?`${n}.${t}`:t}static getAncestorIds(t){let r=t.split("."),n=new Array(r.length);n[0]=r[0];for(let i=1;i0?a[s-1]:void 0,h=s===a.length-1,d=h&&r?r:i[s];this.namespaces.has(l)?h&&(this.namespaces.get(l).explicit=!0):this.namespaces.set(l,this.createNamespaceNode(l,d,u,h)),u&&this.linkParentChild(u,l)}return n}popNamespace(){this.namespaceStack.pop()}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,r,n){if(this.namespaces.has(t)){for(let i of r){let{className:a}=this.splitClassNameAndType(i),s=this.getClass(a);s.parent=t,this.namespaces.get(t).classes.set(a,s)}for(let i of n){let a=this.getNote(i);a.parent=t,this.namespaces.get(t).notes.set(i,a)}}}setCssStyle(t,r){let n=this.classes.get(t);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(t){let r;switch(t){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}resolveExplicitAncestor(t){let r=t;for(;r;){let n=this.namespaces.get(r);if(!n)return;if(n.explicit)return r;r=n.parent}}getData(){let t=[],r=[],n=Ae(),i=n.class?.hierarchicalNamespaces??!0;for(let s of this.namespaces.values()){if(!i&&!s.explicit)continue;let l={id:s.id,label:i?s.label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:[],look:n.look,parentId:i?s.parent:void 0};t.push(l)}for(let s of this.classes.values()){let l=i?s.parent:this.resolveExplicitAncestor(s.parent),u={...s,type:void 0,isGroup:!1,parentId:l,look:n.look};t.push(u)}for(let s of this.notes.values()){let l=i?s.parent:this.resolveExplicitAncestor(s.parent),u={id:s.id,label:s.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look,parentId:l,labelType:"markdown"};t.push(u);let h=this.classes.get(s.class)?.id;if(h){let d={id:`edgeNote${s.index}`,start:s.id,end:h,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(d)}}for(let s of this.interfaces){let l={id:s.id,label:s.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};t.push(l)}let a=0;for(let s of this.relations){a++;let l={id:eu(s.id1,s.id2,{prefix:"id",counter:a}),start:s.id1,end:s.id2,type:"normal",label:s.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(s.relation.type1),arrowTypeEnd:this.getArrowMarker(s.relation.type2),startLabelRight:s.relationTitle1==="none"?"":s.relationTitle1,endLabelLeft:s.relationTitle2==="none"?"":s.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:s.style||"",pattern:s.relation.lineType==1?"dashed":"solid",look:n.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:n,direction:this.getDirection()}}}});var Y6t,AL,pY=F(()=>{"use strict";X1();Y6t=o(e=>`g.classGroup text { + fill: ${e.nodeBorder||e.classText}; + stroke: none; + font-family: ${e.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span { + color: ${e.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span { + color: ${e.titleColor}; + } + +.nodeLabel, .edgeLabel { + color: ${e.classText}; +} + +.noteLabel .nodeLabel, .noteLabel .edgeLabel { + color: ${e.noteTextColor}; +} +.edgeLabel .label rect { + fill: ${e.mainBkg}; +} +.label text { + fill: ${e.classText}; +} + +.labelBkg { + background: ${e.mainBkg}; +} +.edgeLabel .label span { + background: ${e.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: ${e.strokeWidth}; + } + + +.divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; +} + +g.classGroup line { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${e.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${e.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth}; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +[id$="-compositionStart"], .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-compositionEnd"], .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-dependencyStart"], .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-dependencyEnd"], .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-extensionStart"], .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-extensionEnd"], .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-aggregationStart"], .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-aggregationEnd"], .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-lollipopStart"], .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-lollipopEnd"], .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; +} + +.edgeLabel[data-look="neo"] { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; +} + ${Eu()} +`,"getStyles"),AL=Y6t});var j6t,X6t,K6t,RL,mY=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();j6t=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),X6t=o(function(e,t){return t.db.getClasses()},"getClasses"),K6t=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing class diagram (v3)",t);let{securityLevel:i,state:a,layout:s}=Ae();n.db.setDiagramId(t);let l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=Su(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=t,await Al(l,u);let h=8;Zt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),RL={getClasses:X6t,draw:K6t,getDir:j6t}});var xIe={};ir(xIe,{diagram:()=>Z6t});var Z6t,bIe=F(()=>{"use strict";dY();fY();pY();mY();Z6t={parser:SL,get db(){return new rx},renderer:RL,styles:AL,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var wIe={};ir(wIe,{diagram:()=>tRt});var tRt,kIe=F(()=>{"use strict";dY();fY();pY();mY();tRt={parser:SL,get db(){return new rx},renderer:RL,styles:AL,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var gY,_L,yY=F(()=>{"use strict";gY=(function(){var e=o(function($,V,G,z){for(G=G||{},z=$.length;z--;G[$[z]]=V);return G},"o"),t=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],T=[1,28],k=[1,29],C=[1,30],w=[1,31],S=[1,32],R=[1,35],L=[1,36],N=[1,37],I=[1,38],_=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],M=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],D=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],P={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(V,G,z,W,H,j,Q){var U=j.length-1;switch(H){case 3:return W.setRootDoc(j[U]),j[U];break;case 4:this.$=[];break;case 5:j[U]!="nl"&&(j[U-1].push(j[U]),this.$=j[U-1]);break;case 6:case 7:this.$=j[U];break;case 8:this.$="nl";break;case 12:this.$=j[U];break;case 13:let ie=j[U-1];ie.description=W.trimColon(j[U]),this.$=ie;break;case 14:this.$={stmt:"relation",state1:j[U-2],state2:j[U]};break;case 15:let ae=W.trimColon(j[U]);this.$={stmt:"relation",state1:j[U-3],state2:j[U-1],description:ae};break;case 19:this.$={stmt:"state",id:j[U-3],type:"default",description:"",doc:j[U-1]};break;case 20:var oe=j[U],te=j[U-2].trim();if(j[U].match(":")){var le=j[U].split(":");oe=le[0],te=[te,le[1]]}this.$={stmt:"state",id:oe,type:"default",description:te};break;case 21:this.$={stmt:"state",id:j[U-3],type:"default",description:j[U-5],doc:j[U-1]};break;case 22:this.$={stmt:"state",id:j[U],type:"fork"};break;case 23:this.$={stmt:"state",id:j[U],type:"join"};break;case 24:this.$={stmt:"state",id:j[U],type:"choice"};break;case 25:this.$={stmt:"state",id:W.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:j[U-1].trim(),note:{position:j[U-2].trim(),text:j[U].trim()}};break;case 29:this.$=j[U].trim(),W.setAccTitle(this.$);break;case 30:case 31:this.$=j[U].trim(),W.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:j[U-3],url:j[U-2],tooltip:j[U-1]};break;case 33:this.$={stmt:"click",id:j[U-3],url:j[U-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:j[U-1].trim(),classes:j[U].trim()};break;case 36:this.$={stmt:"style",id:j[U-1].trim(),styleClass:j[U].trim()};break;case 37:this.$={stmt:"applyClass",id:j[U-1].trim(),styleClass:j[U].trim()};break;case 38:W.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:W.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:W.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:W.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:j[U].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:j[U-2].trim(),classes:[j[U].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:j[U-2].trim(),classes:[j[U].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:t,5:r,6:n},{1:[3]},{3:5,4:t,5:r,6:n},{3:6,4:t,5:r,6:n},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,7]),e(A,[2,8]),e(A,[2,9]),e(A,[2,10]),e(A,[2,11]),e(A,[2,12],{14:[1,40],15:[1,41]}),e(A,[2,16]),{18:[1,42]},e(A,[2,18],{20:[1,43]}),{23:[1,44]},e(A,[2,22]),e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(A,[2,28]),{34:[1,49]},{36:[1,50]},e(A,[2,31]),{13:51,24:f,57:_},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(M,[2,44],{58:[1,56]}),e(M,[2,45],{58:[1,57]}),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),e(A,[2,41]),e(A,[2,6]),e(A,[2,13]),{13:58,24:f,57:_},e(A,[2,17]),e(D,i,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(A,[2,29]),e(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(A,[2,14],{14:[1,71]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,72],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(A,[2,34]),e(A,[2,35]),e(A,[2,36]),e(A,[2,37]),e(M,[2,46]),e(M,[2,47]),e(A,[2,15]),e(A,[2,19]),e(D,i,{7:78}),e(A,[2,26]),e(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,81],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,32]),e(A,[2,33]),e(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:o(function(V,G){if(G.recoverable)this.trace(V);else{var z=new Error(V);throw z.hash=G,z}},"parseError"),parse:o(function(V){var G=this,z=[0],W=[],H=[null],j=[],Q=this.table,U="",oe=0,te=0,le=0,ie=2,ae=1,Re=j.slice.call(arguments,1),be=Object.create(this.lexer),Pe={yy:{}};for(var Ge in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ge)&&(Pe.yy[Ge]=this.yy[Ge]);be.setInput(V,Pe.yy),Pe.yy.lexer=be,Pe.yy.parser=this,typeof be.yylloc>"u"&&(be.yylloc={});var Oe=be.yylloc;j.push(Oe);var ue=be.options&&be.options.ranges;typeof Pe.yy.parseError=="function"?this.parseError=Pe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ye(X){z.length=z.length-2*X,H.length=H.length-X,j.length=j.length-X}o(ye,"popStack");function ke(){var X;return X=W.pop()||be.lex()||ae,typeof X!="number"&&(X instanceof Array&&(W=X,X=W.pop()),X=G.symbols_[X]||X),X}o(ke,"lex");for(var ce,re,J,se,ge,Te,we={},Me,ve,ne,q;;){if(J=z[z.length-1],this.defaultActions[J]?se=this.defaultActions[J]:((ce===null||typeof ce>"u")&&(ce=ke()),se=Q[J]&&Q[J][ce]),typeof se>"u"||!se.length||!se[0]){var he="";q=[];for(Me in Q[J])this.terminals_[Me]&&Me>ie&&q.push("'"+this.terminals_[Me]+"'");be.showPosition?he="Parse error on line "+(oe+1)+`: +`+be.showPosition()+` +Expecting `+q.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":he="Parse error on line "+(oe+1)+": Unexpected "+(ce==ae?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(he,{text:be.match,token:this.terminals_[ce]||ce,line:be.yylineno,loc:Oe,expected:q})}if(se[0]instanceof Array&&se.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+ce);switch(se[0]){case 1:z.push(ce),H.push(be.yytext),j.push(be.yylloc),z.push(se[1]),ce=null,re?(ce=re,re=null):(te=be.yyleng,U=be.yytext,oe=be.yylineno,Oe=be.yylloc,le>0&&le--);break;case 2:if(ve=this.productions_[se[1]][1],we.$=H[H.length-ve],we._$={first_line:j[j.length-(ve||1)].first_line,last_line:j[j.length-1].last_line,first_column:j[j.length-(ve||1)].first_column,last_column:j[j.length-1].last_column},ue&&(we._$.range=[j[j.length-(ve||1)].range[0],j[j.length-1].range[1]]),Te=this.performAction.apply(we,[U,te,oe,Pe.yy,se[1],H,j].concat(Re)),typeof Te<"u")return Te;ve&&(z=z.slice(0,-1*ve*2),H=H.slice(0,-1*ve),j=j.slice(0,-1*ve)),z.push(this.productions_[se[1]][0]),H.push(we.$),j.push(we._$),ne=Q[z[z.length-2]][z[z.length-1]],z.push(ne);break;case 3:return!0}}return!0},"parse")},B=(function(){var $={EOF:1,parseError:o(function(G,z){if(this.yy.parser)this.yy.parser.parseError(G,z);else throw new Error(G)},"parseError"),setInput:o(function(V,G){return this.yy=G||this.yy||{},this._input=V,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var V=this._input[0];this.yytext+=V,this.yyleng++,this.offset++,this.match+=V,this.matched+=V;var G=V.match(/(?:\r\n?|\n).*/g);return G?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),V},"input"),unput:o(function(V){var G=V.length,z=V.split(/(?:\r\n?|\n)/g);this._input=V+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-G),this.offset-=G;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var H=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===W.length?this.yylloc.first_column:0)+W[W.length-z.length].length-z[0].length:this.yylloc.first_column-G},this.options.ranges&&(this.yylloc.range=[H[0],H[0]+this.yyleng-G]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(V){this.unput(this.match.slice(V))},"less"),pastInput:o(function(){var V=this.matched.substr(0,this.matched.length-this.match.length);return(V.length>20?"...":"")+V.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var V=this.match;return V.length<20&&(V+=this._input.substr(0,20-V.length)),(V.substr(0,20)+(V.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var V=this.pastInput(),G=new Array(V.length+1).join("-");return V+this.upcomingInput()+` +`+G+"^"},"showPosition"),test_match:o(function(V,G){var z,W,H;if(this.options.backtrack_lexer&&(H={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(H.yylloc.range=this.yylloc.range.slice(0))),W=V[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+V[0].length},this.yytext+=V[0],this.match+=V[0],this.matches=V,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(V[0].length),this.matched+=V[0],z=this.performAction.call(this,this.yy,this,G,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var j in H)this[j]=H[j];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var V,G,z,W;this._more||(this.yytext="",this.match="");for(var H=this._currentRules(),j=0;jG[0].length)){if(G=z,W=j,this.options.backtrack_lexer){if(V=this.test_match(z,H[j]),V!==!1)return V;if(this._backtrack){G=!1;continue}else return!1}else if(!this.options.flex)break}return G?(V=this.test_match(G,H[W]),V!==!1?V:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var G=this.next();return G||this.lex()},"lex"),begin:o(function(G){this.conditionStack.push(G)},"begin"),popState:o(function(){var G=this.conditionStack.length-1;return G>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(G){return G=this.conditionStack.length-1-Math.abs(G||0),G>=0?this.conditionStack[G]:"INITIAL"},"topState"),pushState:o(function(G){this.begin(G)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(G,z,W,H){function j(){let U=z.yytext.indexOf("%%");if(U===0)return!1;if(U>0){let oe=z.yytext.slice(0,U),te=z.yytext.slice(U);te&&G.lexer.unput(te),z.yytext=oe}return!0}o(j,"processId");var Q=H;switch(W){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:break;case 13:return this.pushState("SCALE"),17;break;case 14:return 18;case 15:this.popState();break;case 16:return this.begin("acc_title"),33;break;case 17:return this.popState(),"acc_title_value";break;case 18:return this.begin("acc_descr"),35;break;case 19:return this.popState(),"acc_descr_value";break;case 20:this.begin("acc_descr_multiline");break;case 21:this.popState();break;case 22:return"acc_descr_multiline_value";case 23:return this.pushState("CLASSDEF"),41;break;case 24:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 25:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 26:return this.popState(),43;break;case 27:return this.pushState("CLASS"),48;break;case 28:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 29:return this.popState(),50;break;case 30:return this.pushState("STYLE"),45;break;case 31:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 32:return this.popState(),47;break;case 33:return this.pushState("SCALE"),17;break;case 34:return 18;case 35:this.popState();break;case 36:this.pushState("STATE");break;case 37:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 38:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 39:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 40:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 41:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 42:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 43:return 51;case 44:return 52;case 45:return 53;case 46:return 54;case 47:this.pushState("STATE_STRING");break;case 48:return this.pushState("STATE_ID"),"AS";break;case 49:if(!j())return;return this.popState(),"ID";break;case 50:this.popState();break;case 51:return"STATE_DESCR";case 52:throw new Error('Error: State name must be a single word. Found: "'+z.yytext.trim()+'"');case 53:return 19;case 54:this.popState();break;case 55:return this.popState(),this.pushState("struct"),20;break;case 56:return this.popState(),21;break;case 57:break;case 58:return this.begin("NOTE"),29;break;case 59:return this.popState(),this.pushState("NOTE_ID"),59;break;case 60:return this.popState(),this.pushState("NOTE_ID"),60;break;case 61:this.popState(),this.pushState("FLOATING_NOTE");break;case 62:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 63:break;case 64:return"NOTE_TEXT";case 65:if(!j())return;return this.popState(),"ID";break;case 66:if(!j())return;return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 67:return this.popState(),z.yytext=z.yytext.substr(2).trim(),31;break;case 68:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),31;break;case 69:return 6;case 70:return 6;case 71:return 16;case 72:return 57;case 73:return j()?24:void 0;case 74:return z.yytext=z.yytext.trim(),14;break;case 75:return 15;case 76:return 28;case 77:return 58;case 78:return 5;case 79:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\w+\s+\w+.*?\{)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?\n\s*end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:(?:[^:\n;]|:[^:\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[10,11,12],inclusive:!1},struct:{rules:[10,11,12,23,27,30,36,43,44,45,46,56,57,58,72,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[65],inclusive:!1},FLOATING_NOTE:{rules:[62,63,64],inclusive:!1},NOTE_TEXT:{rules:[67,68],inclusive:!1},NOTE_ID:{rules:[66],inclusive:!1},NOTE:{rules:[59,60,61],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[32],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[31],inclusive:!1},CLASS_STYLE:{rules:[29],inclusive:!1},CLASS:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[26],inclusive:!1},CLASSDEF:{rules:[24,25],inclusive:!1},acc_descr_multiline:{rules:[21,22],inclusive:!1},acc_descr:{rules:[19],inclusive:!1},acc_title:{rules:[17],inclusive:!1},SCALE:{rules:[14,15,34,35],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[49],inclusive:!1},STATE_STRING:{rules:[50,51],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[10,11,12,37,38,39,40,41,42,47,48,52,53,54,55],inclusive:!1},ID:{rules:[10,11,12],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,12,13,16,18,20,23,27,30,33,36,55,58,69,70,71,72,73,74,75,77,78,79],inclusive:!0}}};return $})();P.lexer=B;function O(){this.yy={}}return o(O,"Parser"),O.prototype=P,P.Parser=O,new O})();gY.parser=gY;_L=gY});var Rp,R0,Ww,AIe,RIe,_Ie,_0,LL,vY,xY,bY,TY,DL,IL,LIe,DIe,CY,wY,IIe,MIe,nx,aRt,NIe,kY,sRt,oRt,PIe,OIe,lRt,BIe,cRt,$Ie,SY,EY,FIe,ML,zIe,AY,NL=F(()=>{"use strict";Rp="state",R0="root",Ww="relation",AIe="classDef",RIe="style",_Ie="applyClass",_0="default",LL="divider",vY="fill:none",xY="fill: #333",bY="markdown",TY="normal",DL="rect",IL="rectWithTitle",LIe="stateStart",DIe="stateEnd",CY="divider",wY="roundedWithTitle",IIe="note",MIe="noteGroup",nx="statediagram",aRt="state",NIe=`${nx}-${aRt}`,kY="transition",sRt="note",oRt="note-edge",PIe=`${kY} ${oRt}`,OIe=`${nx}-${sRt}`,lRt="cluster",BIe=`${nx}-${lRt}`,cRt="cluster-alt",$Ie=`${nx}-${cRt}`,SY="parent",EY="note",FIe="state",ML="----",zIe=`${ML}${EY}`,AY=`${ML}${SY}`});function RY(e="",t=0,r="",n=ML){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${FIe}-${e}${i}-${t}`}function PL(e,t,r){if(!t.id||t.id===""||t.id==="")return;t.cssClasses&&(Array.isArray(t.cssCompiledStyles)||(t.cssCompiledStyles=[]),t.cssClasses.split(" ").forEach(i=>{let a=r.get(i);a&&(t.cssCompiledStyles=[...t.cssCompiledStyles??[],...a.styles])}));let n=e.find(i=>i.id===t.id);n?Object.assign(n,t):e.push(t)}function hRt(e){return e?.classes?.join(" ")??""}function dRt(e){return e?.styles??[]}var OL,_p,uRt,GIe,ix,WIe,qIe=F(()=>{"use strict";Xt();vt();Vr();NL();OL=new Map,_p=0;o(RY,"stateDomId");uRt=o((e,t,r,n,i,a,s,l)=>{Z.trace("items",t),t.forEach(u=>{switch(u.stmt){case Rp:ix(e,u,r,n,i,a,s,l);break;case _0:ix(e,u,r,n,i,a,s,l);break;case Ww:{ix(e,u.state1,r,n,i,a,s,l),ix(e,u.state2,r,n,i,a,s,l);let h=s==="neo",d={id:"edge"+_p,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:h?"arrow_barb_neo":"arrow_barb",style:vY,labelStyle:"",label:xt.sanitizeText(u.description??"",Ae()),arrowheadStyle:xY,labelpos:"c",labelType:bY,thickness:TY,classes:kY,look:s};i.push(d),_p++}break}})},"setupDoc"),GIe=o((e,t="TB")=>{let r=t;if(e.doc)for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(PL,"insertOrUpdateNode");o(hRt,"getClassesFromDbInfo");o(dRt,"getStylesFromDbInfo");ix=o((e,t,r,n,i,a,s,l)=>{let u=t.id,h=r.get(u),d=hRt(h),f=dRt(h),p=Ae();if(Z.info("dataFetcher parsedItem",t,h,f),u!=="root"){let m=DL;t.start===!0?m=LIe:t.start===!1&&(m=DIe),t.type!==_0&&(m=t.type),OL.get(u)||OL.set(u,{id:u,shape:m,description:xt.sanitizeText(u,p),cssClasses:`${d} ${NIe}`,cssStyles:f});let g=OL.get(u);t.description&&(Array.isArray(g.description)?(g.shape=IL,g.description.push(t.description)):g.description?.length&&g.description.length>0?(g.shape=IL,g.description===u?g.description=[t.description]:g.description=[g.description,t.description]):(g.shape=DL,g.description=t.description),g.description=xt.sanitizeTextOrArray(g.description,p)),g.description?.length===1&&g.shape===IL&&(g.type==="group"?g.shape=wY:g.shape=DL),!g.type&&t.doc&&(Z.info("Setting cluster for XCX",u,GIe(t)),g.type="group",g.isGroup=!0,g.dir=GIe(t),g.explicitDir=t.doc.some(v=>v.stmt==="dir"),g.shape=t.type===LL?CY:wY,g.cssClasses=`${g.cssClasses} ${BIe} ${a?$Ie:""}`);let y={labelStyle:"",shape:g.shape,label:g.description,cssClasses:g.cssClasses,cssCompiledStyles:[],cssStyles:g.cssStyles,id:u,dir:g.dir,domId:RY(u,_p),type:g.type,isGroup:g.type==="group",padding:8,rx:10,ry:10,look:s,labelType:"markdown"};if(y.shape===CY&&(y.label=""),e&&e.id!=="root"&&(Z.trace("Setting node ",u," to be child of its parent ",e.id),y.parentId=e.id),y.centerLabel=!0,t.note){let v={labelStyle:"",shape:IIe,label:t.note.text,labelType:"markdown",cssClasses:OIe,cssStyles:[],cssCompiledStyles:[],id:u+zIe+"-"+_p,domId:RY(u,_p,EY),type:g.type,isGroup:g.type==="group",padding:p.flowchart?.padding,look:s,position:t.note.position},x=u+AY,b={labelStyle:"",shape:MIe,label:t.note.text,cssClasses:g.cssClasses,cssStyles:[],id:u+AY,domId:RY(u,_p,SY),type:"group",isGroup:!0,padding:16,look:s,position:t.note.position};_p++,b.id=x,v.parentId=x,PL(n,b,l),PL(n,v,l),PL(n,y,l);let T=u,k=v.id;t.note.position==="left of"&&(T=v.id,k=u),i.push({id:T+"-"+k,start:T,end:k,arrowhead:"none",arrowTypeEnd:"",style:vY,labelStyle:"",classes:PIe,arrowheadStyle:xY,labelpos:"c",labelType:bY,thickness:TY,look:s})}else PL(n,y,l)}t.doc&&(Z.trace("Adding nodes children "),uRt(t,t.doc,r,n,i,!a,s,l))},"dataFetcher"),WIe=o(()=>{OL.clear(),_p=0},"reset")});var LY,fRt,pRt,HIe,DY=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();NL();LY=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),fRt=o(function(e,t){return t.db.getClasses()},"getClasses"),pRt=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:i,state:a,layout:s}=Ae();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,Ae().look==="neo"?l.markers=["barbNeo"]:l.markers=["barb"],l.diagramId=t,await Al(l,u);let d=8;try{(typeof n.db.getLinks=="function"?n.db.getLinks():new Map).forEach((p,m)=>{let g=typeof m=="string"?m:typeof m?.id=="string"?m.id:"",y=l.nodes.find(C=>C.id===g);if(!g){Z.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(m));return}let v=u.node()?.querySelectorAll("g.node, g.rough-node"),x;if(v?.forEach(C=>{let w=C.textContent?.trim();(C.id===y?.domId||w===g)&&(x=C)}),!x){Z.warn("\u26A0\uFE0F Could not find node matching text:",g);return}let b=x.parentNode;if(!b){Z.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",g);return}let T=document.createElementNS("http://www.w3.org/2000/svg","a"),k=p.url.replace(/^"+|"+$/g,"");if(T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",k),T.setAttribute("target","_blank"),p.tooltip){let C=p.tooltip.replace(/^"+|"+$/g,"");T.setAttribute("title",C),x.setAttribute("title",C)}b.replaceChild(T,x),T.appendChild(x),Z.info("\u{1F517} Wrapped node in
    tag for:",g,p.url)})}catch(f){Z.error("\u274C Error injecting clickable links:",f)}Zt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,d,nx,a?.useMaxWidth??!0)},"draw"),HIe={getClasses:fRt,draw:pRt,getDir:LY}});var Ys,YIe,jIe,BL,Nl,$L=F(()=>{"use strict";$r();H0();Xt();vt();Qt();Vr();Nn();Hd();qIe();DY();NL();Ys={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},YIe=o(()=>new Map,"newClassesList"),jIe=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),BL=o(e=>JSON.parse(JSON.stringify(e)),"clone"),Nl=class{constructor(t){this.version=t;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=YIe();this.documents={root:jIe()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.funs=[];this.getAccTitle=Ar;this.setAccTitle=kr;this.getAccDescription=_r;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this),this.bindFunctions=this.bindFunctions.bind(this)}static{o(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(let i of Array.isArray(t)?t:t.doc)switch(i.stmt){case Rp:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case Ww:this.addRelation(i.state1,i.state2,i.description);break;case AIe:this.addStyleClass(i.id.trim(),i.classes);break;case RIe:this.handleStyleDef(i);break;case _Ie:this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip);break}let r=this.getStates(),n=Ae();WIe(),ix(void 0,this.getRootDocV2(),r,this.nodes,this.edges,!0,n.look,this.classes);for(let i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){let r=t.id.trim().split(","),n=t.styleClass.split(",");for(let i of r){let a=this.getState(i);if(!a){let s=i.trim();this.addState(s),a=this.getState(s)}a&&(a.styles=n.map(s=>s.replace(/;/g,"")?.trim()))}}setRootDoc(t){Z.info("Setting root doc",t),this.rootDoc=t,this.version===1?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,r,n){if(r.stmt===Ww){this.docTranslator(t,r.state1,!0),this.docTranslator(t,r.state2,!1);return}if(r.stmt===Rp&&(r.id===Ys.START_NODE?(r.id=t.id+(n?"_start":"_end"),r.start=n):r.id=r.id.trim()),r.stmt!==R0&&r.stmt!==Rp||!r.doc)return;let i=[],a=[];for(let s of r.doc)if(s.type===LL){let l=BL(s);l.doc=BL(a),i.push(l),a=[]}else a.push(s);if(i.length>0&&a.length>0){let s={stmt:Rp,id:hP(),type:"divider",doc:BL(a)};i.push(BL(s)),r.doc=i}r.doc.forEach(s=>this.docTranslator(r,s,!0))}getRootDocV2(){return this.docTranslator({id:R0,stmt:R0},{id:R0,stmt:R0,doc:this.rootDoc},!0),{id:R0,doc:this.rootDoc}}addState(t,r=_0,n=void 0,i=void 0,a=void 0,s=void 0,l=void 0,u=void 0){let h=t?.trim();if(!this.currentDocument.states.has(h))Z.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:Rp,id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]});else{let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.doc||(d.doc=n),d.type||(d.type=r)}if(i&&(Z.info("Setting state description",h,i),(Array.isArray(i)?i:[i]).forEach(f=>this.addDescription(h,f.trim()))),a){let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.note=a,d.note.text=xt.sanitizeText(d.note.text,Ae())}s&&(Z.info("Setting state classes",h,s),(Array.isArray(s)?s:[s]).forEach(f=>this.setCssClass(h,f.trim()))),l&&(Z.info("Setting state styles",h,l),(Array.isArray(l)?l:[l]).forEach(f=>this.setStyle(h,f.trim()))),u&&(Z.info("Setting state styles",h,l),(Array.isArray(u)?u:[u]).forEach(f=>this.setTextStyle(h,f.trim())))}clear(t){this.nodes=[],this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.documents={root:jIe()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=YIe(),t||(this.links=new Map,yr())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){Z.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,r,n){this.links.set(t,{url:r,tooltip:n}),Z.warn("Adding link",t,r,n)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===Ys.START_NODE?(this.startEndCount++,`${Ys.START_TYPE}${this.startEndCount}`):t}startTypeIfNeeded(t="",r=_0){return t===Ys.START_NODE?Ys.START_TYPE:r}endIdIfNeeded(t=""){return t===Ys.END_NODE?(this.startEndCount++,`${Ys.END_TYPE}${this.startEndCount}`):t}endTypeIfNeeded(t="",r=_0){return t===Ys.END_NODE?Ys.END_TYPE:r}addRelationObjs(t,r,n=""){let i=this.startIdIfNeeded(t.id.trim()),a=this.startTypeIfNeeded(t.id.trim(),t.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:xt.sanitizeText(n,Ae())})}addRelation(t,r,n){if(typeof t=="object"&&typeof r=="object")this.addRelationObjs(t,r,n);else if(typeof t=="string"&&typeof r=="string"){let i=this.startIdIfNeeded(t.trim()),a=this.startTypeIfNeeded(t),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:n?xt.sanitizeText(n,Ae()):void 0})}}addDescription(t,r){let n=this.currentDocument.states.get(t),i=r.startsWith(":")?r.replace(":","").trim():r;n?.descriptions?.push(xt.sanitizeText(i,Ae()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,r=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});let n=this.classes.get(t);r&&n&&r.split(Ys.STYLECLASS_SEP).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(Ys.COLOR_KEYWORD).exec(i)){let l=a.replace(Ys.FILL_KEYWORD,Ys.BG_FILL).replace(Ys.COLOR_KEYWORD,Ys.FILL_KEYWORD);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setupToolTips(t){let r=Dy();et(t).select("svg").selectAll("g.node, g.rough-node").on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(l===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(Zs.sanitize(l)),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})}setCssClass(t,r){t.split(",").forEach(n=>{let i=this.getState(n);if(!i){let a=n.trim();this.addState(a),i=this.getState(a)}i?.classes?.push(r)})}setStyle(t,r){this.getState(t)?.styles?.push(r)}setTextStyle(t,r){this.getState(t)?.textStyles?.push(r)}bindFunctions(t){this.funs.forEach(r=>{r(t)})}getDirectionStatement(){return this.rootDoc.find(t=>t.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){let r=this.getDirectionStatement();r?r.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){let t=Ae();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:LY(this.getRootDocV2())}}getConfig(){return Ae().state}}});var gRt,FL,IY=F(()=>{"use strict";gRt=o(e=>` +defs [id$="-barbEnd"] { + fill: ${e.transitionColor}; + stroke: ${e.transitionColor}; + } +g.stateGroup text { + fill: ${e.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${e.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${e.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; +} + +g.stateGroup line { + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth||1}; +} + +.transition { + stroke: ${e.transitionColor}; + stroke-width: ${e.strokeWidth||1}; + fill: none; +} + +.stateGroup .composit { + fill: ${e.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${e.noteBorderColor}; + fill: ${e.noteBkgColor}; + + text { + fill: ${e.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${e.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${e.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; +} +.edgeLabel .label text { + fill: ${e.transitionLabelColor||e.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${e.transitionLabelColor||e.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${e.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${e.specialStateColor}; + stroke: ${e.specialStateColor}; +} + +.node .fork-join { + fill: ${e.specialStateColor}; + stroke: ${e.specialStateColor}; +} + +.node circle.state-end { + fill: ${e.innerEndBackground}; + stroke: ${e.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${e.compositeBackground||e.background}; + // stroke: ${e.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${e.stateBkg||e.mainBkg}; + stroke: ${e.stateBorder||e.nodeBorder}; + stroke-width: ${e.strokeWidth||1}px; +} +.node polygon { + fill: ${e.mainBkg}; + stroke: ${e.stateBorder||e.nodeBorder};; + stroke-width: ${e.strokeWidth||1}px; +} +[id$="-barbEnd"] { + fill: ${e.lineColor}; +} + +.statediagram-cluster rect { + fill: ${e.compositeTitleBackground}; + stroke: ${e.stateBorder||e.nodeBorder}; + stroke-width: ${e.strokeWidth||1}px; +} + +.cluster-label, .nodeLabel { + color: ${e.stateLabelColor}; + // line-height: 1; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${e.stateBorder||e.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${e.compositeBackground||e.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${e.altBackground?e.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${e.altBackground?e.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${e.noteBkgColor}; + stroke: ${e.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${e.noteBkgColor}; + stroke: ${e.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${e.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${e.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${e.noteTextColor}; +} + +[id$="-dependencyStart"], [id$="-dependencyEnd"] { + fill: ${e.lineColor}; + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth||1}; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; +} + +[data-look="neo"].statediagram-cluster rect { + fill: ${e.mainBkg}; + stroke: ${e.useGradient?"url("+e.svgId+"-gradient)":e.stateBorder||e.nodeBorder}; + stroke-width: ${e.strokeWidth??1}; +} +[data-look="neo"].statediagram-cluster rect.outer { + rx: ${e.radius}px; + ry: ${e.radius}px; + filter: ${e.dropShadow?e.dropShadow.replace("url(#drop-shadow)",`url(${e.svgId}-drop-shadow)`):"none"} +} +`,"getStyles"),FL=gRt});var yRt,vRt,xRt,bRt,KIe,TRt,CRt,wRt,kRt,MY,XIe,ZIe,QIe=F(()=>{"use strict";$r();$L();Qt();Vr();Xt();vt();yRt=o(e=>e.append("circle").attr("class","start-state").attr("r",Ae().state.sizeUnit).attr("cx",Ae().state.padding+Ae().state.sizeUnit).attr("cy",Ae().state.padding+Ae().state.sizeUnit),"drawStartState"),vRt=o(e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Ae().state.textHeight).attr("class","divider").attr("x2",Ae().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),xRt=o((e,t)=>{let r=e.append("text").attr("x",2*Ae().state.padding).attr("y",Ae().state.textHeight+2*Ae().state.padding).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.id),n=r.node().getBBox();return e.insert("rect",":first-child").attr("x",Ae().state.padding).attr("y",Ae().state.padding).attr("width",n.width+2*Ae().state.padding).attr("height",n.height+2*Ae().state.padding).attr("rx",Ae().state.radius),r},"drawSimpleState"),bRt=o((e,t)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*Ae().state.padding).text(m);g||y.attr("dy",Ae().state.textHeight)},"addTspan"),i=e.append("text").attr("x",2*Ae().state.padding).attr("y",Ae().state.textHeight+1.3*Ae().state.padding).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.descriptions[0]).node().getBBox(),a=i.height,s=e.append("text").attr("x",Ae().state.padding).attr("y",a+Ae().state.padding*.4+Ae().state.dividerMargin+Ae().state.textHeight).attr("class","state-description"),l=!0,u=!0;t.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=e.append("line").attr("x1",Ae().state.padding).attr("y1",Ae().state.padding+a+Ae().state.dividerMargin/2).attr("y2",Ae().state.padding+a+Ae().state.dividerMargin/2).attr("class","descr-divider"),d=s.node().getBBox(),f=Math.max(d.width,i.width);return h.attr("x2",f+3*Ae().state.padding),e.insert("rect",":first-child").attr("x",Ae().state.padding).attr("y",Ae().state.padding).attr("width",f+2*Ae().state.padding).attr("height",d.height+a+2*Ae().state.padding).attr("rx",Ae().state.radius),e},"drawDescrState"),KIe=o((e,t,r)=>{let n=Ae().state.padding,i=2*Ae().state.padding,a=e.node().getBBox(),s=a.width,l=a.x,u=e.append("text").attr("x",0).attr("y",Ae().state.titleShift).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.id),d=u.node().getBBox().width+i,f=Math.max(d,s);f===s&&(f=f+i);let p,m=e.node().getBBox();t.doc,p=l-n,d>s&&(p=(s-f)/2+n),Math.abs(l-m.x)s&&(p=l-(d-s)/2);let g=1-Ae().state.textHeight;return e.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",f).attr("height",m.height+Ae().state.textHeight+Ae().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),d<=s&&u.attr("x",l+(f-i)/2-d/2+n),e.insert("rect",":first-child").attr("x",p).attr("y",Ae().state.titleShift-Ae().state.textHeight-Ae().state.padding).attr("width",f).attr("height",Ae().state.textHeight*3).attr("rx",Ae().state.radius),e.insert("rect",":first-child").attr("x",p).attr("y",Ae().state.titleShift-Ae().state.textHeight-Ae().state.padding).attr("width",f).attr("height",m.height+3+2*Ae().state.textHeight).attr("rx",Ae().state.radius),e},"addTitleAndBox"),TRt=o(e=>(e.append("circle").attr("class","end-state-outer").attr("r",Ae().state.sizeUnit+Ae().state.miniPadding).attr("cx",Ae().state.padding+Ae().state.sizeUnit+Ae().state.miniPadding).attr("cy",Ae().state.padding+Ae().state.sizeUnit+Ae().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",Ae().state.sizeUnit).attr("cx",Ae().state.padding+Ae().state.sizeUnit+2).attr("cy",Ae().state.padding+Ae().state.sizeUnit+2)),"drawEndState"),CRt=o((e,t)=>{let r=Ae().state.forkWidth,n=Ae().state.forkHeight;if(t.parentId){let i=r;r=n,n=i}return e.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",Ae().state.padding).attr("y",Ae().state.padding)},"drawForkJoinState"),wRt=o((e,t,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=e.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(xt.lineBreakRegex),u=1.25*Ae().state.noteMargin;for(let h of l){let d=h.trim();if(d.length>0){let f=a.append("tspan");if(f.text(d),u===0){let p=f.node().getBBox();u+=p.height}i+=u,f.attr("x",t+Ae().state.noteMargin),f.attr("y",r+i+1.25*Ae().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),kRt=o((e,t)=>{t.attr("class","state-note");let r=t.append("rect").attr("x",0).attr("y",Ae().state.padding),n=t.append("g"),{textWidth:i,textHeight:a}=wRt(e,0,0,n);return r.attr("height",a+2*Ae().state.noteMargin),r.attr("width",i+Ae().state.noteMargin*2),r},"drawNote"),MY=o(function(e,t){let r=t.id,n={id:r,label:t.id,width:0,height:0},i=e.append("g").attr("id",r).attr("class","stateGroup");t.type==="start"&&yRt(i),t.type==="end"&&TRt(i),(t.type==="fork"||t.type==="join")&&CRt(i,t),t.type==="note"&&kRt(t.note.text,i),t.type==="divider"&&vRt(i),t.type==="default"&&t.descriptions.length===0&&xRt(i,t),t.type==="default"&&t.descriptions.length>0&&bRt(i,t);let a=i.node().getBBox();return n.width=a.width+2*Ae().state.padding,n.height=a.height+2*Ae().state.padding,n},"drawState"),XIe=0,ZIe=o(function(e,t,r){let n=o(function(u){switch(u){case Nl.relationType.AGGREGATION:return"aggregation";case Nl.relationType.EXTENSION:return"extension";case Nl.relationType.COMPOSITION:return"composition";case Nl.relationType.DEPENDENCY:return"dependency"}},"getRelationType");t.points=t.points.filter(u=>!Number.isNaN(u.y));let i=t.points,a=tc().x(function(u){return u.x}).y(function(u){return u.y}).curve(rc),s=e.append("path").attr("d",a(i)).attr("id","edge"+XIe).attr("class","transition"),l="";if(Ae().state.arrowMarkerAbsolute&&(l=Wp(!0)),s.attr("marker-end","url("+l+"#"+n(Nl.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=e.append("g").attr("class","stateLabel"),{x:h,y:d}=Zt.calcLabelPosition(t.points),f=xt.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=f.length;b++){let T=u.append("text").attr("text-anchor","middle").text(f[b]).attr("x",h).attr("y",d+p),k=T.node().getBBox();g=Math.max(g,k.width),y=Math.min(y,k.x),Z.info(k.x,h,d+p),p===0&&(p=T.node().getBBox().height,Z.info("Title height",p,d)),m.push(T)}let v=p*f.length;if(f.length>1){let b=(f.length-1)*p*.5;m.forEach((T,k)=>T.attr("y",d+k*p-b)),v=p*f.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-Ae().state.padding/2).attr("y",d-v/2-Ae().state.padding/2-3.5).attr("width",g+Ae().state.padding).attr("height",v+Ae().state.padding),Z.info(x)}XIe++},"drawEdge")});var tl,NY,SRt,ERt,ARt,RRt,JIe,eMe,tMe=F(()=>{"use strict";$r();q9();qo();vt();Vr();QIe();Xt();$n();NY={},SRt=o(function(){},"setConf"),ERt=o(function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),ARt=o(function(e,t,r,n){tl=Ae().state;let i=Ae().securityLevel,a;i==="sandbox"&&(a=et("#i"+t));let s=i==="sandbox"?et(a.nodes()[0].contentDocument.body):et("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;Z.debug("Rendering diagram "+e);let u=s.select(`[id='${t}']`);ERt(u);let h=n.db.getRootDoc(),d=u.append("g").attr("id",t+"-root");JIe(h,d,void 0,!1,s,l,n);let f=tl.padding,p=u.node().getBBox(),m=p.width+f*2,g=p.height+f*2,y=m*1.75;Wr(u,g,y,tl.useMaxWidth),u.attr("viewBox",`${p.x-tl.padding} ${p.y-tl.padding} `+m+" "+g)},"draw"),RRt=o(e=>e?e.length*tl.fontSizeFactor:1,"getLabelWidth"),JIe=o((e,t,r,n,i,a,s)=>{let l=new on({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let C=k.parentElement,w=0,S=0;C&&(C.parentElement&&(w=C.parentElement.getBBox().width),S=parseInt(C.getAttribute("data-x-shift"),10),Number.isNaN(S)&&(S=0)),k.setAttribute("x1",0-S+8),k.setAttribute("x2",w-S-8)})):Z.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Z.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),ZIe(t,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*tl.padding,x.height=v.height+2*tl.padding,Z.debug("Doc rendered",x,l),x},"renderDoc"),eMe={setConf:SRt,draw:ARt}});var rMe={};ir(rMe,{diagram:()=>_Rt});var _Rt,nMe=F(()=>{"use strict";yY();$L();IY();tMe();_Rt={parser:_L,get db(){return new Nl(1)},renderer:eMe,styles:FL,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var sMe={};ir(sMe,{diagram:()=>MRt});var MRt,oMe=F(()=>{"use strict";yY();$L();IY();DY();MRt={parser:_L,get db(){return new Nl(2)},renderer:HIe,styles:FL,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var PY,uMe,hMe=F(()=>{"use strict";PY=(function(){var e=o(function(f,p,m,g){for(m=m||{},g=f.length;g--;m[f[g]]=p);return m},"o"),t=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var T=x.length-1;switch(v){case 1:return x[T-1];case 2:this.$=[];break;case 3:x[T-1].push(x[T]),this.$=x[T-1];break;case 4:case 5:this.$=x[T];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[T].substr(6)),this.$=x[T].substr(6);break;case 9:this.$=x[T].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[T].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[T].substr(8)),this.$=x[T].substr(8);break;case 13:y.addTask(x[T-1],x[T]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},e(t,[2,5]),e(t,[2,6]),e(t,[2,8]),{13:[1,16]},{15:[1,17]},e(t,[2,11]),e(t,[2,12]),{19:[1,18]},e(t,[2,4]),e(t,[2,9]),e(t,[2,10]),e(t,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,T="",k=0,C=0,w=0,S=2,R=1,L=x.slice.call(arguments,1),N=Object.create(this.lexer),I={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(I.yy[_]=this.yy[_]);N.setInput(p,I.yy),I.yy.lexer=N,I.yy.parser=this,typeof N.yylloc>"u"&&(N.yylloc={});var A=N.yylloc;x.push(A);var M=N.options&&N.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(te){g.length=g.length-2*te,v.length=v.length-te,x.length=x.length-te}o(D,"popStack");function P(){var te;return te=y.pop()||N.lex()||R,typeof te!="number"&&(te instanceof Array&&(y=te,te=y.pop()),te=m.symbols_[te]||te),te}o(P,"lex");for(var B,O,$,V,G,z,W={},H,j,Q,U;;){if($=g[g.length-1],this.defaultActions[$]?V=this.defaultActions[$]:((B===null||typeof B>"u")&&(B=P()),V=b[$]&&b[$][B]),typeof V>"u"||!V.length||!V[0]){var oe="";U=[];for(H in b[$])this.terminals_[H]&&H>S&&U.push("'"+this.terminals_[H]+"'");N.showPosition?oe="Parse error on line "+(k+1)+`: +`+N.showPosition()+` +Expecting `+U.join(", ")+", got '"+(this.terminals_[B]||B)+"'":oe="Parse error on line "+(k+1)+": Unexpected "+(B==R?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(oe,{text:N.match,token:this.terminals_[B]||B,line:N.yylineno,loc:A,expected:U})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+B);switch(V[0]){case 1:g.push(B),v.push(N.yytext),x.push(N.yylloc),g.push(V[1]),B=null,O?(B=O,O=null):(C=N.yyleng,T=N.yytext,k=N.yylineno,A=N.yylloc,w>0&&w--);break;case 2:if(j=this.productions_[V[1]][1],W.$=v[v.length-j],W._$={first_line:x[x.length-(j||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(j||1)].first_column,last_column:x[x.length-1].last_column},M&&(W._$.range=[x[x.length-(j||1)].range[0],x[x.length-1].range[1]]),z=this.performAction.apply(W,[T,C,k,I.yy,V[1],v,x].concat(L)),typeof z<"u")return z;j&&(g=g.slice(0,-1*j*2),v=v.slice(0,-1*j),x=x.slice(0,-1*j)),g.push(this.productions_[V[1]][0]),v.push(W.$),x.push(W._$),Q=b[g[g.length-2]][g[g.length-1]],g.push(Q);break;case 3:return!0}}return!0},"parse")},h=(function(){var f={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+` +`+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(v.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(p[0].length),this.matched+=p[0],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;xm[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[y]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return f})();u.lexer=h;function d(){this.yy={}}return o(d,"Parser"),d.prototype=u,u.Parser=d,new d})();PY.parser=PY;uMe=PY});var ax,OY,qw,Hw,BRt,$Rt,FRt,zRt,GRt,VRt,WRt,dMe,qRt,BY,fMe=F(()=>{"use strict";Xt();Nn();ax="",OY=[],qw=[],Hw=[],BRt=o(function(){OY.length=0,qw.length=0,ax="",Hw.length=0,yr()},"clear"),$Rt=o(function(e){ax=e,OY.push(e)},"addSection"),FRt=o(function(){return OY},"getSections"),zRt=o(function(){let e=dMe(),t=100,r=0;for(;!e&&r{r.people&&e.push(...r.people)}),[...new Set(e)].sort()},"updateActors"),VRt=o(function(e,t){let r=t.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:ax,type:ax,people:a,task:e,score:n};Hw.push(s)},"addTask"),WRt=o(function(e){let t={section:ax,type:ax,description:e,task:e,classes:[]};qw.push(t)},"addTaskOrg"),dMe=o(function(){let e=o(function(r){return Hw[r].processed},"compileTask"),t=!0;for(let[r,n]of Hw.entries())e(r),t=t&&n.processed;return t},"compileTasks"),qRt=o(function(){return GRt()},"getActors"),BY={getConfig:o(()=>Ae().journey,"getConfig"),clear:BRt,setDiagramTitle:Or,getDiagramTitle:Lr,setAccTitle:kr,getAccTitle:Ar,setAccDescription:Rr,getAccDescription:_r,addSection:$Rt,getSections:FRt,getTasks:zRt,addTask:VRt,addTaskOrg:WRt,getActors:qRt}});var HRt,pMe,mMe=F(()=>{"use strict";X1();HRt=o(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${e.textColor} + } + + .legend { + fill: ${e.textColor}; + font-family: ${e.fontFamily}; + } + + .label text { + fill: #333; + } + .label { + color: ${e.textColor} + } + + .face { + ${e.faceColor?`fill: ${e.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${e.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${e.fillType0?`fill: ${e.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${e.fillType0?`fill: ${e.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${e.fillType0?`fill: ${e.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${e.fillType0?`fill: ${e.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${e.fillType0?`fill: ${e.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${e.fillType0?`fill: ${e.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${e.fillType0?`fill: ${e.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${e.fillType0?`fill: ${e.fillType7}`:""}; + } + + .actor-0 { + ${e.actor0?`fill: ${e.actor0}`:""}; + } + .actor-1 { + ${e.actor1?`fill: ${e.actor1}`:""}; + } + .actor-2 { + ${e.actor2?`fill: ${e.actor2}`:""}; + } + .actor-3 { + ${e.actor3?`fill: ${e.actor3}`:""}; + } + .actor-4 { + ${e.actor4?`fill: ${e.actor4}`:""}; + } + .actor-5 { + ${e.actor5?`fill: ${e.actor5}`:""}; + } + ${Eu()} +`,"getStyles"),pMe=HRt});var FY,URt,gMe,yMe,YRt,jRt,$Y,XRt,KRt,vMe,ZRt,sx,xMe=F(()=>{"use strict";$r();Hd();FY=o(function(e,t){return dm(e,t)},"drawRect"),URt=o(function(e,t){let n=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=e.append("g");i.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=ec().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=ec().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(i):t.score<3?s(i):l(i),n},"drawFace"),gMe=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),yMe=o(function(e,t){return kie(e,t)},"drawText"),YRt=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");n.attr("points",r(t.x,t.y,50,20,7)),n.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,yMe(e,t)},"drawLabel"),jRt=o(function(e,t,r){let n=e.append("g"),i=Fa();i.x=t.x,i.y=t.y,i.fill=t.fill,i.width=r.width*t.taskCount+r.diagramMarginX*(t.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+t.num,i.rx=3,i.ry=3,FY(n,i),vMe(r)(t.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),$Y=-1,XRt=o(function(e,t,r,n){let i=t.x+r.width/2,a=e.append("g");$Y++,a.append("line").attr("id",n+"-task"+$Y).attr("x1",i).attr("y1",t.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),URt(a,{cx:i,cy:300+(5-t.score)*30,score:t.score});let l=Fa();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,FY(a,l);let u=t.x+14;t.people.forEach(h=>{let d=t.actors[h].color,f={cx:u,cy:t.y,r:7,fill:d,stroke:"#000",title:h,pos:t.actors[h].position};gMe(a,f),u+=10}),vMe(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),KRt=o(function(e,t){$E(e,t)},"drawBackgroundRect"),vMe=(function(){function e(i,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(p,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=i.split(//gi);for(let v=0;v{let a=dd[i].color,s={cx:20,cy:n,r:7,fill:a,stroke:"#000",pos:dd[i].position};sx.drawCircle(e,s);let l=e.append("text").attr("visibility","hidden").text(i),u=l.node().getBoundingClientRect().width;l.remove();let h=[];if(u<=r)h=[i];else{let d=i.split(" "),f="";l=e.append("text").attr("visibility","hidden"),d.forEach(p=>{let m=f?`${f} ${p}`:p;if(l.text(m),l.node().getBoundingClientRect().width>r){if(f&&h.push(f),f=p,l.text(p),l.node().getBoundingClientRect().width>r){let y="";for(let v of p)y+=v,l.text(y+"-"),l.node().getBoundingClientRect().width>r&&(h.push(y.slice(0,-1)+"-"),y=v);f=y}}else f=m}),f&&h.push(f),l.remove()}h.forEach((d,f)=>{let p={x:40,y:n+7+f*20,fill:"#666",text:d,textMargin:t.boxTextMargin??5},g=sx.drawText(e,p).node().getBoundingClientRect().width;g>zL&&g>t.leftMargin-g&&(zL=g)}),n+=Math.max(20,h.length*20)})}var QRt,dd,zL,Lc,Lp,e_t,Pl,zY,bMe,t_t,GY,TMe=F(()=>{"use strict";$r();xMe();Xt();$n();QRt=o(function(e){Object.keys(e).forEach(function(r){Lc[r]=e[r]})},"setConf"),dd={},zL=0;o(JRt,"drawActorLegend");Lc=Ae().journey,Lp=0,e_t=o(function(e,t,r,n){let i=Ae(),a=i.journey.titleColor,s=i.journey.titleFontSize,l=i.journey.titleFontFamily,u=i.securityLevel,h;u==="sandbox"&&(h=et("#i"+t));let d=u==="sandbox"?et(h.nodes()[0].contentDocument.body):et("body");Pl.init();let f=d.select("#"+t);sx.initGraphics(f,t);let p=n.db.getTasks(),m=n.db.getDiagramTitle(),g=n.db.getActors();for(let k in dd)delete dd[k];let y=0;g.forEach(k=>{dd[k]={color:Lc.actorColours[y%Lc.actorColours.length],position:y},y++}),JRt(f),Lp=Lc.leftMargin+zL,Pl.insert(0,0,Lp,Object.keys(dd).length*50),t_t(f,p,0,t);let v=Pl.getBounds();m&&f.append("text").text(m).attr("x",Lp).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",l);let x=v.stopy-v.starty+2*Lc.diagramMarginY,b=Lp+v.stopx+2*Lc.diagramMarginX;Wr(f,x,b,Lc.useMaxWidth),f.append("line").attr("x1",Lp).attr("y1",Lc.height*4).attr("x2",b-Lp-4).attr("y2",Lc.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#"+t+"-arrowhead)");let T=m?70:0;f.attr("viewBox",`${v.startx} -25 ${b} ${x+T}`),f.attr("preserveAspectRatio","xMinYMin meet"),f.attr("height",x+T+25)},"draw"),Pl={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(e,t,r,n){e[t]===void 0?e[t]=r:e[t]=n(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,n){let i=Ae().journey,a=this,s=0;function l(u){return o(function(d){s++;let f=a.sequenceItems.length-s+1;a.updateVal(d,"starty",t-f*i.boxMargin,Math.min),a.updateVal(d,"stopy",n+f*i.boxMargin,Math.max),a.updateVal(Pl.data,"startx",e-f*i.boxMargin,Math.min),a.updateVal(Pl.data,"stopx",r+f*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(d,"startx",e-f*i.boxMargin,Math.min),a.updateVal(d,"stopx",r+f*i.boxMargin,Math.max),a.updateVal(Pl.data,"starty",t-f*i.boxMargin,Math.min),a.updateVal(Pl.data,"stopy",n+f*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(e,t,r,n){let i=Math.min(e,r),a=Math.max(e,r),s=Math.min(t,n),l=Math.max(t,n);this.updateVal(Pl.data,"startx",i,Math.min),this.updateVal(Pl.data,"starty",s,Math.min),this.updateVal(Pl.data,"stopx",a,Math.max),this.updateVal(Pl.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},zY=Lc.sectionFills,bMe=Lc.sectionColours,t_t=o(function(e,t,r,n){let i=Ae().journey,a="",s=i.height*2+i.diagramMarginY,l=r+s,u=0,h="#CCC",d="black",f=0;for(let[p,m]of t.entries()){if(a!==m.section){h=zY[u%zY.length],f=u%zY.length,d=bMe[u%bMe.length];let y=0,v=m.section;for(let b=p;b(dd[v]&&(y[v]=dd[v]),y),{});m.x=p*i.taskMargin+p*i.width+Lp,m.y=l,m.width=i.diagramMarginX,m.height=i.diagramMarginY,m.colour=d,m.fill=h,m.num=f,m.actors=g,sx.drawTask(e,m,i,n),Pl.insert(m.x,m.y,m.x+m.width+i.taskMargin,450)}},"drawTasks"),GY={setConf:QRt,draw:e_t}});var CMe={};ir(CMe,{diagram:()=>r_t});var r_t,wMe=F(()=>{"use strict";hMe();fMe();mMe();TMe();r_t={parser:uMe,db:BY,renderer:GY,styles:pMe,init:o(e=>{GY.setConf(e.journey),BY.clear()},"init")}});var WY,LMe,DMe=F(()=>{"use strict";WY=(function(){var e=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),t=[6,11,13,14,15,17,19,20,23,24],r=[1,12],n=[1,13],i=[1,14],a=[1,15],s=[1,16],l=[1,19],u=[1,20],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",7:"timeline",8:"timeline_lr",9:"timeline_td",11:"SPACE",13:"NEWLINE",14:"title",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",23:"period",24:"event"},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:o(function(m,g,y,v,x,b,T){var k=b.length-1;switch(x){case 1:return b[k-1];case 3:v.setDirection("LR");break;case 4:v.setDirection("TD");break;case 5:this.$=[];break;case 6:b[k-1].push(b[k]),this.$=b[k-1];break;case 7:case 8:this.$=b[k];break;case 9:case 10:this.$=[];break;case 11:v.getCommonDb().setDiagramTitle(b[k].substr(6)),this.$=b[k].substr(6);break;case 12:this.$=b[k].trim(),v.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=b[k].trim(),v.getCommonDb().setAccDescription(this.$);break;case 15:v.addSection(b[k].substr(8)),this.$=b[k].substr(8);break;case 18:v.addTask(b[k],0,""),this.$=b[k];break;case 19:v.addEvent(b[k].substr(2)),this.$=b[k];break}},"anonymous"),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},e(t,[2,5],{5:6}),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:r,15:n,17:i,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,10],{1:[2,1]}),e(t,[2,6]),{12:21,14:r,15:n,17:i,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,8]),e(t,[2,9]),e(t,[2,11]),{16:[1,22]},{18:[1,23]},e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,7]),e(t,[2,12]),e(t,[2,13])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],T=this.table,k="",C=0,w=0,S=0,R=2,L=1,N=b.slice.call(arguments,1),I=Object.create(this.lexer),_={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(_.yy[A]=this.yy[A]);I.setInput(m,_.yy),_.yy.lexer=I,_.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var M=I.yylloc;b.push(M);var D=I.options&&I.options.ranges;typeof _.yy.parseError=="function"?this.parseError=_.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function P(le){y.length=y.length-2*le,x.length=x.length-le,b.length=b.length-le}o(P,"popStack");function B(){var le;return le=v.pop()||I.lex()||L,typeof le!="number"&&(le instanceof Array&&(v=le,le=v.pop()),le=g.symbols_[le]||le),le}o(B,"lex");for(var O,$,V,G,z,W,H={},j,Q,U,oe;;){if(V=y[y.length-1],this.defaultActions[V]?G=this.defaultActions[V]:((O===null||typeof O>"u")&&(O=B()),G=T[V]&&T[V][O]),typeof G>"u"||!G.length||!G[0]){var te="";oe=[];for(j in T[V])this.terminals_[j]&&j>R&&oe.push("'"+this.terminals_[j]+"'");I.showPosition?te="Parse error on line "+(C+1)+`: +`+I.showPosition()+` +Expecting `+oe.join(", ")+", got '"+(this.terminals_[O]||O)+"'":te="Parse error on line "+(C+1)+": Unexpected "+(O==L?"end of input":"'"+(this.terminals_[O]||O)+"'"),this.parseError(te,{text:I.match,token:this.terminals_[O]||O,line:I.yylineno,loc:M,expected:oe})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+V+", token: "+O);switch(G[0]){case 1:y.push(O),x.push(I.yytext),b.push(I.yylloc),y.push(G[1]),O=null,$?(O=$,$=null):(w=I.yyleng,k=I.yytext,C=I.yylineno,M=I.yylloc,S>0&&S--);break;case 2:if(Q=this.productions_[G[1]][1],H.$=x[x.length-Q],H._$={first_line:b[b.length-(Q||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(Q||1)].first_column,last_column:b[b.length-1].last_column},D&&(H._$.range=[b[b.length-(Q||1)].range[0],b[b.length-1].range[1]]),W=this.performAction.apply(H,[k,w,C,_.yy,G[1],x,b].concat(N)),typeof W<"u")return W;Q&&(y=y.slice(0,-1*Q*2),x=x.slice(0,-1*Q),b=b.slice(0,-1*Q)),y.push(this.productions_[G[1]][0]),x.push(H.$),b.push(H._$),U=T[y[y.length-2]][y[y.length-1]],y.push(U);break;case 3:return!0}}return!0},"parse")},d=(function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+` +`+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 13;case 3:break;case 4:break;case 5:return 8;case 6:return 9;case 7:return 7;case 8:return 14;case 9:return this.begin("acc_title"),15;break;case 10:return this.popState(),"acc_title_value";break;case 11:return this.begin("acc_descr"),17;break;case 12:return this.popState(),"acc_descr_value";break;case 13:this.begin("acc_descr_multiline");break;case 14:this.popState();break;case 15:return"acc_descr_multiline_value";case 16:return 20;case 17:return 24;case 18:return 23;case 19:return 6;case 20:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline[ \t]+LR\b)/i,/^(?:timeline[ \t]+TD\b)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[14,15],inclusive:!1},acc_descr:{rules:[12],inclusive:!1},acc_title:{rules:[10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],inclusive:!0}}};return p})();h.lexer=d;function f(){this.yy={}}return o(f,"Parser"),f.prototype=h,h.Parser=f,new f})();WY.parser=WY;LMe=WY});var UY={};ir(UY,{addEvent:()=>VMe,addSection:()=>$Me,addTask:()=>GMe,addTaskOrg:()=>WMe,clear:()=>PMe,default:()=>h_t,getCommonDb:()=>NMe,getDirection:()=>BMe,getSections:()=>FMe,getTasks:()=>zMe,setDirection:()=>OMe});var ox,MMe,qY,HY,GL,lx,NMe,PMe,OMe,BMe,$Me,FMe,zMe,GMe,VMe,WMe,IMe,h_t,qMe=F(()=>{"use strict";Nn();ox="",MMe=0,qY="LR",HY=[],GL=[],lx=[],NMe=o(()=>lb,"getCommonDb"),PMe=o(function(){HY.length=0,GL.length=0,ox="",lx.length=0,qY="LR",yr()},"clear"),OMe=o(function(e){qY=e},"setDirection"),BMe=o(function(){return qY},"getDirection"),$Me=o(function(e){ox=e,HY.push(e)},"addSection"),FMe=o(function(){return HY},"getSections"),zMe=o(function(){let e=IMe(),t=100,r=0;for(;!e&&rr.id===MMe-1).events.push(e)},"addEvent"),WMe=o(function(e){let t={section:ox,type:ox,description:e,task:e,classes:[]};GL.push(t)},"addTaskOrg"),IMe=o(function(){let e=o(function(r){return lx[r].processed},"compileTask"),t=!0;for(let[r,n]of lx.entries())e(r),t=t&&n.processed;return t},"compileTasks"),h_t={clear:PMe,getCommonDb:NMe,getDirection:BMe,setDirection:OMe,addSection:$Me,getSections:FMe,getTasks:zMe,addTask:GMe,addTaskOrg:WMe,addEvent:VMe}});function jMe(e,t){e.each(function(){var r=et(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let d=0;dt||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var HMe,VL,d_t,f_t,UMe,p_t,m_t,YY,g_t,y_t,v_t,jY,YMe,x_t,b_t,T_t,C_t,fs,XY=F(()=>{"use strict";$r();HMe=0,VL=o(function(e,t){let r=e.append("rect");return r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),r.attr("rx",t.rx),r.attr("ry",t.ry),t.class!==void 0&&r.attr("class",t.class),r},"drawRect"),d_t=o(function(e,t){let n=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=e.append("g");i.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=ec().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=ec().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(i):t.score<3?s(i):l(i),n},"drawFace"),f_t=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),UMe=o(function(e,t){let r=t.text.replace(//gi," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class!==void 0&&n.attr("class",t.class);let i=n.append("tspan");return i.attr("x",t.x+t.textMargin*2),i.text(r),n},"drawText"),p_t=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");n.attr("points",r(t.x,t.y,50,20,7)),n.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,UMe(e,t)},"drawLabel"),m_t=o(function(e,t,r){let n=e.append("g"),i=jY();i.x=t.x,i.y=t.y,i.fill=t.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+t.num,i.rx=3,i.ry=3,VL(n,i),YMe(r)(t.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),YY=-1,g_t=o(function(e,t,r,n){let i=t.x+r.width/2,a=e.append("g");YY++,a.append("line").attr("id",n+"-task"+YY).attr("x1",i).attr("y1",t.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),d_t(a,{cx:i,cy:300+(5-t.score)*30,score:t.score});let l=jY();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,VL(a,l),YMe(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),y_t=o(function(e,t){VL(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},"drawBackgroundRect"),v_t=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),jY=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),YMe=(function(){function e(i,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(p,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=i.split(//gi);for(let v=0;v0?`M0 ${t.height-l} v${-t.height+2*l} q0,-${s},${s},-${s} h${t.width-2*l} q${s},0,${s},${s} v${t.height-l} H0 Z`:`M0 ${t.height-l} v${-(t.height-l)} h${t.width} v${t.height} H0 Z`;e.append("path").attr("id",n+"-node-"+HMe++).attr("class","node-bkg node-"+t.type).attr("d",u),a?.includes("redux")||e.append("line").attr("class","node-line-"+r).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},"defaultBkg"),fs={drawRect:VL,drawCircle:f_t,drawSection:m_t,drawText:UMe,drawLabel:p_t,drawTask:g_t,drawBackgroundRect:y_t,getTextObj:v_t,getNoteRect:jY,initGraphics:x_t,drawNode:b_t,getVirtualNodeHeight:T_t}});var w_t,XMe,k_t,KMe,ZMe=F(()=>{"use strict";$r();XY();vt();Xt();$n();w_t=o(function(e,t,r,n){let i=Ae(),{look:a,theme:s,themeVariables:l}=i,{useGradient:u,gradientStart:h,gradientStop:d}=l,f=i.timeline?.leftMargin??50;Z.debug("timeline",n.db);let p=i.securityLevel,m;p==="sandbox"&&(m=et("#i"+t));let y=(p==="sandbox"?et(m.nodes()[0].contentDocument.body):et("body")).select("#"+t);y.append("g");let v=n.db.getTasks(),x=n.db.getCommonDb().getDiagramTitle();Z.debug("task",v),fs.initGraphics(y,t);let b=n.db.getSections();Z.debug("sections",b);let T=0,k=0,C=0,w=0,S=50+f,R=50;w=50;let L=0,N=!0;b.forEach(function(D){let P={number:L,descr:D,section:L,width:150,padding:20,maxHeight:T},B=fs.getVirtualNodeHeight(y,P,i);Z.debug("sectionHeight before draw",B),T=Math.max(T,B+20)});let I=0,_=0;Z.debug("tasks.length",v.length);for(let[D,P]of v.entries()){let B={number:D,descr:P,section:P.section,width:150,padding:20,maxHeight:k},O=fs.getVirtualNodeHeight(y,B,i);Z.debug("taskHeight before draw",O),k=Math.max(k,O+20),I=Math.max(I,P.events.length);let $=0;for(let V of P.events){let G={descr:V,section:P.section,number:P.section,width:150,padding:20,maxHeight:50};$+=fs.getVirtualNodeHeight(y,G,i)}P.events.length>0&&($+=(P.events.length-1)*10),_=Math.max(_,$)}Z.debug("maxSectionHeight before draw",T),Z.debug("maxTaskHeight before draw",k),b&&b.length>0?b.forEach(D=>{let P=v.filter(V=>V.section===D),B={number:L,descr:D,section:L,width:200*Math.max(P.length,1)-50,padding:20,maxHeight:T};Z.debug("sectionNode",B);let O=y.append("g"),$=fs.drawNode(O,B,L,i,t);Z.debug("sectionNode output",$),O.attr("transform",`translate(${S}, ${w})`),R+=T+50,P.length>0&&XMe(y,P,L,S,R,k,i,I,_,T,!1,t),S+=200*Math.max(P.length,1),R=w,L++}):(N=!1,XMe(y,v,L,S,R,k,i,I,_,T,!0,t));let A=y.node().getBBox();if(Z.debug("bounds",A),x&&y.append("text").text(x).attr("x",a==="neo"?A.x*2+f:A.width/2-f).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),C=N?T+k+150:k+100,y.append("g").attr("class","lineWrapper").append("line").attr("x1",f).attr("y1",C).attr("x2",A.width+3*f).attr("y2",C).attr("stroke-width",4).attr("stroke","black").attr("marker-end",`url(#${t}-arrowhead)`),a==="neo"&&u&&s!=="neutral"){let D=y.select("defs"),B=(D.empty()?y.append("defs"):D).append("linearGradient").attr("id",y.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");B.append("stop").attr("offset","0%").attr("stop-color",h).attr("stop-opacity",1),B.append("stop").attr("offset","100%").attr("stop-color",d).attr("stop-opacity",1)}ul(void 0,y,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),XMe=o(function(e,t,r,n,i,a,s,l,u,h,d,f){for(let p of t){let m={descr:p.task,section:r,number:r,width:150,padding:20,maxHeight:a};Z.debug("taskNode",m);let g=e.append("g").attr("class","taskWrapper"),v=fs.drawNode(g,m,r,s,f).height;if(Z.debug("taskHeight after draw",v),g.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,v),p.events){let x=e.append("g").attr("class","lineWrapper"),b=a;i+=100,b=b+k_t(e,p.events,r,n,i,s,f),i-=100,x.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+100+u+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end",`url(#${f}-arrowhead)`).attr("stroke-dasharray","5,5")}n=n+200,d&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),k_t=o(function(e,t,r,n,i,a,s){let l=0,u=i;i=i+100;for(let h of t){let d={descr:h,section:r,number:r,width:150,padding:20,maxHeight:50};Z.debug("eventNode",d);let f=e.append("g").attr("class","eventWrapper"),m=fs.drawNode(f,d,r,a,s,!0).height;l=l+m,f.attr("transform",`translate(${n}, ${i})`),i=i+10+m}return i=u,l},"drawEvents"),KMe={setConf:o(()=>{},"setConf"),draw:w_t}});var WL,fd,S_t,KY,E_t,tNe,A_t,QMe,rNe,JMe,nNe,R_t,eNe,__t,iNe,aNe=F(()=>{"use strict";XY();vt();Xt();$n();Ka();Qt();WL=200,fd=5,S_t=WL+fd*2,KY=WL+100,E_t=KY+fd*2,tNe=10,A_t=0,QMe=20,rNe=20,JMe=30,nNe=50,R_t=o(function(e,t,r,n){let i=Ae(),a=i.timeline?.leftMargin??50;Z.debug("timeline",n.db);let s=xn(t);s.append("g");let l=n.db.getTasks(),u=n.db.getCommonDb().getDiagramTitle();Z.debug("task",l),fs.initGraphics(s);let h=n.db.getSections();Z.debug("sections",h);let d=0,f=0,p=50+a,m=50,g=m,y=p,v=S_t+rNe,x=E_t+nNe,b=y+v,T=0,k=h&&h.length>0,C=k?b:p+v,w=Math.max(50,v+x-fd*2);h.forEach(function(D){let P={number:T,descr:D,section:T,width:w,padding:fd,maxHeight:d},B=fs.getVirtualNodeHeight(s,P,i);Z.debug("sectionHeight before draw",B),d=Math.max(d,B)});let S=0;Z.debug("tasks.length",l.length);for(let[D,P]of l.entries()){let B={number:D,descr:P,section:P.section,width:WL,padding:fd,maxHeight:f},O=fs.getVirtualNodeHeight(s,B,i);Z.debug("taskHeight before draw",O),f=Math.max(f,O);let $=0;for(let V of P.events){let G={descr:V,section:P.section,number:P.section,width:KY,padding:fd,maxHeight:50};$+=fs.getVirtualNodeHeight(s,G,i)}P.events.length>0&&($+=(P.events.length-1)*tNe),S=Math.max(S,$)+A_t}Z.debug("maxSectionHeight before draw",d),Z.debug("maxTaskHeight before draw",f);let L=Math.max(f,S)+JMe;k?h.forEach(D=>{let P=l.filter(H=>H.section===D),B={number:T,descr:D,section:T,width:w,padding:fd,maxHeight:d};Z.debug("sectionNode",B);let O=s.append("g"),$=fs.drawNode(O,B,T,i);Z.debug("sectionNode output",$);let V=C-v;O.attr("transform",`translate(${V}, ${m})`);let G=m+$.height+QMe;P.length>0&&eNe(s,P,T,C,G,f,i,L,!1);let z=P.length,W=$.height+QMe+L*Math.max(z,1)-(z>0?JMe*2:0);m+=W,T++}):eNe(s,l,T,C,m,f,i,L,!0);let N=s.node()?.getBBox();if(!N)throw new Error("bbox not found");if(Z.debug("bounds",N),u){if(s.append("text").text(u).attr("x",N.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),N=s.node()?.getBBox(),!N)throw new Error("bbox not found");Z.debug("bounds after title",N)}let[I]=As(i.fontSize),_=(I??16)*2,A=(I??16)*.5+20,M=s.append("g").attr("class","lineWrapper");M.append("line").attr("x1",C).attr("y1",g-_).attr("x2",C).attr("y2",N.y+N.height+A).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),M.lower(),ul(void 0,s,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),eNe=o(function(e,t,r,n,i,a,s,l,u){for(let h of t){let d={descr:h.task,section:r,number:r,width:WL,padding:fd,maxHeight:a};Z.debug("taskNode",d);let f=e.append("g").attr("class","taskWrapper"),p=fs.drawNode(f,d,r,s),m=p.height;Z.debug("taskHeight after draw",m);let g=n-rNe-p.width;if(f.attr("transform",`translate(${g}, ${i})`),a=Math.max(a,m),h.events&&h.events.length>0){let y=i,v=n+nNe;__t(e,h.events,r,n,v,y,s)}i=i+l,u&&!s.timeline?.disableMulticolor&&r++}},"drawTasks"),__t=o(function(e,t,r,n,i,a,s){let l=a;for(let u of t){let h={descr:u,section:r,number:r,width:KY,padding:fd,maxHeight:0};Z.debug("eventNode",h);let d=e.append("g").attr("class","eventWrapper"),p=fs.drawNode(d,h,r,s).height;d.attr("transform",`translate(${i}, ${l})`);let m=e.append("g").attr("class","lineWrapper"),g=l+p/2;m.append("line").attr("x1",n).attr("y1",g).attr("x2",i).attr("y2",g).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5"),l=l+p+tNe}return l-a},"drawEvents"),iNe={setConf:o(()=>{},"setConf"),draw:R_t}});var L_t,D_t,I_t,sNe,oNe=F(()=>{"use strict";zi();ur();L_t=o(e=>{let{theme:t}=_t(),r=t?.includes("dark"),n=t?.includes("color"),i=e.svgId?.replace(/^#/,"")??"",a=i?`url(#${i}-drop-shadow)`:e.dropShadow??"none",s="";for(let l=0;l{let t="";for(let r=0;r{let{theme:t}=_t(),r=t?.includes("redux"),n=t==="neutral",i=e.svgId?.replace(/^#/,"")??"",a="";if(e.useGradient&&i&&e.THEME_COLOR_LIMIT&&!n)for(let s=0;sN_t});var M_t,N_t,cNe=F(()=>{"use strict";DMe();qMe();ZMe();aNe();oNe();M_t={setConf:o(()=>{},"setConf"),draw:o((e,t,r,n)=>(n?.db?.getDirection?.()??"LR")==="TD"?iNe.draw(e,t,r,n):KMe.draw(e,t,r,n),"draw")},N_t={db:UY,renderer:M_t,parser:LMe,styles:sNe}});var ZY,dNe,fNe=F(()=>{"use strict";ZY=(function(){var e=o(function(k,C,w,S){for(w=w||{},S=k.length;S--;w[k[S]]=C);return w},"o"),t=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(C,w,S,R,L,N,I){var _=N.length-1;switch(L){case 6:case 7:return R;case 8:R.getLogger().trace("Stop NL ");break;case 9:R.getLogger().trace("Stop EOF ");break;case 11:R.getLogger().trace("Stop NL2 ");break;case 12:R.getLogger().trace("Stop EOF2 ");break;case 15:R.getLogger().info("Node: ",N[_].id),R.addNode(N[_-1].length,N[_].id,N[_].descr,N[_].type);break;case 16:R.getLogger().trace("Icon: ",N[_]),R.decorateNode({icon:N[_]});break;case 17:case 21:R.decorateNode({class:N[_]});break;case 18:R.getLogger().trace("SPACELIST");break;case 19:R.getLogger().trace("Node: ",N[_].id),R.addNode(0,N[_].id,N[_].descr,N[_].type);break;case 20:R.decorateNode({icon:N[_]});break;case 25:R.getLogger().trace("node found ..",N[_-2]),this.$={id:N[_-1],descr:N[_-1],type:R.getType(N[_-2],N[_])};break;case 26:this.$={id:N[_],descr:N[_],type:R.nodeType.DEFAULT};break;case 27:R.getLogger().trace("node found ..",N[_-3]),this.$={id:N[_-3],descr:N[_-1],type:R.getType(N[_-2],N[_])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:d,10:23,11:f},e(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),e(p,[2,18]),e(p,[2,19]),e(p,[2,20]),e(p,[2,21]),e(p,[2,23]),e(p,[2,24]),e(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:d,10:32,11:f},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},e(m,[2,14],{7:g,11:y}),e(v,[2,8]),e(v,[2,9]),e(v,[2,10]),e(p,[2,15]),e(p,[2,16]),e(p,[2,17]),{20:[1,35]},{21:[1,36]},e(m,[2,13],{7:g,11:y}),e(v,[2,11]),e(v,[2,12]),{21:[1,37]},e(p,[2,25]),e(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,w){if(w.recoverable)this.trace(C);else{var S=new Error(C);throw S.hash=w,S}},"parseError"),parse:o(function(C){var w=this,S=[0],R=[],L=[null],N=[],I=this.table,_="",A=0,M=0,D=0,P=2,B=1,O=N.slice.call(arguments,1),$=Object.create(this.lexer),V={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(V.yy[G]=this.yy[G]);$.setInput(C,V.yy),V.yy.lexer=$,V.yy.parser=this,typeof $.yylloc>"u"&&($.yylloc={});var z=$.yylloc;N.push(z);var W=$.options&&$.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function H(ue){S.length=S.length-2*ue,L.length=L.length-ue,N.length=N.length-ue}o(H,"popStack");function j(){var ue;return ue=R.pop()||$.lex()||B,typeof ue!="number"&&(ue instanceof Array&&(R=ue,ue=R.pop()),ue=w.symbols_[ue]||ue),ue}o(j,"lex");for(var Q,U,oe,te,le,ie,ae={},Re,be,Pe,Ge;;){if(oe=S[S.length-1],this.defaultActions[oe]?te=this.defaultActions[oe]:((Q===null||typeof Q>"u")&&(Q=j()),te=I[oe]&&I[oe][Q]),typeof te>"u"||!te.length||!te[0]){var Oe="";Ge=[];for(Re in I[oe])this.terminals_[Re]&&Re>P&&Ge.push("'"+this.terminals_[Re]+"'");$.showPosition?Oe="Parse error on line "+(A+1)+`: +`+$.showPosition()+` +Expecting `+Ge.join(", ")+", got '"+(this.terminals_[Q]||Q)+"'":Oe="Parse error on line "+(A+1)+": Unexpected "+(Q==B?"end of input":"'"+(this.terminals_[Q]||Q)+"'"),this.parseError(Oe,{text:$.match,token:this.terminals_[Q]||Q,line:$.yylineno,loc:z,expected:Ge})}if(te[0]instanceof Array&&te.length>1)throw new Error("Parse Error: multiple actions possible at state: "+oe+", token: "+Q);switch(te[0]){case 1:S.push(Q),L.push($.yytext),N.push($.yylloc),S.push(te[1]),Q=null,U?(Q=U,U=null):(M=$.yyleng,_=$.yytext,A=$.yylineno,z=$.yylloc,D>0&&D--);break;case 2:if(be=this.productions_[te[1]][1],ae.$=L[L.length-be],ae._$={first_line:N[N.length-(be||1)].first_line,last_line:N[N.length-1].last_line,first_column:N[N.length-(be||1)].first_column,last_column:N[N.length-1].last_column},W&&(ae._$.range=[N[N.length-(be||1)].range[0],N[N.length-1].range[1]]),ie=this.performAction.apply(ae,[_,M,A,V.yy,te[1],L,N].concat(O)),typeof ie<"u")return ie;be&&(S=S.slice(0,-1*be*2),L=L.slice(0,-1*be),N=N.slice(0,-1*be)),S.push(this.productions_[te[1]][0]),L.push(ae.$),N.push(ae._$),Pe=I[S[S.length-2]][S[S.length-1]],S.push(Pe);break;case 3:return!0}}return!0},"parse")},b=(function(){var k={EOF:1,parseError:o(function(w,S){if(this.yy.parser)this.yy.parser.parseError(w,S);else throw new Error(w)},"parseError"),setInput:o(function(C,w){return this.yy=w||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var w=C.match(/(?:\r\n?|\n).*/g);return w?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var w=C.length,S=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var R=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),S.length-1&&(this.yylineno-=S.length-1);var L=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:S?(S.length===R.length?this.yylloc.first_column:0)+R[R.length-S.length].length-S[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[L[0],L[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),w=new Array(C.length+1).join("-");return C+this.upcomingInput()+` +`+w+"^"},"showPosition"),test_match:o(function(C,w){var S,R,L;if(this.options.backtrack_lexer&&(L={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(L.yylloc.range=this.yylloc.range.slice(0))),R=C[0].match(/(?:\r\n?|\n).*/g),R&&(this.yylineno+=R.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:R?R[R.length-1].length-R[R.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],S=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),S)return S;if(this._backtrack){for(var N in L)this[N]=L[N];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,w,S,R;this._more||(this.yytext="",this.match="");for(var L=this._currentRules(),N=0;Nw[0].length)){if(w=S,R=N,this.options.backtrack_lexer){if(C=this.test_match(S,L[N]),C!==!1)return C;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(C=this.test_match(w,L[R]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var w=this.next();return w||this.lex()},"lex"),begin:o(function(w){this.conditionStack.push(w)},"begin"),popState:o(function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:"INITIAL"},"topState"),pushState:o(function(w){this.begin(w)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(w,S,R,L){var N=L;switch(R){case 0:return w.getLogger().trace("Found comment",S.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:w.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return w.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:w.getLogger().trace("end icon"),this.popState();break;case 10:return w.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return w.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return w.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return w.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:w.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return w.getLogger().trace("description:",S.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),w.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),w.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),w.getLogger().trace("node end ...",S.yytext),"NODE_DEND";break;case 30:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),w.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),w.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return w.getLogger().trace("Long description:",S.yytext),20;break;case 36:return w.getLogger().trace("Long description:",S.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return k})();x.lexer=b;function T(){this.yy={}}return o(T,"Parser"),T.prototype=x,x.Parser=T,new T})();ZY.parser=ZY;dNe=ZY});function pNe(e,t=0){return(Qa[e[t+0]]+Qa[e[t+1]]+Qa[e[t+2]]+Qa[e[t+3]]+"-"+Qa[e[t+4]]+Qa[e[t+5]]+"-"+Qa[e[t+6]]+Qa[e[t+7]]+"-"+Qa[e[t+8]]+Qa[e[t+9]]+"-"+Qa[e[t+10]]+Qa[e[t+11]]+Qa[e[t+12]]+Qa[e[t+13]]+Qa[e[t+14]]+Qa[e[t+15]]).toLowerCase()}var Qa,mNe=F(()=>{"use strict";Qa=[];for(let e=0;e<256;++e)Qa.push((e+256).toString(16).slice(1));o(pNe,"unsafeStringify")});function QY(){return crypto.getRandomValues($_t)}var $_t,gNe=F(()=>{"use strict";$_t=new Uint8Array(16);o(QY,"rng")});function F_t(e,t,r){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():z_t(e,t,r)}function z_t(e,t,r){e=e||{};let n=e.random??e.rng?.()??QY();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)t[r+i]=n[i];return t}return pNe(n)}var JY,yNe=F(()=>{"use strict";gNe();mNe();o(F_t,"v4");o(z_t,"_v4");JY=F_t});var vNe=F(()=>{"use strict";yNe()});var xNe,bNe=F(()=>{"use strict";Ls();Qt();xNe=12});var pd,qL,TNe=F(()=>{"use strict";Xt();vNe();Vr();vt();Wi();ur();bNe();pd={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},qL=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=pd,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let r=this.nodes.length-1;r>=0;r--)if(this.nodes[r].level0?this.nodes[0]:null}addNode(t,r,n,i){Z.info("addNode",t,r,n,i);let a=!1;this.nodes.length===0?(this.baseLevel=t,t=0,a=!0):this.baseLevel!==void 0&&(t=t-this.baseLevel,a=!1);let s=Ae(),l=s.mindmap?.padding??cr.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:l*=2;break}let u={id:this.count++,nodeId:mr(r,s),level:t,descr:mr(n,s),type:i,children:[],width:s.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:l,isRoot:a},h=this.getParent(t);if(h)h.children.push(u),this.nodes.push(u);else if(a)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(t,r){switch(Z.debug("In get type",t,r),t){case"[":return this.nodeType.RECT;case"(":return r===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;let r=Ae(),n=this.nodes[this.nodes.length-1];t.icon&&(n.icon=mr(t.icon,r)),t.class&&(n.class=mr(t.class,r))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,r){if(t.level===0?t.section=void 0:t.section=r,t.children)for(let[n,i]of t.children.entries()){let a=t.level===0?n%(xNe-1):r;this.assignSections(i,a)}}flattenNodes(t,r){let n=Ae(),i=["mindmap-node"];t.isRoot===!0?i.push("section-root","section--1"):t.section!==void 0&&i.push(`section-${t.section}`),t.class&&i.push(t.class);let a=i.join(" "),s=o(u=>{let d=(n.theme?.toLowerCase()??"").includes("redux");switch(u){case pd.CIRCLE:return"mindmapCircle";case pd.RECT:return"rect";case pd.ROUNDED_RECT:return"rounded";case pd.CLOUD:return"cloud";case pd.BANG:return"bang";case pd.HEXAGON:return"hexagon";case pd.DEFAULT:return d?"rounded":"defaultMindmapNode";case pd.NO_BORDER:default:return"rect"}},"getShapeFromType"),l={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,labelType:"markdown",isGroup:!1,shape:s(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:a,cssStyles:[],look:n.look,icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(r.push(l),t.children)for(let u of t.children)this.flattenNodes(u,r)}generateEdges(t,r){if(!t.children)return;let n=Ae();for(let i of t.children){let a="edge";i.section!==void 0&&(a+=` section-edge-${i.section}`);let s=t.level+1;a+=` edge-depth-${s}`;let l={id:`edge_${t.id}_${i.id}`,start:t.id.toString(),end:i.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:n.look,classes:a,depth:t.level,section:i.section};r.push(l),this.generateEdges(i,r)}}getData(){let t=this.getMindmap(),r=Ae(),i=Lk().layout!==void 0,a=r;if(i||(a.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:a};Z.debug("getData: mindmapRoot",t,r),this.assignSections(t);let s=[],l=[];this.flattenNodes(t,s),this.generateEdges(t,l),Z.debug(`getData: processed ${s.length} nodes and ${l.length} edges`);let u=new Map;for(let h of s)u.set(h.id,{shape:h.shape,width:h.width,height:h.height,padding:h.padding});return{nodes:s,edges:l,config:a,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+JY()}}getLogger(){return Z}}});var G_t,CNe,wNe=F(()=>{"use strict";vt();Am();Qf();Jf();Wi();ur();G_t=o(async(e,t,r,n)=>{Z.debug(`Rendering mindmap diagram +`+e);let i=n.db,a=i.getData(),s=pl(t,a.config.securityLevel);if(a.type=n.type,a.layoutAlgorithm=Su(a.config.layout,{fallback:"cose-bilkent"}),a.diagramId=t,!i.getMindmap())return;a.nodes.forEach(p=>{p.shape==="rounded"?(p.radius=15,p.taper=15,p.stroke="none",p.width=0,p.padding=15):p.shape==="circle"?p.padding=10:p.shape==="rect"?(p.width=0,p.padding=10):p.shape==="hexagon"&&(p.width=0,p.height=0)}),await Al(a,s);let{themeVariables:u}=_t(),{useGradient:h,gradientStart:d,gradientStop:f}=u;if(h&&d&&f){let p=s.attr("id"),m=s.append("defs").append("linearGradient").attr("id",`${p}-gradient`).attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");m.append("stop").attr("offset","0%").attr("stop-color",d).attr("stop-opacity",1),m.append("stop").attr("offset","100%").attr("stop-color",f).attr("stop-opacity",1)}vo(s,a.config.mindmap?.padding??cr.mindmap.padding,"mindmapDiagram",a.config.mindmap?.useMaxWidth??cr.mindmap.useMaxWidth)},"draw"),CNe={draw:G_t}});var V_t,W_t,q_t,kNe,SNe=F(()=>{"use strict";zi();V_t=o(e=>{let{theme:t,look:r}=e,n="";for(let i=0;i{let n="";for(let i=0;i{let{theme:t}=e,r=e.svgId,n=e.dropShadow?e.dropShadow.replace("url(#drop-shadow)",`url(${r}-drop-shadow)`):"none";return` + .edge { + stroke-width: 3; + } + ${V_t(e)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${e.git0}; + } + .section-root text { + fill: ${e.gitBranchLabel0}; + } + .section-root span { + color: ${t?.includes("redux")?e.nodeBorder:e.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } + [data-look="neo"].mindmap-node { + filter: ${n}; + } + [data-look="neo"].mindmap-node.section-root rect, [data-look="neo"].mindmap-node.section-root path, [data-look="neo"].mindmap-node.section-root circle, [data-look="neo"].mindmap-node.section-root polygon { + fill: ${t?.includes("redux")?e.mainBkg:e.git0}; + } + [data-look="neo"].mindmap-node.section-root .text-inner-tspan { + fill: ${t?.includes("redux")?e.nodeBorder:e["cScaleLabel"+(t==="neutral"?1:0)]}; + } + ${e.useGradient&&r&&e.mainBkg?W_t(e.THEME_COLOR_LIMIT,r,e.mainBkg):""} +`},"getStyles"),kNe=q_t});var ENe={};ir(ENe,{diagram:()=>H_t});var H_t,ANe=F(()=>{"use strict";fNe();TNe();wNe();SNe();H_t={get db(){return new qL},renderer:CNe,parser:dNe,styles:kNe}});var ej,LNe,DNe=F(()=>{"use strict";ej=(function(){var e=o(function(S,R,L,N){for(L=L||{},N=S.length;N--;L[S[N]]=R);return L},"o"),t=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],T=[1,38],k={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(R,L,N,I,_,A,M){var D=A.length-1;switch(_){case 6:case 7:return I;case 8:I.getLogger().trace("Stop NL ");break;case 9:I.getLogger().trace("Stop EOF ");break;case 11:I.getLogger().trace("Stop NL2 ");break;case 12:I.getLogger().trace("Stop EOF2 ");break;case 15:I.getLogger().info("Node: ",A[D-1].id),I.addNode(A[D-2].length,A[D-1].id,A[D-1].descr,A[D-1].type,A[D]);break;case 16:I.getLogger().info("Node: ",A[D].id),I.addNode(A[D-1].length,A[D].id,A[D].descr,A[D].type);break;case 17:I.getLogger().trace("Icon: ",A[D]),I.decorateNode({icon:A[D]});break;case 18:case 23:I.decorateNode({class:A[D]});break;case 19:I.getLogger().trace("SPACELIST");break;case 20:I.getLogger().trace("Node: ",A[D-1].id),I.addNode(0,A[D-1].id,A[D-1].descr,A[D-1].type,A[D]);break;case 21:I.getLogger().trace("Node: ",A[D].id),I.addNode(0,A[D].id,A[D].descr,A[D].type);break;case 22:I.decorateNode({icon:A[D]});break;case 27:I.getLogger().trace("node found ..",A[D-2]),this.$={id:A[D-1],descr:A[D-1],type:I.getType(A[D-2],A[D])};break;case 28:this.$={id:A[D],descr:A[D],type:0};break;case 29:I.getLogger().trace("node found ..",A[D-3]),this.$={id:A[D-3],descr:A[D-1],type:I.getType(A[D-2],A[D])};break;case 30:this.$=A[D-1]+A[D];break;case 31:this.$=A[D];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:d,10:23,11:f},e(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),e(p,[2,19]),e(p,[2,21],{15:30,24:m}),e(p,[2,22]),e(p,[2,23]),e(g,[2,25]),e(g,[2,26]),e(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:d,10:34,11:f},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},e(y,[2,14],{7:v,11:x}),e(b,[2,8]),e(b,[2,9]),e(b,[2,10]),e(p,[2,16],{15:37,24:m}),e(p,[2,17]),e(p,[2,18]),e(p,[2,20],{24:T}),e(g,[2,31]),{21:[1,39]},{22:[1,40]},e(y,[2,13],{7:v,11:x}),e(b,[2,11]),e(b,[2,12]),e(p,[2,15],{24:T}),e(g,[2,30]),{22:[1,41]},e(g,[2,27]),e(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(R,L){if(L.recoverable)this.trace(R);else{var N=new Error(R);throw N.hash=L,N}},"parseError"),parse:o(function(R){var L=this,N=[0],I=[],_=[null],A=[],M=this.table,D="",P=0,B=0,O=0,$=2,V=1,G=A.slice.call(arguments,1),z=Object.create(this.lexer),W={yy:{}};for(var H in this.yy)Object.prototype.hasOwnProperty.call(this.yy,H)&&(W.yy[H]=this.yy[H]);z.setInput(R,W.yy),W.yy.lexer=z,W.yy.parser=this,typeof z.yylloc>"u"&&(z.yylloc={});var j=z.yylloc;A.push(j);var Q=z.options&&z.options.ranges;typeof W.yy.parseError=="function"?this.parseError=W.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(ce){N.length=N.length-2*ce,_.length=_.length-ce,A.length=A.length-ce}o(U,"popStack");function oe(){var ce;return ce=I.pop()||z.lex()||V,typeof ce!="number"&&(ce instanceof Array&&(I=ce,ce=I.pop()),ce=L.symbols_[ce]||ce),ce}o(oe,"lex");for(var te,le,ie,ae,Re,be,Pe={},Ge,Oe,ue,ye;;){if(ie=N[N.length-1],this.defaultActions[ie]?ae=this.defaultActions[ie]:((te===null||typeof te>"u")&&(te=oe()),ae=M[ie]&&M[ie][te]),typeof ae>"u"||!ae.length||!ae[0]){var ke="";ye=[];for(Ge in M[ie])this.terminals_[Ge]&&Ge>$&&ye.push("'"+this.terminals_[Ge]+"'");z.showPosition?ke="Parse error on line "+(P+1)+`: +`+z.showPosition()+` +Expecting `+ye.join(", ")+", got '"+(this.terminals_[te]||te)+"'":ke="Parse error on line "+(P+1)+": Unexpected "+(te==V?"end of input":"'"+(this.terminals_[te]||te)+"'"),this.parseError(ke,{text:z.match,token:this.terminals_[te]||te,line:z.yylineno,loc:j,expected:ye})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ie+", token: "+te);switch(ae[0]){case 1:N.push(te),_.push(z.yytext),A.push(z.yylloc),N.push(ae[1]),te=null,le?(te=le,le=null):(B=z.yyleng,D=z.yytext,P=z.yylineno,j=z.yylloc,O>0&&O--);break;case 2:if(Oe=this.productions_[ae[1]][1],Pe.$=_[_.length-Oe],Pe._$={first_line:A[A.length-(Oe||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(Oe||1)].first_column,last_column:A[A.length-1].last_column},Q&&(Pe._$.range=[A[A.length-(Oe||1)].range[0],A[A.length-1].range[1]]),be=this.performAction.apply(Pe,[D,B,P,W.yy,ae[1],_,A].concat(G)),typeof be<"u")return be;Oe&&(N=N.slice(0,-1*Oe*2),_=_.slice(0,-1*Oe),A=A.slice(0,-1*Oe)),N.push(this.productions_[ae[1]][0]),_.push(Pe.$),A.push(Pe._$),ue=M[N[N.length-2]][N[N.length-1]],N.push(ue);break;case 3:return!0}}return!0},"parse")},C=(function(){var S={EOF:1,parseError:o(function(L,N){if(this.yy.parser)this.yy.parser.parseError(L,N);else throw new Error(L)},"parseError"),setInput:o(function(R,L){return this.yy=L||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var L=R.match(/(?:\r\n?|\n).*/g);return L?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},"input"),unput:o(function(R){var L=R.length,N=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-L),this.offset-=L;var I=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var _=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===I.length?this.yylloc.first_column:0)+I[I.length-N.length].length-N[0].length:this.yylloc.first_column-L},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-L]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(R){this.unput(this.match.slice(R))},"less"),pastInput:o(function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var R=this.pastInput(),L=new Array(R.length+1).join("-");return R+this.upcomingInput()+` +`+L+"^"},"showPosition"),test_match:o(function(R,L){var N,I,_;if(this.options.backtrack_lexer&&(_={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_.yylloc.range=this.yylloc.range.slice(0))),I=R[0].match(/(?:\r\n?|\n).*/g),I&&(this.yylineno+=I.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:I?I[I.length-1].length-I[I.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],N=this.performAction.call(this,this.yy,this,L,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var A in _)this[A]=_[A];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,L,N,I;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),A=0;A<_.length;A++)if(N=this._input.match(this.rules[_[A]]),N&&(!L||N[0].length>L[0].length)){if(L=N,I=A,this.options.backtrack_lexer){if(R=this.test_match(N,_[A]),R!==!1)return R;if(this._backtrack){L=!1;continue}else return!1}else if(!this.options.flex)break}return L?(R=this.test_match(L,_[I]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var L=this.next();return L||this.lex()},"lex"),begin:o(function(L){this.conditionStack.push(L)},"begin"),popState:o(function(){var L=this.conditionStack.length-1;return L>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(L){return L=this.conditionStack.length-1-Math.abs(L||0),L>=0?this.conditionStack[L]:"INITIAL"},"topState"),pushState:o(function(L){this.begin(L)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(L,N,I,_){var A=_;switch(I){case 0:return this.pushState("shapeData"),N.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let M=/\n\s*/g;return N.yytext=N.yytext.replace(M,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return L.getLogger().trace("Found comment",N.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:L.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return L.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:L.getLogger().trace("end icon"),this.popState();break;case 16:return L.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return L.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return L.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return L.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:L.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return L.getLogger().trace("description:",N.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),L.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),L.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),L.getLogger().trace("node end ...",N.yytext),"NODE_DEND";break;case 36:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),L.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),L.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return L.getLogger().trace("Long description:",N.yytext),21;break;case 42:return L.getLogger().trace("Long description:",N.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return S})();k.lexer=C;function w(){this.yy={}}return o(w,"Parser"),w.prototype=k,k.Parser=w,new w})();ej.parser=ej;LNe=ej});var Ol,rj,tj,nj,X_t,K_t,INe,Z_t,Q_t,pa,J_t,eLt,tLt,rLt,nLt,iLt,aLt,MNe,NNe=F(()=>{"use strict";Xt();Vr();vt();Wi();A2();Ol=[],rj=[],tj=0,nj={},X_t=o(()=>{Ol=[],rj=[],tj=0,nj={}},"clear"),K_t=o(e=>{if(Ol.length===0)return null;let t=Ol[0].level,r=null;for(let n=Ol.length-1;n>=0;n--)if(Ol[n].level===t&&!r&&(r=Ol[n]),Ol[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:mr(l.label??"",n),labelType:"markdown",isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(u)}}return{nodes:t,edges:e,other:{},config:Ae()}},"getData"),Q_t=o((e,t,r,n,i)=>{let a=Ae(),s=a.mindmap?.padding??cr.mindmap.padding;switch(n){case pa.ROUNDED_RECT:case pa.RECT:case pa.HEXAGON:s*=2}let l={id:mr(t,a)||"kbn"+tj++,level:e,label:mr(r,a),width:a.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` +`)?h=i+` +`:h=`{ +`+i+` +}`;let d=Qd(h,{schema:Zd});if(d.shape&&(d.shape!==d.shape.toLowerCase()||d.shape.includes("_")))throw new Error(`No such shape: ${d.shape}. Shape names should be lowercase.`);d?.shape&&d.shape==="kanbanItem"&&(l.shape=d?.shape),d?.label&&(l.label=d?.label),d?.icon&&(l.icon=d?.icon.toString()),d?.assigned&&(l.assigned=d?.assigned.toString()),d?.ticket&&(l.ticket=d?.ticket.toString()),d?.priority&&(l.priority=d?.priority)}let u=K_t(e);u?l.parentId=u.id||"kbn"+tj++:rj.push(l),Ol.push(l)},"addNode"),pa={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},J_t=o((e,t)=>{switch(Z.debug("In get type",e,t),e){case"[":return pa.RECT;case"(":return t===")"?pa.ROUNDED_RECT:pa.CLOUD;case"((":return pa.CIRCLE;case")":return pa.CLOUD;case"))":return pa.BANG;case"{{":return pa.HEXAGON;default:return pa.DEFAULT}},"getType"),eLt=o((e,t)=>{nj[e]=t},"setElementForId"),tLt=o(e=>{if(!e)return;let t=Ae(),r=Ol[Ol.length-1];e.icon&&(r.icon=mr(e.icon,t)),e.class&&(r.cssClasses=mr(e.class,t))},"decorateNode"),rLt=o(e=>{switch(e){case pa.DEFAULT:return"no-border";case pa.RECT:return"rect";case pa.ROUNDED_RECT:return"rounded-rect";case pa.CIRCLE:return"circle";case pa.CLOUD:return"cloud";case pa.BANG:return"bang";case pa.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),nLt=o(()=>Z,"getLogger"),iLt=o(e=>nj[e],"getElementById"),aLt={clear:X_t,addNode:Q_t,getSections:INe,getData:Z_t,nodeType:pa,getType:J_t,setElementForId:eLt,decorateNode:tLt,type2Str:rLt,getLogger:nLt,getElementById:iLt},MNe=aLt});var sLt,PNe,ONe=F(()=>{"use strict";Xt();vt();Ka();$n();Wi();Wy();Lm();sLt=o(async(e,t,r,n)=>{Z.debug(`Rendering kanban diagram +`+e);let a=n.db.getData(),s=Ae();s.htmlLabels=!1;let l=xn(t);for(let v of a.nodes)v.domId=`${t}-${v.id}`;let u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let d=a.nodes.filter(v=>v.isGroup),f=0,p=10,m=[],g=25;for(let v of d){let x=s?.kanban?.sectionWidth||200;f=f+1,v.x=x*f+(f-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+f;let b=await rf(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of d){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,T=-b*3/2+g,k=T,C=a.nodes.filter(R=>R.parentId===v.id);for(let R of C){if(R.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");R.x=v.x,R.width=b-1.5*p;let N=(await nf(h,R,{config:s})).node().getBBox();R.y=k+N.height/2,await _m(R),k=R.y+N.height/2+p/2}let w=x.cluster.select("rect"),S=Math.max(k-T+3*p,50)+(g-25);w.attr("height",S)}ul(void 0,l,s.mindmap?.padding??cr.kanban.padding,s.mindmap?.useMaxWidth??cr.kanban.useMaxWidth)},"draw"),PNe={draw:sLt}});var oLt,lLt,BNe,$Ne=F(()=>{"use strict";zi();X1();oLt=o(e=>{let t="";for(let n=0;ne.darkMode?Je(n,i):Qe(n,i),"adjuster");for(let n=0;n` + .edge { + stroke-width: 3; + } + ${oLt(e)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${e.git0}; + } + .section-root text { + fill: ${e.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .cluster-label, .label { + color: ${e.textColor}; + fill: ${e.textColor}; + } + .kanban-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } + ${Eu()} +`,"getStyles"),BNe=lLt});var FNe={};ir(FNe,{diagram:()=>cLt});var cLt,zNe=F(()=>{"use strict";DNe();NNe();ONe();$Ne();cLt={db:MNe,renderer:PNe,parser:LNe,styles:BNe}});var ij,Uw,WNe=F(()=>{"use strict";ij=(function(){var e=o(function(l,u,h,d){for(h=h||{},d=l.length;d--;h[l[d]]=u);return h},"o"),t=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,d,f,p,m,g){var y=m.length-1;switch(p){case 7:let v=f.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=f.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());f.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:t,20:r},{1:[2,6],7:11,10:[1,12]},e(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},e(n,[2,8]),e(n,[2,9]),{19:[1,16]},e(n,[2,11]),{1:[2,1]},{1:[2,5]},e(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:t,20:r},{15:18,16:7,17:8,18:t,20:r},{18:[1,19]},e(r,[2,3]),{12:[1,20]},e(n,[2,10]),{15:21,16:7,17:8,18:t,20:r},e([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var d=new Error(u);throw d.hash=h,d}},"parseError"),parse:o(function(u){var h=this,d=[0],f=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,T=2,k=1,C=m.slice.call(arguments,1),w=Object.create(this.lexer),S={yy:{}};for(var R in this.yy)Object.prototype.hasOwnProperty.call(this.yy,R)&&(S.yy[R]=this.yy[R]);w.setInput(u,S.yy),S.yy.lexer=w,S.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var L=w.yylloc;m.push(L);var N=w.options&&w.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function I(j){d.length=d.length-2*j,p.length=p.length-j,m.length=m.length-j}o(I,"popStack");function _(){var j;return j=f.pop()||w.lex()||k,typeof j!="number"&&(j instanceof Array&&(f=j,j=f.pop()),j=h.symbols_[j]||j),j}o(_,"lex");for(var A,M,D,P,B,O,$={},V,G,z,W;;){if(D=d[d.length-1],this.defaultActions[D]?P=this.defaultActions[D]:((A===null||typeof A>"u")&&(A=_()),P=g[D]&&g[D][A]),typeof P>"u"||!P.length||!P[0]){var H="";W=[];for(V in g[D])this.terminals_[V]&&V>T&&W.push("'"+this.terminals_[V]+"'");w.showPosition?H="Parse error on line "+(v+1)+`: +`+w.showPosition()+` +Expecting `+W.join(", ")+", got '"+(this.terminals_[A]||A)+"'":H="Parse error on line "+(v+1)+": Unexpected "+(A==k?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(H,{text:w.match,token:this.terminals_[A]||A,line:w.yylineno,loc:L,expected:W})}if(P[0]instanceof Array&&P.length>1)throw new Error("Parse Error: multiple actions possible at state: "+D+", token: "+A);switch(P[0]){case 1:d.push(A),p.push(w.yytext),m.push(w.yylloc),d.push(P[1]),A=null,M?(A=M,M=null):(x=w.yyleng,y=w.yytext,v=w.yylineno,L=w.yylloc,b>0&&b--);break;case 2:if(G=this.productions_[P[1]][1],$.$=p[p.length-G],$._$={first_line:m[m.length-(G||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(G||1)].first_column,last_column:m[m.length-1].last_column},N&&($._$.range=[m[m.length-(G||1)].range[0],m[m.length-1].range[1]]),O=this.performAction.apply($,[y,x,v,S.yy,P[1],p,m].concat(C)),typeof O<"u")return O;G&&(d=d.slice(0,-1*G*2),p=p.slice(0,-1*G),m=m.slice(0,-1*G)),d.push(this.productions_[P[1]][0]),p.push($.$),m.push($._$),z=g[d[d.length-2]][d[d.length-1]],d.push(z);break;case 3:return!0}}return!0},"parse")},a=(function(){var l={EOF:1,parseError:o(function(h,d){if(this.yy.parser)this.yy.parser.parseError(h,d);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,d=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var f=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),d.length-1&&(this.yylineno-=d.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:d?(d.length===f.length?this.yylloc.first_column:0)+f[f.length-d.length].length-d[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+` +`+h+"^"},"showPosition"),test_match:o(function(u,h){var d,f,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),f=u[0].match(/(?:\r\n?|\n).*/g),f&&(this.yylineno+=f.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:f?f[f.length-1].length-f[f.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],d=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),d)return d;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,d,f;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;mh[0].length)){if(h=d,f=m,this.options.backtrack_lexer){if(u=this.test_match(d,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[f]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,d,f,p){var m=p;switch(f){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return l})();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s})();ij.parser=ij;Uw=ij});var UL,YL,HL,fLt,aj,pLt,sj,mLt,gLt,yLt,vLt,qNe,HNe=F(()=>{"use strict";Xt();Vr();Nn();UL=[],YL=[],HL=new Map,fLt=o(()=>{UL=[],YL=[],HL=new Map,yr()},"clear"),aj=class{constructor(t,r,n=0){this.source=t;this.target=r;this.value=n}static{o(this,"SankeyLink")}},pLt=o((e,t,r)=>{UL.push(new aj(e,t,r))},"addLink"),sj=class{constructor(t){this.ID=t}static{o(this,"SankeyNode")}},mLt=o(e=>{e=xt.sanitizeText(e,Ae());let t=HL.get(e);return t===void 0&&(t=new sj(e),HL.set(e,t),YL.push(t)),t},"findOrCreateNode"),gLt=o(()=>YL,"getNodes"),yLt=o(()=>UL,"getLinks"),vLt=o(()=>({nodes:YL.map(e=>({id:e.ID})),links:UL.map(e=>({source:e.source.ID,target:e.target.ID,value:e.value}))}),"getGraph"),qNe={nodesMap:HL,getConfig:o(()=>Ae().sankey,"getConfig"),getNodes:gLt,getLinks:yLt,getGraph:vLt,addLink:pLt,findOrCreateNode:mLt,getAccTitle:Ar,setAccTitle:kr,getAccDescription:_r,setAccDescription:Rr,getDiagramTitle:Lr,setDiagramTitle:Or,clear:fLt}});function Yw(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r=i)&&(r=i)}return r}var UNe=F(()=>{"use strict";o(Yw,"max")});function cx(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var YNe=F(()=>{"use strict";o(cx,"min")});function ux(e,t){let r=0;if(t===void 0)for(let n of e)(n=+n)&&(r+=n);else{let n=-1;for(let i of e)(i=+t(i,++n,e))&&(r+=i)}return r}var jNe=F(()=>{"use strict";o(ux,"sum")});var oj=F(()=>{"use strict";UNe();YNe();jNe()});function xLt(e){return e.target.depth}function lj(e){return e.depth}function cj(e,t){return t-1-e.height}function jw(e,t){return e.sourceLinks.length?e.depth:t-1}function uj(e){return e.targetLinks.length?e.depth:e.sourceLinks.length?cx(e.sourceLinks,xLt)-1:0}var hj=F(()=>{"use strict";oj();o(xLt,"targetDepth");o(lj,"left");o(cj,"right");o(jw,"justify");o(uj,"center")});function hx(e){return function(){return e}}var XNe=F(()=>{"use strict";o(hx,"constant")});function KNe(e,t){return jL(e.source,t.source)||e.index-t.index}function ZNe(e,t){return jL(e.target,t.target)||e.index-t.index}function jL(e,t){return e.y0-t.y0}function dj(e){return e.value}function bLt(e){return e.index}function TLt(e){return e.nodes}function CLt(e){return e.links}function QNe(e,t){let r=e.get(t);if(!r)throw new Error("missing: "+t);return r}function JNe({nodes:e}){for(let t of e){let r=t.y0,n=r;for(let i of t.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of t.targetLinks)i.y1=n+i.width/2,n+=i.width}}function XL(){let e=0,t=0,r=1,n=1,i=24,a=8,s,l=bLt,u=jw,h,d,f=TLt,p=CLt,m=6;function g(){let D={nodes:f.apply(null,arguments),links:p.apply(null,arguments)};return y(D),v(D),x(D),b(D),C(D),JNe(D),D}o(g,"sankey"),g.update=function(D){return JNe(D),D},g.nodeId=function(D){return arguments.length?(l=typeof D=="function"?D:hx(D),g):l},g.nodeAlign=function(D){return arguments.length?(u=typeof D=="function"?D:hx(D),g):u},g.nodeSort=function(D){return arguments.length?(h=D,g):h},g.nodeWidth=function(D){return arguments.length?(i=+D,g):i},g.nodePadding=function(D){return arguments.length?(a=s=+D,g):a},g.nodes=function(D){return arguments.length?(f=typeof D=="function"?D:hx(D),g):f},g.links=function(D){return arguments.length?(p=typeof D=="function"?D:hx(D),g):p},g.linkSort=function(D){return arguments.length?(d=D,g):d},g.size=function(D){return arguments.length?(e=t=0,r=+D[0],n=+D[1],g):[r-e,n-t]},g.extent=function(D){return arguments.length?(e=+D[0][0],r=+D[1][0],t=+D[0][1],n=+D[1][1],g):[[e,t],[r,n]]},g.iterations=function(D){return arguments.length?(m=+D,g):m};function y({nodes:D,links:P}){for(let[O,$]of D.entries())$.index=O,$.sourceLinks=[],$.targetLinks=[];let B=new Map(D.map((O,$)=>[l(O,$,D),O]));for(let[O,$]of P.entries()){$.index=O;let{source:V,target:G}=$;typeof V!="object"&&(V=$.source=QNe(B,V)),typeof G!="object"&&(G=$.target=QNe(B,G)),V.sourceLinks.push($),G.targetLinks.push($)}if(d!=null)for(let{sourceLinks:O,targetLinks:$}of D)O.sort(d),$.sort(d)}o(y,"computeNodeLinks");function v({nodes:D}){for(let P of D)P.value=P.fixedValue===void 0?Math.max(ux(P.sourceLinks,dj),ux(P.targetLinks,dj)):P.fixedValue}o(v,"computeNodeValues");function x({nodes:D}){let P=D.length,B=new Set(D),O=new Set,$=0;for(;B.size;){for(let V of B){V.depth=$;for(let{target:G}of V.sourceLinks)O.add(G)}if(++$>P)throw new Error("circular link");B=O,O=new Set}}o(x,"computeNodeDepths");function b({nodes:D}){let P=D.length,B=new Set(D),O=new Set,$=0;for(;B.size;){for(let V of B){V.height=$;for(let{source:G}of V.targetLinks)O.add(G)}if(++$>P)throw new Error("circular link");B=O,O=new Set}}o(b,"computeNodeHeights");function T({nodes:D}){let P=Yw(D,$=>$.depth)+1,B=(r-e-i)/(P-1),O=new Array(P);for(let $ of D){let V=Math.max(0,Math.min(P-1,Math.floor(u.call(null,$,P))));$.layer=V,$.x0=e+V*B,$.x1=$.x0+i,O[V]?O[V].push($):O[V]=[$]}if(h)for(let $ of O)$.sort(h);return O}o(T,"computeNodeLayers");function k(D){let P=cx(D,B=>(n-t-(B.length-1)*s)/ux(B,dj));for(let B of D){let O=t;for(let $ of B){$.y0=O,$.y1=O+$.value*P,O=$.y1+s;for(let V of $.sourceLinks)V.width=V.value*P}O=(n-O+s)/(B.length+1);for(let $=0;$B.length)-1)),k(P);for(let B=0;B0))continue;let H=(z/W-G.y0)*P;G.y0+=H,G.y1+=H,I(G)}h===void 0&&V.sort(jL),R(V,B)}}o(w,"relaxLeftToRight");function S(D,P,B){for(let O=D.length,$=O-2;$>=0;--$){let V=D[$];for(let G of V){let z=0,W=0;for(let{target:j,value:Q}of G.sourceLinks){let U=Q*(j.layer-G.layer);z+=M(G,j)*U,W+=U}if(!(W>0))continue;let H=(z/W-G.y0)*P;G.y0+=H,G.y1+=H,I(G)}h===void 0&&V.sort(jL),R(V,B)}}o(S,"relaxRightToLeft");function R(D,P){let B=D.length>>1,O=D[B];N(D,O.y0-s,B-1,P),L(D,O.y1+s,B+1,P),N(D,n,D.length-1,P),L(D,t,0,P)}o(R,"resolveCollisions");function L(D,P,B,O){for(;B1e-6&&($.y0+=V,$.y1+=V),P=$.y1+s}}o(L,"resolveCollisionsTopToBottom");function N(D,P,B,O){for(;B>=0;--B){let $=D[B],V=($.y1-P)*O;V>1e-6&&($.y0-=V,$.y1-=V),P=$.y0-s}}o(N,"resolveCollisionsBottomToTop");function I({sourceLinks:D,targetLinks:P}){if(d===void 0){for(let{source:{sourceLinks:B}}of P)B.sort(ZNe);for(let{target:{targetLinks:B}}of D)B.sort(KNe)}}o(I,"reorderNodeLinks");function _(D){if(d===void 0)for(let{sourceLinks:P,targetLinks:B}of D)P.sort(ZNe),B.sort(KNe)}o(_,"reorderLinks");function A(D,P){let B=D.y0-(D.sourceLinks.length-1)*s/2;for(let{target:O,width:$}of D.sourceLinks){if(O===P)break;B+=$+s}for(let{source:O,width:$}of P.targetLinks){if(O===D)break;B-=$}return B}o(A,"targetTop");function M(D,P){let B=P.y0-(P.targetLinks.length-1)*s/2;for(let{source:O,width:$}of P.targetLinks){if(O===D)break;B+=$+s}for(let{target:O,width:$}of D.sourceLinks){if(O===P)break;B-=$}return B}return o(M,"sourceTop"),g}var ePe=F(()=>{"use strict";oj();hj();XNe();o(KNe,"ascendingSourceBreadth");o(ZNe,"ascendingTargetBreadth");o(jL,"ascendingBreadth");o(dj,"value");o(bLt,"defaultId");o(TLt,"defaultNodes");o(CLt,"defaultLinks");o(QNe,"find");o(JNe,"computeLinkBreadths");o(XL,"Sankey")});function mj(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function tPe(){return new mj}var fj,pj,L0,wLt,gj,rPe=F(()=>{"use strict";fj=Math.PI,pj=2*fj,L0=1e-6,wLt=pj-L0;o(mj,"Path");o(tPe,"path");mj.prototype=tPe.prototype={constructor:mj,moveTo:o(function(e,t){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(e,t){this._+="L"+(this._x1=+e)+","+(this._y1=+t)},"lineTo"),quadraticCurveTo:o(function(e,t,r,n){this._+="Q"+ +e+","+ +t+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(e,t,r,n,i,a){this._+="C"+ +e+","+ +t+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(e,t,r,n,i){e=+e,t=+t,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-e,u=n-t,h=a-e,d=s-t,f=h*h+d*d;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=e)+","+(this._y1=t);else if(f>L0)if(!(Math.abs(d*l-u*h)>L0)||!i)this._+="L"+(this._x1=e)+","+(this._y1=t);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(f),b=i*Math.tan((fj-Math.acos((g+f-y)/(2*v*x)))/2),T=b/x,k=b/v;Math.abs(T-1)>L0&&(this._+="L"+(e+T*h)+","+(t+T*d)),this._+="A"+i+","+i+",0,0,"+ +(d*p>h*m)+","+(this._x1=e+k*l)+","+(this._y1=t+k*u)}},"arcTo"),arc:o(function(e,t,r,n,i,a){e=+e,t=+t,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=e+s,h=t+l,d=1^a,f=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>L0||Math.abs(this._y1-h)>L0)&&(this._+="L"+u+","+h),r&&(f<0&&(f=f%pj+pj),f>wLt?this._+="A"+r+","+r+",0,1,"+d+","+(e-s)+","+(t-l)+"A"+r+","+r+",0,1,"+d+","+(this._x1=u)+","+(this._y1=h):f>L0&&(this._+="A"+r+","+r+",0,"+ +(f>=fj)+","+d+","+(this._x1=e+r*Math.cos(i))+","+(this._y1=t+r*Math.sin(i))))},"arc"),rect:o(function(e,t,r,n){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};gj=tPe});var nPe=F(()=>{"use strict";rPe()});function KL(e){return o(function(){return e},"constant")}var iPe=F(()=>{"use strict";o(KL,"default")});function aPe(e){return e[0]}function sPe(e){return e[1]}var oPe=F(()=>{"use strict";o(aPe,"x");o(sPe,"y")});var lPe,cPe=F(()=>{"use strict";lPe=Array.prototype.slice});function kLt(e){return e.source}function SLt(e){return e.target}function ELt(e){var t=kLt,r=SLt,n=aPe,i=sPe,a=null;function s(){var l,u=lPe.call(arguments),h=t.apply(this,u),d=r.apply(this,u);if(a||(a=l=gj()),e(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=d,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(t=l,s):t},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:KL(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:KL(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function ALt(e,t,r,n,i){e.moveTo(t,r),e.bezierCurveTo(t=(t+n)/2,r,t,i,n,i)}function yj(){return ELt(ALt)}var uPe=F(()=>{"use strict";nPe();cPe();iPe();oPe();o(kLt,"linkSource");o(SLt,"linkTarget");o(ELt,"link");o(ALt,"curveHorizontal");o(yj,"linkHorizontal")});var hPe=F(()=>{"use strict";uPe()});function RLt(e){return[e.source.x1,e.y0]}function _Lt(e){return[e.target.x0,e.y1]}function ZL(){return yj().source(RLt).target(_Lt)}var dPe=F(()=>{"use strict";hPe();o(RLt,"horizontalSource");o(_Lt,"horizontalTarget");o(ZL,"default")});var fPe=F(()=>{"use strict";ePe();hj();dPe()});var Xw,pPe=F(()=>{"use strict";Xw=class e{static{o(this,"Uid")}static{this.count=0}static next(t){return new e(t+ ++e.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}}});var LLt,DLt,ILt,mPe,gPe=F(()=>{"use strict";Xt();$r();fPe();$n();pPe();LLt={left:lj,right:cj,center:uj,justify:jw},DLt=o(e=>{let t=0,r=0;for(let n of e){let i=n.value??0;i>t&&(t=i,r=n.layer??0)}return r},"findCentralNodeLayer"),ILt=o(function(e,t,r,n){let{securityLevel:i,sankey:a}=Ae(),s=bS.sankey,l;i==="sandbox"&&(l=et("#i"+t));let u=i==="sandbox"?et(l.nodes()[0].contentDocument.body):et("body"),h=i==="sandbox"?u.select(`[id="${t}"]`):et(`[id="${t}"]`),d=a?.width??s.width,f=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=a?.nodeWidth??s.nodeWidth??10,b=a?.nodePadding??s.nodePadding??12,T=a?.labelStyle??s.labelStyle??"legacy",k=a?.nodeColors??{},C=n.db.getGraph(),w=LLt[m];XL().nodeId(O=>O.id).nodeWidth(x).nodePadding(b+(v?15:0)).nodeAlign(w).extent([[0,0],[d,f]])(C);let R=DLt(C.nodes),L=Oo(LN),N=o(O=>k[O]??L(O),"getNodeColor");h.append("g").attr("class","nodes").selectAll(".node").data(C.nodes).join("g").attr("class","node").attr("id",O=>(O.uid=Xw.next("node-")).id).attr("transform",function(O){return"translate("+O.x0+","+O.y0+")"}).attr("x",O=>O.x0).attr("y",O=>O.y0).append("rect").attr("height",O=>O.y1-O.y0).attr("width",O=>O.x1-O.x0).attr("fill",O=>N(O.id));let I=o(({id:O,value:$})=>v?`${O} +${g}${Math.round($*100)/100}${y}`:O,"getText"),_=o(O=>T==="outlined"?(O.layer??0)A.selectAll(O?`.${O}`:"text").data(C.nodes).join("text").attr("class",O??null).attr("x",$=>_($).x).attr("y",$=>($.y1+$.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",$=>_($).anchor).text(I),"appendLabel");T==="outlined"?(M("sankey-label-bg"),M("sankey-label-fg")):M();let D=h.append("g").attr("class","links").attr("fill","none").attr("stroke-opacity",.5).selectAll(".link").data(C.links).join("g").attr("class","link").style("mix-blend-mode","multiply"),P=a?.linkColor??"gradient";if(P==="gradient"){let O=D.append("linearGradient").attr("id",$=>($.uid=Xw.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",$=>$.source.x1).attr("x2",$=>$.target.x0);O.append("stop").attr("offset","0%").attr("stop-color",$=>N($.source.id)),O.append("stop").attr("offset","100%").attr("stop-color",$=>N($.target.id))}let B;switch(P){case"gradient":B=o(O=>O.uid,"coloring");break;case"source":B=o(O=>N(O.source.id),"coloring");break;case"target":B=o(O=>N(O.target.id),"coloring");break;default:B=P}D.append("path").attr("d",ZL()).attr("stroke",B).attr("stroke-width",O=>Math.max(1,O.width)),ul(void 0,h,0,p)},"draw"),mPe={draw:ILt}});var yPe,vPe=F(()=>{"use strict";yPe=o(e=>e.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing")});var MLt,xPe,bPe=F(()=>{"use strict";MLt=o(e=>`.label { + font-family: ${e.fontFamily}; + } + + .node-labels { + font-family: ${e.fontFamily}; + } + + /* Outlined label style - background stroke for better readability */ + .sankey-label-bg { + stroke: ${e.mainBkg||e.background||"#fff"}; + stroke-width: 4px; + stroke-linejoin: round; + paint-order: stroke; + } + + /* Foreground label text */ + .sankey-label-fg { + fill: ${e.textColor}; + } + + /* Node styling */ + .node rect { + shape-rendering: crispEdges; + } + + /* Link styling */ + .link { + fill: none; + stroke-opacity: 0.5; + mix-blend-mode: multiply; + } +`,"getStyles"),xPe=MLt});var TPe={};ir(TPe,{diagram:()=>PLt});var NLt,PLt,CPe=F(()=>{"use strict";WNe();HNe();gPe();vPe();bPe();NLt=Uw.parse.bind(Uw);Uw.parse=e=>NLt(yPe(e));PLt={styles:xPe,parser:Uw,db:qNe,renderer:mPe}});var FLt,dx,vj=F(()=>{"use strict";ur();Wi();Qt();Nn();FLt=cr.packet,dx=class{constructor(){this.packet=[];this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr}static{o(this,"PacketDB")}getConfig(){let t=qr({...FLt,..._t().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){yr(),this.packet=[]}}});var zLt,GLt,VLt,xj,SPe=F(()=>{"use strict";Xa();vt();Hs();vj();zLt=1e4,GLt=o((e,t)=>{Gn(e,t);let r=-1,n=[],i=1,{bitsPerRow:a}=t.getConfig();for(let{start:s,end:l,bits:u,label:h}of e.blocks){if(s!==void 0&&l!==void 0&&l{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];let n=t*r-1,i=t*r;return[{start:e.start,end:n,label:e.label,bits:n-e.start},{start:i,end:e.end,label:e.label,bits:e.end-i}]},"getNextFittingBlock"),xj={parser:{yy:void 0},parse:o(async e=>{let t=await Si("packet",e),r=xj.parser?.yy;if(!(r instanceof dx))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Z.debug(t),GLt(t,r)},"parse")}});var WLt,qLt,EPe,APe=F(()=>{"use strict";Ka();$n();WLt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,d=i.getPacket(),f=i.getDiagramTitle(),p=s+l,m=p*(d.length+1)-(f?0:s),g=u*h+2,y=xn(t);y.attr("viewBox",`0 0 ${g} ${m}`),Wr(y,m,g,a.useMaxWidth);for(let[v,x]of d.entries())qLt(y,x,v,a);y.append("text").text(f).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),qLt=o((e,t,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=e.append("g"),d=r*(n+a)+a;for(let f of t){let p=f.start%l*s+1,m=(f.end-f.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",d).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",d+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(f.label),!u)continue;let g=f.end===f.start,y=d-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(f.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(f.end)}},"drawWord"),EPe={draw:WLt}});var HLt,RPe,_Pe=F(()=>{"use strict";Qt();HLt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},RPe=o(({packet:e}={})=>{let t=qr(HLt,e);return` + .packetByte { + font-size: ${t.byteFontSize}; + } + .packetByte.start { + fill: ${t.startByteColor}; + } + .packetByte.end { + fill: ${t.endByteColor}; + } + .packetLabel { + fill: ${t.labelColor}; + font-size: ${t.labelFontSize}; + } + .packetTitle { + fill: ${t.titleColor}; + font-size: ${t.titleFontSize}; + } + .packetBlock { + stroke: ${t.blockStrokeColor}; + stroke-width: ${t.blockStrokeWidth}; + fill: ${t.blockFillColor}; + } + `},"styles")});var LPe={};ir(LPe,{diagram:()=>ULt});var ULt,DPe=F(()=>{"use strict";vj();SPe();APe();_Pe();ULt={parser:xj,get db(){return new dx},renderer:EPe,styles:RPe}});var fx,NPe,D0,XLt,KLt,PPe,ZLt,QLt,JLt,eDt,tDt,rDt,nDt,I0,bj=F(()=>{"use strict";ur();Wi();Qt();Nn();fx={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},NPe={axes:[],curves:[],options:fx},D0=structuredClone(NPe),XLt=cr.radar,KLt=o(()=>qr({...XLt,..._t().radar}),"getConfig"),PPe=o(()=>D0.axes,"getAxes"),ZLt=o(()=>D0.curves,"getCurves"),QLt=o(()=>D0.options,"getOptions"),JLt=o(e=>{D0.axes=e.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),eDt=o(e=>{D0.curves=e.map(t=>({name:t.name,label:t.label??t.name,entries:tDt(t.entries)}))},"setCurves"),tDt=o(e=>{if(e[0].axis==null)return e.map(r=>r.value);let t=PPe();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(r=>{let n=e.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),rDt=o(e=>{let t=e.reduce((r,n)=>(r[n.name]=n,r),{});D0.options={showLegend:t.showLegend?.value??fx.showLegend,ticks:t.ticks?.value??fx.ticks,max:t.max?.value??fx.max,min:t.min?.value??fx.min,graticule:t.graticule?.value??fx.graticule}},"setOptions"),nDt=o(()=>{yr(),D0=structuredClone(NPe)},"clear"),I0={getAxes:PPe,getCurves:ZLt,getOptions:QLt,setAxes:JLt,setCurves:eDt,setOptions:rDt,getConfig:KLt,clear:nDt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var iDt,OPe,BPe=F(()=>{"use strict";Xa();vt();Hs();bj();iDt=o(e=>{Gn(e,I0);let{axes:t,curves:r,options:n}=e;I0.setAxes(t),I0.setCurves(r),I0.setOptions(n)},"populate"),OPe={parse:o(async e=>{let t=await Si("radar",e);Z.debug(t),iDt(t)},"parse")}});function cDt(e,t,r,n,i,a,s){let l=t.length,u=Math.min(s.width,s.height)/2;r.forEach((h,d)=>{if(h.entries.length!==l)return;let f=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=uDt(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?e.append("path").attr("d",hDt(f,s.curveTension)).attr("class",`radarCurve-${d}`):a==="polygon"&&e.append("polygon").attr("points",f.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${d}`)})}function uDt(e,t,r,n){let i=Math.min(Math.max(e,t),r);return n*(i-t)/(r-t)}function hDt(e,t){let r=e.length,n=`M${e[0].x},${e[0].y}`;for(let i=0;i{let h=e.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var aDt,sDt,oDt,lDt,$Pe,FPe=F(()=>{"use strict";Ka();$n();aDt=o((e,t,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),d=xn(t),f=sDt(d,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;oDt(f,a,g,l.ticks,l.graticule),lDt(f,a,g,u),cDt(f,a,s,m,p,l.graticule,u),dDt(f,s,l.showLegend,u),f.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),sDt=o((e,t)=>{let r=t.width+t.marginLeft+t.marginRight,n=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return Wr(e,n,r,t.useMaxWidth??!0),e.attr("viewBox",`0 0 ${r} ${n}`).attr("overflow","visible"),e.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),oDt=o((e,t,r,n,i)=>{if(i==="circle")for(let a=0;a{let f=2*d*Math.PI/a-Math.PI/2,p=l*Math.cos(f),m=l*Math.sin(f);return`${p},${m}`}).join(" ");e.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),lDt=o((e,t,r,n)=>{let i=t.length;for(let a=0;a.01?"start":u<-.01?"end":"middle",f=h>.01?"hanging":h<-.01?"auto":"central",p=4;e.append("text").text(s).attr("x",r*n.axisLabelFactor*u+p*u).attr("y",r*n.axisLabelFactor*h+p*h).attr("text-anchor",d).attr("dominant-baseline",f).attr("class","radarAxisLabel")}},"drawAxes");o(cDt,"drawCurves");o(uDt,"relativeRadius");o(hDt,"closedRoundCurve");o(dDt,"drawLegend");$Pe={draw:aDt}});var fDt,pDt,zPe,GPe=F(()=>{"use strict";Qt();Pc();ur();fDt=o((e,t)=>{let r="";for(let n=0;n{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(n.radar,e);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),zPe=o(({radar:e}={})=>{let{themeVariables:t,radarOptions:r}=pDt(e);return` + .radarTitle { + font-size: ${t.fontSize}; + color: ${t.titleColor}; + dominant-baseline: hanging; + text-anchor: middle; + } + .radarAxisLine { + stroke: ${r.axisColor}; + stroke-width: ${r.axisStrokeWidth}; + } + .radarAxisLabel { + font-size: ${r.axisLabelFontSize}px; + color: ${r.axisColor}; + } + .radarGraticule { + fill: ${r.graticuleColor}; + fill-opacity: ${r.graticuleOpacity}; + stroke: ${r.graticuleColor}; + stroke-width: ${r.graticuleStrokeWidth}; + } + .radarLegendText { + text-anchor: start; + font-size: ${r.legendFontSize}px; + dominant-baseline: hanging; + } + ${fDt(t,r)} + `},"styles")});var VPe={};ir(VPe,{diagram:()=>mDt});var mDt,WPe=F(()=>{"use strict";bj();BPe();FPe();GPe();mDt={parser:OPe,db:I0,renderer:$Pe,styles:zPe}});var Tj,UPe,YPe=F(()=>{"use strict";Tj=(function(){var e=o(function(T,k,C,w){for(C=C||{},w=T.length;w--;C[T[w]]=k);return C},"o"),t=[1,15],r=[1,7],n=[1,13],i=[1,14],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],d=[8,10,21,28,29,30,31,39,43,46],f=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],g=[8,10,15,16,21,27,28,29,30,31,39,43,46],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(k,C,w,S,R,L,N){var I=L.length-1;switch(R){case 4:S.getLogger().debug("Rule: separator (NL) ");break;case 5:S.getLogger().debug("Rule: separator (Space) ");break;case 6:S.getLogger().debug("Rule: separator (EOF) ");break;case 7:S.getLogger().debug("Rule: hierarchy: ",L[I-1]),S.setHierarchy(L[I-1]);break;case 8:S.getLogger().debug("Stop NL ");break;case 9:S.getLogger().debug("Stop EOF ");break;case 10:S.getLogger().debug("Stop NL2 ");break;case 11:S.getLogger().debug("Stop EOF2 ");break;case 12:S.getLogger().debug("Rule: statement: ",L[I]),typeof L[I].length=="number"?this.$=L[I]:this.$=[L[I]];break;case 13:S.getLogger().debug("Rule: statement #2: ",L[I-1]),this.$=[L[I-1]].concat(L[I]);break;case 14:S.getLogger().debug("Rule: link: ",L[I],k),this.$={edgeTypeStr:L[I],label:""};break;case 15:S.getLogger().debug("Rule: LABEL link: ",L[I-3],L[I-1],L[I]),this.$={edgeTypeStr:L[I],label:L[I-1]};break;case 18:let _=parseInt(L[I]),A=S.generateId();this.$={id:A,type:"space",label:"",width:_,children:[]};break;case 23:S.getLogger().debug("Rule: (nodeStatement link node) ",L[I-2],L[I-1],L[I]," typestr: ",L[I-1].edgeTypeStr);let M=S.edgeStrToEdgeData(L[I-1].edgeTypeStr),D=S.edgeStrToEdgeStartData(L[I-1].edgeTypeStr),P=S.edgeStrToThickness(L[I-1].edgeTypeStr),B=S.edgeStrToPattern(L[I-1].edgeTypeStr);this.$=[{id:L[I-2].id,label:L[I-2].label,type:L[I-2].type,directions:L[I-2].directions},{id:L[I-2].id+"-"+L[I].id,start:L[I-2].id,end:L[I].id,label:L[I-1].label,type:"edge",thickness:P,pattern:B,directions:L[I].directions,arrowTypeEnd:M,arrowTypeStart:D},{id:L[I].id,label:L[I].label,type:S.typeStr2Type(L[I].typeStr),directions:L[I].directions}];break;case 24:S.getLogger().debug("Rule: nodeStatement (abc88 node size) ",L[I-1],L[I]),this.$={id:L[I-1].id,label:L[I-1].label,type:S.typeStr2Type(L[I-1].typeStr),directions:L[I-1].directions,widthInColumns:parseInt(L[I],10)};break;case 25:S.getLogger().debug("Rule: nodeStatement (node) ",L[I]),this.$={id:L[I].id,label:L[I].label,type:S.typeStr2Type(L[I].typeStr),directions:L[I].directions,widthInColumns:1};break;case 26:S.getLogger().debug("APA123",this?this:"na"),S.getLogger().debug("COLUMNS: ",L[I]),this.$={type:"column-setting",columns:L[I]==="auto"?-1:parseInt(L[I])};break;case 27:S.getLogger().debug("Rule: id-block statement : ",L[I-2],L[I-1]);let O=S.generateId();this.$={...L[I-2],type:"composite",children:L[I-1]};break;case 28:S.getLogger().debug("Rule: blockStatement : ",L[I-2],L[I-1],L[I]);let $=S.generateId();this.$={id:$,type:"composite",label:"",children:L[I-1]};break;case 29:S.getLogger().debug("Rule: node (NODE_ID separator): ",L[I]),this.$={id:L[I]};break;case 30:S.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",L[I-1],L[I]),this.$={id:L[I-1],label:L[I].label,typeStr:L[I].typeStr,directions:L[I].directions};break;case 31:S.getLogger().debug("Rule: dirList: ",L[I]),this.$=[L[I]];break;case 32:S.getLogger().debug("Rule: dirList: ",L[I-1],L[I]),this.$=[L[I-1]].concat(L[I]);break;case 33:S.getLogger().debug("Rule: nodeShapeNLabel: ",L[I-2],L[I-1],L[I]),this.$={typeStr:L[I-2]+L[I],label:L[I-1]};break;case 34:S.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",L[I-3],L[I-2]," #3:",L[I-1],L[I]),this.$={typeStr:L[I-3]+L[I],label:L[I-2],directions:L[I-1]};break;case 35:case 36:this.$={type:"classDef",id:L[I-1].trim(),css:L[I].trim()};break;case 37:this.$={type:"applyClass",id:L[I-1].trim(),styleClass:L[I].trim()};break;case 38:this.$={type:"applyStyles",id:L[I-1].trim(),stylesStr:L[I].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{8:[1,20]},e(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:r,28:n,29:i,31:a,39:s,43:l,46:u}),e(d,[2,16],{14:22,15:f,16:p}),e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),e(d,[2,21]),e(d,[2,22]),e(m,[2,25],{27:[1,25]}),e(d,[2,26]),{19:26,26:12,31:a},{10:t,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(g,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(h,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},e(m,[2,24]),{10:t,11:37,13:4,14:22,15:f,16:p,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(g,[2,30]),{18:[1,43]},{18:[1,44]},e(m,[2,23]),{18:[1,45]},{30:[1,46]},e(d,[2,28]),e(d,[2,35]),e(d,[2,36]),e(d,[2,37]),e(d,[2,38]),{36:[1,47]},{33:48,34:y},{15:[1,50]},e(d,[2,27]),e(g,[2,33]),{38:[1,51]},{33:52,34:y,38:[2,31]},{31:[2,15]},e(g,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(k,C){if(C.recoverable)this.trace(k);else{var w=new Error(k);throw w.hash=C,w}},"parseError"),parse:o(function(k){var C=this,w=[0],S=[],R=[null],L=[],N=this.table,I="",_=0,A=0,M=0,D=2,P=1,B=L.slice.call(arguments,1),O=Object.create(this.lexer),$={yy:{}};for(var V in this.yy)Object.prototype.hasOwnProperty.call(this.yy,V)&&($.yy[V]=this.yy[V]);O.setInput(k,$.yy),$.yy.lexer=O,$.yy.parser=this,typeof O.yylloc>"u"&&(O.yylloc={});var G=O.yylloc;L.push(G);var z=O.options&&O.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function W(Oe){w.length=w.length-2*Oe,R.length=R.length-Oe,L.length=L.length-Oe}o(W,"popStack");function H(){var Oe;return Oe=S.pop()||O.lex()||P,typeof Oe!="number"&&(Oe instanceof Array&&(S=Oe,Oe=S.pop()),Oe=C.symbols_[Oe]||Oe),Oe}o(H,"lex");for(var j,Q,U,oe,te,le,ie={},ae,Re,be,Pe;;){if(U=w[w.length-1],this.defaultActions[U]?oe=this.defaultActions[U]:((j===null||typeof j>"u")&&(j=H()),oe=N[U]&&N[U][j]),typeof oe>"u"||!oe.length||!oe[0]){var Ge="";Pe=[];for(ae in N[U])this.terminals_[ae]&&ae>D&&Pe.push("'"+this.terminals_[ae]+"'");O.showPosition?Ge="Parse error on line "+(_+1)+`: +`+O.showPosition()+` +Expecting `+Pe.join(", ")+", got '"+(this.terminals_[j]||j)+"'":Ge="Parse error on line "+(_+1)+": Unexpected "+(j==P?"end of input":"'"+(this.terminals_[j]||j)+"'"),this.parseError(Ge,{text:O.match,token:this.terminals_[j]||j,line:O.yylineno,loc:G,expected:Pe})}if(oe[0]instanceof Array&&oe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+j);switch(oe[0]){case 1:w.push(j),R.push(O.yytext),L.push(O.yylloc),w.push(oe[1]),j=null,Q?(j=Q,Q=null):(A=O.yyleng,I=O.yytext,_=O.yylineno,G=O.yylloc,M>0&&M--);break;case 2:if(Re=this.productions_[oe[1]][1],ie.$=R[R.length-Re],ie._$={first_line:L[L.length-(Re||1)].first_line,last_line:L[L.length-1].last_line,first_column:L[L.length-(Re||1)].first_column,last_column:L[L.length-1].last_column},z&&(ie._$.range=[L[L.length-(Re||1)].range[0],L[L.length-1].range[1]]),le=this.performAction.apply(ie,[I,A,_,$.yy,oe[1],R,L].concat(B)),typeof le<"u")return le;Re&&(w=w.slice(0,-1*Re*2),R=R.slice(0,-1*Re),L=L.slice(0,-1*Re)),w.push(this.productions_[oe[1]][0]),R.push(ie.$),L.push(ie._$),be=N[w[w.length-2]][w[w.length-1]],w.push(be);break;case 3:return!0}}return!0},"parse")},x=(function(){var T={EOF:1,parseError:o(function(C,w){if(this.yy.parser)this.yy.parser.parseError(C,w);else throw new Error(C)},"parseError"),setInput:o(function(k,C){return this.yy=C||this.yy||{},this._input=k,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var k=this._input[0];this.yytext+=k,this.yyleng++,this.offset++,this.match+=k,this.matched+=k;var C=k.match(/(?:\r\n?|\n).*/g);return C?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),k},"input"),unput:o(function(k){var C=k.length,w=k.split(/(?:\r\n?|\n)/g);this._input=k+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-C),this.offset-=C;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),w.length-1&&(this.yylineno-=w.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:w?(w.length===S.length?this.yylloc.first_column:0)+S[S.length-w.length].length-w[0].length:this.yylloc.first_column-C},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-C]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(k){this.unput(this.match.slice(k))},"less"),pastInput:o(function(){var k=this.matched.substr(0,this.matched.length-this.match.length);return(k.length>20?"...":"")+k.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var k=this.match;return k.length<20&&(k+=this._input.substr(0,20-k.length)),(k.substr(0,20)+(k.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var k=this.pastInput(),C=new Array(k.length+1).join("-");return k+this.upcomingInput()+` +`+C+"^"},"showPosition"),test_match:o(function(k,C){var w,S,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),S=k[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+k[0].length},this.yytext+=k[0],this.match+=k[0],this.matches=k,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(k[0].length),this.matched+=k[0],w=this.performAction.call(this,this.yy,this,C,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),w)return w;if(this._backtrack){for(var L in R)this[L]=R[L];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var k,C,w,S;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),L=0;LC[0].length)){if(C=w,S=L,this.options.backtrack_lexer){if(k=this.test_match(w,R[L]),k!==!1)return k;if(this._backtrack){C=!1;continue}else return!1}else if(!this.options.flex)break}return C?(k=this.test_match(C,R[S]),k!==!1?k:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var C=this.next();return C||this.lex()},"lex"),begin:o(function(C){this.conditionStack.push(C)},"begin"),popState:o(function(){var C=this.conditionStack.length-1;return C>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(C){return C=this.conditionStack.length-1-Math.abs(C||0),C>=0?this.conditionStack[C]:"INITIAL"},"topState"),pushState:o(function(C){this.begin(C)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(C,w,S,R){var L=R;switch(S){case 0:return C.getLogger().debug("Found block-beta"),10;break;case 1:return C.getLogger().debug("Found id-block"),29;break;case 2:return C.getLogger().debug("Found block"),10;break;case 3:C.getLogger().debug(".",w.yytext);break;case 4:C.getLogger().debug("_",w.yytext);break;case 5:return 5;case 6:return w.yytext=-1,28;break;case 7:return w.yytext=w.yytext.replace(/columns\s+/,""),C.getLogger().debug("COLUMNS (LEX)",w.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:C.getLogger().debug("LEX: POPPING STR:",w.yytext),this.popState();break;case 13:return C.getLogger().debug("LEX: STR end:",w.yytext),"STR";break;case 14:return w.yytext=w.yytext.replace(/space\:/,""),C.getLogger().debug("SPACE NUM (LEX)",w.yytext),21;break;case 15:return w.yytext="1",C.getLogger().debug("COLUMNS (LEX)",w.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),C.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),C.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),C.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),C.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),C.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),C.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),C.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),C.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),C.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),C.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return C.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return C.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return C.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return C.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return C.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return C.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return C.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),C.getLogger().debug("LEX ARR START"),37;break;case 74:return C.getLogger().debug("Lex: NODE_ID",w.yytext),31;break;case 75:return C.getLogger().debug("Lex: EOF",w.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:C.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:C.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return C.getLogger().debug("LEX: NODE_DESCR:",w.yytext),"NODE_DESCR";break;case 83:C.getLogger().debug("LEX POPPING"),this.popState();break;case 84:C.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (right): dir:",w.yytext),"DIR";break;case 86:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (left):",w.yytext),"DIR";break;case 87:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (x):",w.yytext),"DIR";break;case 88:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (y):",w.yytext),"DIR";break;case 89:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (up):",w.yytext),"DIR";break;case 90:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (down):",w.yytext),"DIR";break;case 91:return w.yytext="]>",C.getLogger().debug("Lex (ARROW_DIR end):",w.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return C.getLogger().debug("Lex: LINK","#"+w.yytext+"#"),15;break;case 93:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 94:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 95:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 96:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 97:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 98:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return C.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),C.getLogger().debug("Lex: LINK","#"+w.yytext+"#"),15;break;case 102:return this.popState(),C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 103:return this.popState(),C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 104:return C.getLogger().debug("Lex: COLON",w.yytext),w.yytext=w.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:=]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return T})();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b})();Tj.parser=Tj;UPe=Tj});function kDt(e){switch(Z.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return Z.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function SDt(e){switch(Z.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}function EDt(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function ADt(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function RDt(e){return e.includes("==")?"thick":"normal"}function _Dt(e){return e.includes(".-")?"dotted":"solid"}var Dc,wj,Cj,jPe,XPe,vDt,ZPe,QL,kj,xDt,bDt,TDt,CDt,QPe,Sj,Kw,wDt,KPe,LDt,DDt,IDt,MDt,NDt,PDt,ODt,BDt,$Dt,FDt,zDt,GDt,VDt,JPe,eOe=F(()=>{"use strict";s4();ur();Xt();vt();Vr();Nn();Dc=new Map,wj=[],Cj=new Map,jPe="color",XPe="fill",vDt="bgFill",ZPe=",",QL=new Map,kj="",xDt=o(e=>xt.sanitizeText(e,Ae()),"sanitizeText"),bDt=o(function(e,t=""){let r=QL.get(e);r||(r={id:e,styles:[],textStyles:[]},QL.set(e,r)),t?.split(ZPe).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(jPe).exec(n)){let s=i.replace(XPe,vDt).replace(jPe,XPe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),TDt=o(function(e,t=""){let r=Dc.get(e);t!=null&&(r.styles=t.split(ZPe))},"addStyle2Node"),CDt=o(function(e,t){e.split(",").forEach(function(r){let n=Dc.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},Dc.set(i,n)}n.classes||(n.classes=[]),n.classes.push(t)})},"setCssClass"),QPe=o((e,t)=>{let r=e.flat(),n=[],a=r.find(s=>s?.type==="column-setting")?.columns??-1;for(let s of r){if(typeof a=="number"&&a>0&&s.type!=="column-setting"&&typeof s.widthInColumns=="number"&&s.widthInColumns>a&&Z.warn(`Block ${s.id} width ${s.widthInColumns} exceeds configured column width ${a}`),s.label&&(s.label=xDt(s.label)),s.type==="classDef"){bDt(s.id,s.css);continue}if(s.type==="applyClass"){CDt(s.id,s?.styleClass??"");continue}if(s.type==="applyStyles"){s?.stylesStr&&TDt(s.id,s?.stylesStr);continue}if(s.type==="column-setting")t.columns=s.columns??-1;else if(s.type==="edge"){let l=(Cj.get(s.id)??0)+1;Cj.set(s.id,l),s.id=l+"-"+s.id,wj.push(s)}else{s.label||(s.type==="composite"?s.label="":s.label=s.id);let l=Dc.get(s.id);if(l===void 0?Dc.set(s.id,s):(s.type!=="na"&&(l.type=s.type),s.label!==s.id&&(l.label=s.label)),s.children&&QPe(s.children,s),s.type==="space"){let u=s.width??1;for(let h=0;h{Z.debug("Clear called"),yr(),Kw={id:"root",type:"composite",children:[],columns:-1},Dc=new Map([["root",Kw]]),Sj=[],QL=new Map,wj=[],Cj=new Map,kj=""},"clear");o(kDt,"typeStr2Type");o(SDt,"edgeTypeStr2Type");o(EDt,"edgeStrToEdgeData");o(ADt,"edgeStrToEdgeStartData");o(RDt,"edgeStrToThickness");o(_Dt,"edgeStrToPattern");KPe=0,LDt=o(()=>(KPe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+KPe),"generateId"),DDt=o(e=>{Kw.children=e,QPe(e,Kw),Sj=Kw.children},"setHierarchy"),IDt=o(e=>{let t=Dc.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),MDt=o(()=>[...Dc.values()],"getBlocksFlat"),NDt=o(()=>Sj||[],"getBlocks"),PDt=o(()=>wj,"getEdges"),ODt=o(e=>Dc.get(e),"getBlock"),BDt=o(e=>{Dc.set(e.id,e)},"setBlock"),$Dt=o(e=>{kj=e},"setDiagramId"),FDt=o(()=>kj,"getDiagramId"),zDt=o(()=>Z,"getLogger"),GDt=o(function(){return QL},"getClasses"),VDt={getConfig:o(()=>_t().block,"getConfig"),typeStr2Type:kDt,edgeTypeStr2Type:SDt,edgeStrToEdgeData:EDt,edgeStrToEdgeStartData:ADt,edgeStrToThickness:RDt,edgeStrToPattern:_Dt,getLogger:zDt,getBlocksFlat:MDt,getBlocks:NDt,getEdges:PDt,setHierarchy:DDt,getBlock:ODt,setBlock:BDt,getColumns:IDt,getClasses:GDt,clear:wDt,generateId:LDt,setDiagramId:$Dt,getDiagramId:FDt},JPe=VDt});var Ej,WDt,tOe,rOe=F(()=>{"use strict";zi();X1();Ej=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),WDt=o(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + + + .label text,span,p { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + /* + * This is for backward compatibility with existing code that didn't + * add a \`

    \` around edge labels. + * + * TODO: We should probably remove this in a future release. + */ + p { + margin: 0; + padding: 0; + display: inline; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${e.edgeLabelBackground}; + } + + .node .cluster { + // fill: ${Ej(e.mainBkg,.5)}; + fill: ${Ej(e.clusterBkg,.5)}; + stroke: ${Ej(e.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } + ${Eu()} +`,"getStyles"),tOe=WDt});var qDt,HDt,UDt,YDt,jDt,XDt,KDt,ZDt,QDt,JDt,e7t,nOe,iOe=F(()=>{"use strict";vt();qDt=o((e,t,r,n)=>{t.forEach(i=>{e7t[i](e,r,n)})},"insertMarkers"),HDt=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),UDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),YDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),jDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),XDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),KDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),ZDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),QDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),JDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),e7t={extension:HDt,composition:UDt,aggregation:YDt,dependency:jDt,lollipop:XDt,point:KDt,circle:ZDt,cross:QDt,barb:JDt},nOe=qDt});function aOe(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};let r=t%e,n=Math.floor(t/e);return{px:r,py:n}}function Aj(e,t,r=0,n=0,i=8){Z.debug("setBlockSizes abc95 (start)",e.id,e?.size?.x,"block width =",e?.size,"siblingWidth",r),e?.size?.width||(e.size={width:r,height:n,x:0,y:0});let a=0,s=0;if(e.children?.length>0){for(let g of e.children)Aj(g,t,0,0,i);let l=t7t(e);a=l.width,s=l.height,Z.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",a,s);for(let g of e.children)g.size&&(Z.debug(`abc95 Setting size of children of ${e.id} id=${g.id} ${a} ${s} ${JSON.stringify(g.size)}`),g.size.width=a*(g.widthInColumns??1)+i*((g.widthInColumns??1)-1),g.size.height=s,g.size.x=0,g.size.y=0,Z.debug(`abc95 updating size of ${e.id} children child:${g.id} maxWidth:${a} maxHeight:${s}`));for(let g of e.children)Aj(g,t,a,s,i);let u=e.columns??-1,h=0;for(let g of e.children)h+=g.widthInColumns??1;let d=e.children.length;u>0&&u0?Math.min(e.children.length,u):e.children.length;if(g>0){let y=(p-g*i-i)/g;Z.debug("abc95 (growing to fit) width",e.id,p,e.size?.width,y);for(let v of e.children)v.size&&(v.size.width=y)}}e.size={width:p,height:m,x:0,y:0}}Z.debug("setBlockSizes abc94 (done)",e.id,e?.size?.x,e?.size?.width,e?.size?.y,e?.size?.height)}function sOe(e,t,r=8){Z.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`);let n=e.columns??-1;if(Z.debug("layoutBlocks columns abc95",e.id,"=>",n,e),e.children&&e.children.length>0){let i=e?.children[0]?.size?.width??0,a=e.children.length*i+(e.children.length-1)*r;Z.debug("widthOfChildren 88",a,"posX");let s=new Map;{let f=0;for(let p of e.children){if(!p.size)continue;let{py:m}=aOe(n,f),g=s.get(m)??0;p.size.height>g&&s.set(m,p.size.height);let y=p?.widthInColumns??1;n>0&&(y=Math.min(y,n-f%n)),f+=y}}let l=new Map;{let f=0,p=[...s.keys()].sort((m,g)=>m-g);for(let m of p)l.set(m,f),f+=(s.get(m)??0)+r}let u=0;Z.debug("abc91 block?.size?.x",e.id,e?.size?.x);let h=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-r,d=0;for(let f of e.children){let p=e;if(!f.size)continue;let{width:m,height:g}=f.size,{px:y,py:v}=aOe(n,u);if(v!=d&&(d=v,h=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-r,Z.debug("New row in layout for block",e.id," and child ",f.id,d)),Z.debug(`abc89 layout blocks (child) id: ${f.id} Pos: ${u} (px, py) ${y},${v} (${p?.size?.x},${p?.size?.y}) parent: ${p.id} width: ${m}${r}`),p.size){let b=m/2;f.size.x=h+r+b,Z.debug(`abc91 layout blocks (calc) px, pyid:${f.id} startingPos=X${h} new startingPosX${f.size.x} ${b} padding=${r} width=${m} halfWidth=${b} => x:${f.size.x} y:${f.size.y} ${f.widthInColumns} (width * (child?.w || 1)) / 2 ${m*(f?.widthInColumns??1)/2}`),h=f.size.x+b;let T=l.get(v)??0,k=s.get(v)??g;f.size.y=p.size.y-p.size.height/2+T+k/2+r,Z.debug(`abc88 layout blocks (calc) px, pyid:${f.id}startingPosX${h}${r}${b}=>x:${f.size.x}y:${f.size.y}${f.widthInColumns}(width * (child?.w || 1)) / 2${m*(f?.widthInColumns??1)/2}`)}f.children&&sOe(f,t,r);let x=f?.widthInColumns??1;n>0&&(x=Math.min(x,n-u%n)),u+=x,Z.debug("abc88 columnsPos",f,u)}}Z.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`)}function oOe(e,{minX:t,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){let{x:a,y:s,width:l,height:u}=e.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(e.children)for(let a of e.children)({minX:t,minY:r,maxX:n,maxY:i}=oOe(a,{minX:t,minY:r,maxX:n,maxY:i}));return{minX:t,minY:r,maxX:n,maxY:i}}function lOe(e){let t=e.getBlock("root");if(!t)return;let r=Ae()?.block?.padding??8;Aj(t,e,0,0,r),sOe(t,e,r),Z.debug("getBlocks",JSON.stringify(t,null,2));let{minX:n,minY:i,maxX:a,maxY:s}=oOe(t),l=s-i,u=a-n;return{x:n,y:i,width:u,height:l}}var t7t,cOe=F(()=>{"use strict";vt();Xt();o(aOe,"calculateBlockPosition");t7t=o(e=>{let t=0,r=0;for(let n of e.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};if(Z.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type==="space")continue;let u=i/(n.widthInColumns??1);u>t&&(t=u),a>r&&(r=a)}return{width:t,height:r}},"getMaxChildSize");o(Aj,"setBlockSizes");o(sOe,"layoutBlocks");o(oOe,"findBounds");o(lOe,"layout")});var r7t,Ao,JL=F(()=>{"use strict";ur();Xt();Ls();r7t=o(async(e,t,r,n=!1,i=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=Ae(),l=Gr(s);return await Pn(e,a,{style:r,isTitle:n,useHtmlLabels:l,markdown:!1,isNode:i,width:Number.POSITIVE_INFINITY},s)},"createLabel"),Ao=r7t});var hOe,n7t,uOe,dOe=F(()=>{"use strict";vt();hOe=o((e,t,r,n,i)=>{t.arrowTypeStart&&uOe(e,"start",t.arrowTypeStart,r,n,i),t.arrowTypeEnd&&uOe(e,"end",t.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),n7t={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},uOe=o((e,t,r,n,i,a)=>{let s=n7t[r];if(!s){Z.warn(`Unknown arrow type: ${r}`);return}let l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function eD(e,t){Gr(Ae())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}var Rj,ps,pOe,mOe,i7t,a7t,fOe,gOe,yOe=F(()=>{"use strict";vt();JL();Ls();gO();$r();Xt();ur();Qt();Vr();Y4();Vy();dOe();Rj={},ps={},pOe=o(async(e,t)=>{let r=Ae(),n=Gr(r),i=e.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label"),s=t.labelType==="markdown",l=await Pn(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:s,isNode:!1,markdown:s,width:s?void 0:Number.POSITIVE_INFINITY},r);a.node().appendChild(l);let u=l.getBBox(),h=u;if(n){let f=l.children[0],p=et(l);u=f.getBoundingClientRect(),h=u,p.attr("width",u.width),p.attr("height",u.height)}else{let f=et(l).select("text").node();f&&typeof f.getBBox=="function"&&(h=f.getBBox())}a.attr("transform",ml(h,n)),Rj[t.id]=i,t.width=u.width,t.height=u.height;let d;if(t.startLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(p,t.startLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].startLeft=f,eD(d,t.startLabelLeft)}if(t.startLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(p,t.startLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].startRight=f,eD(d,t.startLabelRight)}if(t.endLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(f,t.endLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].endLeft=f,eD(d,t.endLabelLeft)}if(t.endLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(f,t.endLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].endRight=f,eD(d,t.endLabelRight)}return l},"insertEdgeLabel");o(eD,"setTerminalWidth");mOe=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,Rj[e.id],t);let r=t.updatedPath?t.updatedPath:t.originalPath,n=Ae(),{subGraphTitleTotalMargin:i}=oc(n);if(e.label){let a=Rj[e.id],s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e.startLabelLeft){let a=ps[e.id].startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=ps[e.id].startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=ps[e.id].endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=ps[e.id].endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),i7t=o((e,t)=>{let r=e.x,n=e.y,i=Math.abs(t.x-r),a=Math.abs(t.y-n),s=e.width/2,l=e.height/2;return i>=s||a>=l},"outsideNode"),a7t=o((e,t,r)=>{Z.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,a=Math.abs(n-r.x),s=e.width/2,l=r.xMath.abs(n-t.x)*u){let f=r.y{Z.debug("abc88 cutPathAtIntersect",e,t);let r=[],n=e[0],i=!1;return e.forEach(a=>{if(!i7t(t,a)&&!i){let s=a7t(t,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),gOe=o(function(e,t,r,n,i,a,s){let l=r.points;Z.debug("abc88 InsertEdge: edge=",r,"e=",t);let u=!1,h=a.node(t.v);var d=a.node(t.w);d?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(d.intersect(l[l.length-1]))),r.toCluster&&(Z.debug("to cluster abc88",n[r.toCluster]),l=fOe(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(Z.debug("from cluster abc88",n[r.fromCluster]),l=fOe(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let f=l.filter(k=>!Number.isNaN(k.y)),p=rc;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=U4(r),y=tc().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=e.append("path").attr("d",y(f)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(Ae().flowchart.arrowMarkerAbsolute||Ae().state.arrowMarkerAbsolute)&&(b=Wp(!0)),hOe(x,r,b,s,i);let T={};return u&&(T.updatedPath=l),T.originalPath=r.points,T},"insertEdge")});var s7t,vOe,xOe=F(()=>{"use strict";s7t=o(e=>{let t=new Set;for(let r of e)switch(r){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(r);break}return t},"expandAndDeduplicateDirections"),vOe=o((e,t,r,n)=>{let i=s7t(e),a=2,s=t.height+2*r.padding,l=s/a,u=n??t.width+2*l+r.padding,h=r.padding/2;return i.has("right")&&i.has("left")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:l,y:0},{x:u/2,y:2*h},{x:u-l,y:0},{x:u,y:0},{x:u,y:-s/3},{x:u+2*h,y:-s/2},{x:u,y:-2*s/3},{x:u,y:-s},{x:u-l,y:-s},{x:u/2,y:-s-2*h},{x:l,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*h,y:-s/2},{x:0,y:-s/3}]:i.has("right")&&i.has("left")&&i.has("up")?[{x:l,y:0},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:l,y:-s},{x:0,y:-s/2}]:i.has("right")&&i.has("left")&&i.has("down")?[{x:0,y:0},{x:l,y:-s},{x:u-l,y:-s},{x:u,y:0}]:i.has("right")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:u,y:-l},{x:u,y:-s+l},{x:0,y:-s}]:i.has("left")&&i.has("up")&&i.has("down")?[{x:u,y:0},{x:0,y:-l},{x:0,y:-s+l},{x:u,y:-s}]:i.has("right")&&i.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:i.has("up")&&i.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:i.has("right")&&i.has("up")?[{x:0,y:0},{x:u,y:-l},{x:0,y:-s}]:i.has("right")&&i.has("down")?[{x:0,y:0},{x:u,y:0},{x:0,y:-s}]:i.has("left")&&i.has("up")?[{x:u,y:0},{x:0,y:-l},{x:u,y:-s}]:i.has("left")&&i.has("down")?[{x:u,y:0},{x:0,y:0},{x:u,y:-s}]:i.has("right")?[{x:l,y:-h},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s+h}]:i.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:i.has("up")?[{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h}]:i.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:[{x:0,y:0}]},"getArrowPoints")});function o7t(e,t){return e.intersect(t)}var bOe,TOe=F(()=>{"use strict";o(o7t,"intersectNode");bOe=o7t});function l7t(e,t,r,n){var i=e.x,a=e.y,s=i-n.x,l=a-n.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);n.x{"use strict";o(l7t,"intersectEllipse");tD=l7t});function c7t(e,t,r){return tD(e,t,t,r)}var COe,wOe=F(()=>{"use strict";_j();o(c7t,"intersectCircle");COe=c7t});function u7t(e,t,r,n){var i,a,s,l,u,h,d,f,p,m,g,y,v,x,b;if(i=t.y-e.y,s=e.x-t.x,u=t.x*e.y-e.x*t.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&kOe(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,d=a*e.x+l*e.y+h,f=a*t.x+l*t.y+h,!(d!==0&&f!==0&&kOe(d,f))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function kOe(e,t){return e*t>0}var SOe,EOe=F(()=>{"use strict";o(u7t,"intersectLine");o(kOe,"sameSign");SOe=u7t});function h7t(e,t,r){var n=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var u=n-e.width/2-s,h=i-e.height/2-l,d=0;d1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),T=y.x-r.x,k=y.y-r.y,C=Math.sqrt(T*T+k*k);return b{"use strict";EOe();AOe=h7t;o(h7t,"intersectPolygon")});var d7t,_Oe,LOe=F(()=>{"use strict";d7t=o((e,t)=>{var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),_Oe=d7t});var ti,Lj=F(()=>{"use strict";TOe();wOe();_j();ROe();LOe();ti={node:bOe,circle:COe,ellipse:tD,polygon:AOe,rect:_Oe}});function Ic(e,t,r,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Ji,mi,Dj=F(()=>{"use strict";JL();Ls();Xt();ur();$r();Vr();Qt();HP();Ji=o(async(e,t,r,n)=>{let i=Ae(),a,s=t.useHtmlLabels||Gr(i);r?a=r:a="node default";let l=e.insert("g").attr("class",a).attr("id",t.domId||t.id),u=l.insert("g").attr("class","label").attr("style",t.labelStyle),h;t.labelText===void 0?h="":h=typeof t.labelText=="string"?t.labelText:t.labelText[0];let d;t.labelType==="markdown"?d=Pn(u,mr(Rs(h),i),{useHtmlLabels:s,width:t.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=await Ao(u,mr(Rs(h),i),t.labelStyle,!1,n);let f=d.getBBox(),p=t.padding/2;if(Gr(i)){let m=d.children[0],g=et(d);await E4(m,h),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return s?u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):u.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:f,halfPadding:p,label:u}},"labelHelper"),mi=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds");o(Ic,"insertPolygonShape")});var f7t,DOe,IOe=F(()=>{"use strict";Dj();vt();Xt();ur();Lj();f7t=o(async(e,t)=>{t.useHtmlLabels||Gr(Ae())||(t.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Ji(e,t,"node "+t.classes,!0);Z.info("Classes = ",t.classes);let s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+t.padding).attr("height",i.height+t.padding),mi(t,s),t.intersect=function(l){return ti.rect(t,l)},n},"note"),DOe=f7t});function Ij(e,t,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");t.includes("t")?(Z.debug("add top border"),a(r)):s(r),t.includes("r")?(Z.debug("add right border"),a(n)):s(n),t.includes("b")?(Z.debug("add bottom border"),a(r)):s(r),t.includes("l")?(Z.debug("add left border"),a(n)):s(n),e.attr("stroke-dasharray",i.join(" "))}var MOe,rl,NOe,p7t,m7t,g7t,y7t,v7t,x7t,b7t,T7t,C7t,w7t,k7t,S7t,E7t,A7t,R7t,_7t,L7t,D7t,I7t,POe,M7t,N7t,OOe,rD,Mj,BOe,$Oe=F(()=>{"use strict";$r();Xt();ur();vt();xOe();JL();Lj();IOe();Dj();MOe=o(e=>e?" "+e:"","formatClass"),rl=o((e,t)=>`${t||"node default"}${MOe(e.classes)} ${MOe(e.class)}`,"getClassesFromNode"),NOe=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Z.info("Question main (Circle)");let u=Ic(r,s,s,l);return u.attr("style",t.style),mi(t,u),t.intersect=function(h){return Z.warn("Intersect called"),ti.polygon(t,l,h)},r},"question"),p7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return ti.circle(t,14,s)},r},"choice"),m7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=4,a=t.positioned?t.height:n.height+t.padding,s=a/i,l=t.positioned?t.width:n.width+2*s+t.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Ic(r,l,a,u);return h.attr("style",t.style),mi(t,h),t.intersect=function(d){return ti.polygon(t,u,d)},r},"hexagon"),g7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,void 0,!0),i=2,a=n.height+2*t.padding,s=a/i,l=n.width+2*s+t.padding,h=t.positioned&&(t.widthInColumns??1)>1&&t.width>l?t.width:l,d=vOe(t.directions,n,t,h),f=Ic(r,h,a,d);return f.attr("style",t.style),mi(t,f),t.intersect=function(p){return ti.polygon(t,d,p)},r},"block_arrow"),y7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Ic(r,i,a,s).attr("style",t.style),t.width=i+a,t.height=a,t.intersect=function(u){return ti.polygon(t,s,u)},r},"rect_left_inv_arrow"),v7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"lean_right"),x7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"lean_left"),b7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"trapezoid"),T7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"inv_trapezoid"),C7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"rect_right_inv_arrow"),w7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+t.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return mi(t,h),t.intersect=function(d){let f=ti.rect(t,d),p=f.x-t.x;if(a!=0&&(Math.abs(p)t.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,d.y-t.y>0&&(m=-m),f.y+=m}return f},r},"cylinder"),k7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,"node "+t.classes+" "+t.class,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,u=t.positioned?-s/2:-n.width/2-i,h=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Ij(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return mi(t,a),t.intersect=function(d){return ti.rect(t,d)},r},"rect"),S7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,"node "+t.classes,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,u=t.positioned?-s/2:-n.width/2-i,h=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Ij(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return mi(t,a),t.intersect=function(d){return ti.rect(t,d)},r},"composite"),E7t=o(async(e,t)=>{let{shapeSvg:r}=await Ji(e,t,"label",!0);Z.trace("Classes = ",t.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),t.props){let s=new Set(Object.keys(t.props));t.props.borders&&(Ij(n,t.props.borders,i,a),s.delete("borders")),s.forEach(l=>{Z.warn(`Unknown node property ${l}`)})}return mi(t,n),t.intersect=function(s){return ti.rect(t,s)},r},"labelRect");o(Ij,"applyNodePropertyBorders");A7t=o(async(e,t)=>{let r;t.classes?r="node "+t.classes:r="node default";let n=e.insert("g").attr("class",r).attr("id",t.domId||t.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText,u="";typeof l=="object"?u=l[0]:u=l,Z.info("Label text abc79",u,l,typeof l=="object");let h=await Ao(s,u,t.labelStyle,!0,!0),d={width:0,height:0};if(Gr(Ae())){let y=h.children[0],v=et(h);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}Z.info("Text 2",l);let f=l.slice(1,l.length),p=h.getBBox(),m=await Ao(s,f.join?f.join("
    "):f,t.labelStyle,!0,!0);if(Gr(Ae())){let y=m.children[0],v=et(m);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}let g=t.padding/2;return et(m).attr("transform","translate( "+(d.width>p.width?0:(p.width-d.width)/2)+", "+(p.height+g+5)+")"),et(h).attr("transform","translate( "+(d.width{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.height+t.padding,a=n.width+i/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return mi(t,s),t.intersect=function(l){return ti.rect(t,l)},r},"stadium"),_7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,rl(t,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),Z.info("Circle main"),mi(t,a),t.intersect=function(s){return Z.info("Circle intersect",t,n.width/2+i,s),ti.circle(t,n.width/2+i,s)},r},"circle"),L7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,rl(t,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i+a).attr("width",n.width+t.padding+a*2).attr("height",n.height+t.padding+a*2),u.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),Z.info("DoubleCircle main"),mi(t,l),t.intersect=function(h){return Z.info("DoubleCircle intersect",t,n.width/2+i+a,h),ti.circle(t,n.width/2+i+a,h)},r},"doublecircle"),D7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"subroutine"),I7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),mi(t,n),t.intersect=function(i){return ti.circle(t,7,i)},r},"start"),POe=o((e,t,r)=>{let n=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return mi(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return ti.rect(t,l)},n},"forkJoin"),M7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),mi(t,i),t.intersect=function(a){return ti.circle(t,7,a)},r},"end"),N7t=o(async(e,t)=>{let r=t.padding/2,n=4,i=8,a;t.classes?a="node "+t.classes:a="node default";let s=e.insert("g").attr("class",a).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),d=0,f=n,p=s.insert("g").attr("class","label"),m=0,g=t.classData.annotations?.[0],y=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",v=await Ao(p,y,t.labelStyle,!0,!0),x=v.getBBox();if(Gr(Ae())){let R=v.children[0],L=et(v);x=R.getBoundingClientRect(),L.attr("width",x.width),L.attr("height",x.height)}t.classData.annotations[0]&&(f+=x.height+n,d+=x.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(Gr(Ae())?b+="<"+t.classData.type+">":b+="<"+t.classData.type+">");let T=await Ao(p,b,t.labelStyle,!0,!0);et(T).attr("class","classTitle");let k=T.getBBox();if(Gr(Ae())){let R=T.children[0],L=et(T);k=R.getBoundingClientRect(),L.attr("width",k.width),L.attr("height",k.height)}f+=k.height+n,k.width>d&&(d=k.width);let C=[];t.classData.members.forEach(async R=>{let L=R.getDisplayDetails(),N=L.displayText;Gr(Ae())&&(N=N.replace(//g,">"));let I=await Ao(p,N,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0),_=I.getBBox();if(Gr(Ae())){let A=I.children[0],M=et(I);_=A.getBoundingClientRect(),M.attr("width",_.width),M.attr("height",_.height)}_.width>d&&(d=_.width),f+=_.height+n,C.push(I)}),f+=i;let w=[];if(t.classData.methods.forEach(async R=>{let L=R.getDisplayDetails(),N=L.displayText;Gr(Ae())&&(N=N.replace(//g,">"));let I=await Ao(p,N,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0),_=I.getBBox();if(Gr(Ae())){let A=I.children[0],M=et(I);_=A.getBoundingClientRect(),M.attr("width",_.width),M.attr("height",_.height)}_.width>d&&(d=_.width),f+=_.height+n,w.push(I)}),f+=i,g){let R=(d-x.width)/2;et(v).attr("transform","translate( "+(-1*d/2+R)+", "+-1*f/2+")"),m=x.height+n}let S=(d-k.width)/2;return et(T).attr("transform","translate( "+(-1*d/2+S)+", "+(-1*f/2+m)+")"),m+=k.height+n,u.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+i+m).attr("y2",-f/2-r+i+m),m+=i,C.forEach(R=>{et(R).attr("transform","translate( "+-d/2+", "+(-1*f/2+m+i/2)+")");let L=R?.getBBox();m+=(L?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+i+m).attr("y2",-f/2-r+i+m),m+=i,w.forEach(R=>{et(R).attr("transform","translate( "+-d/2+", "+(-1*f/2+m)+")");let L=R?.getBBox();m+=(L?.height??0)+n}),l.attr("style",t.style).attr("class","outer title-state").attr("x",-d/2-r).attr("y",-(f/2)-r).attr("width",d+t.padding).attr("height",f+t.padding),mi(t,l),t.intersect=function(R){return ti.rect(t,R)},s},"class_box"),OOe={rhombus:NOe,composite:S7t,question:NOe,rect:k7t,labelRect:E7t,rectWithTitle:A7t,choice:p7t,circle:_7t,doublecircle:L7t,stadium:R7t,hexagon:m7t,block_arrow:g7t,rect_left_inv_arrow:y7t,lean_right:v7t,lean_left:x7t,trapezoid:b7t,inv_trapezoid:T7t,rect_right_inv_arrow:C7t,cylinder:w7t,start:I7t,end:M7t,note:DOe,subroutine:D7t,fork:POe,join:POe,class_box:N7t},rD={},Mj=o(async(e,t,r)=>{let n,i;if(t.link){let a;Ae().securityLevel==="sandbox"?a="_top":t.linkTarget&&(a=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",a),i=await OOe[t.shape](n,t,r)}else i=await OOe[t.shape](e,t,r),n=i;return t.tooltip&&i.attr("title",t.tooltip),t.class&&i.attr("class","node default "+t.class),rD[t.id]=n,t.haveCallback&&rD[t.id].attr("class",rD[t.id].attr("class")+" clickable"),n},"insertNode"),BOe=o(e=>{let t=rD[e.id];Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode")});function FOe(e,t,r=!1){let n=e,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=uP(n?.styles??[]),h=n.label,d=n.size??{width:0,height:0,x:0,y:0},f=t.getDiagramId();return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,domId:f?`${f}-${n.id}`:n.id,directions:n.directions,width:d.width,height:d.height,x:d.x,y:d.y,positioned:r,intersect:void 0,type:n.type,padding:l??_t()?.block?.padding??0,widthInColumns:n.widthInColumns??1}}async function P7t(e,t,r){let n=FOe(t,r,!1);if(n.type==="group")return;let i=_t(),a=await Mj(e,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function O7t(e,t,r){let n=FOe(t,r,!0);if(r.getBlock(n.id).type!=="space"){let a=_t();await Mj(e,n,{config:a}),t.intersect=n?.intersect,BOe(n)}}async function Nj(e,t,r,n){for(let i of t)await n(e,i,r),i.children&&await Nj(e,i.children,r,n)}async function zOe(e,t,r){await Nj(e,t,r,P7t)}async function GOe(e,t,r){await Nj(e,t,r,O7t)}async function VOe(e,t,r,n,i){let a=new on({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of t)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,d=u.size,f=[{x:h.x,y:h.y},{x:h.x+(d.x-h.x)/2,y:h.y+(d.y-h.y)/2},{x:d.x,y:d.y}],p=i?`${i}-${s.id}`:s.id,m=s.thickness==="thick"?"edge-thickness-thick":"edge-thickness-normal",g=s.pattern==="dotted"?"edge-pattern-dotted":"edge-pattern-solid",y=`${m} ${g} flowchart-link LS-a1 LE-b1`;gOe(e,{v:s.start,w:s.end,name:p},{...s,id:p,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y},void 0,"block",a,i),s.label&&(await pOe(e,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y}),mOe({...s,x:f[1].x,y:f[1].y},{originalPath:f}))}}}var WOe=F(()=>{"use strict";qo();ur();yOe();$Oe();Qt();o(FOe,"getNodeFromBlock");o(P7t,"calculateBlockSize");o(O7t,"insertBlockPositioned");o(Nj,"performOperations");o(zOe,"calculateBlockSizes");o(GOe,"insertBlocks");o(VOe,"insertEdges")});var B7t,$7t,qOe,HOe=F(()=>{"use strict";$r();ur();iOe();vt();$n();cOe();WOe();B7t=o(function(e,t){return t.db.getClasses()},"getClasses"),$7t=o(async function(e,t,r,n){let{securityLevel:i,block:a}=_t(),s=n.db;s.setDiagramId(t);let l;i==="sandbox"&&(l=et("#i"+t));let u=i==="sandbox"?et(l.nodes()[0].contentDocument.body):et("body"),h=i==="sandbox"?u.select(`[id="${t}"]`):et(`[id="${t}"]`);nOe(h,["point","circle","cross"],n.type,t);let f=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await zOe(g,f,s);let y=lOe(s);if(await GOe(g,f,s),await VOe(g,m,p,s,t),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,T=v.width+10,{useMaxWidth:k}=a;Wr(h,b,T,!!k),Z.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),qOe={draw:$7t,getClasses:B7t}});var UOe={};ir(UOe,{diagram:()=>F7t});var F7t,YOe=F(()=>{"use strict";YPe();eOe();rOe();HOe();F7t={parser:UPe,db:JPe,renderer:qOe,styles:tOe}});function H7t(e){return e.some(t=>JOe.test(t))}function U7t(e){for(let t of e){let r=e9e.exec(t);if(r?.index&&r.index>0)return r.index}return 4}function t9e(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(r,n)=>{let i=parseInt(n,10),a=t.get(i);return a?`line ${a}`:r})}function r9e(e){let t=e.split(` +`),r=new Map,n=-1;for(let[u,h]of t.entries())if(h.trim()==="treeView-beta"){n=u;break}if(n===-1)return{text:e,lineMap:r};let i=[];for(let u=n+1;u{"use strict";JOe=/[─━│┃└┗├┣]/,e9e=/[└┗├┣]/,W7t=/[─━]/,KOe=/^[\s│┃]+$/,ZOe=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,QOe=/^\s*%%/,q7t=" ";o(H7t,"isBoxDrawingFormat");o(U7t,"inferSegmentWidth");o(t9e,"remapErrorLines");o(r9e,"preprocessBoxDrawing")});var Uu,Y7t,j7t,X7t,K7t,Z7t,Q7t,J7t,Zw,Pj=F(()=>{"use strict";ur();Wi();Qt();J_();Nn();Uu=new Cp(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",nodeType:"directory",children:[]}]})),Y7t=o(()=>{Uu.reset(),yr()},"clear"),j7t=o(()=>Uu.records.stack[0],"getRoot"),X7t=o(()=>Uu.records.cnt,"getCount"),K7t=cr.treeView,Z7t=o(()=>qr(K7t,_t().treeView),"getConfig"),Q7t=o((e,t,r,n,i,a)=>{for(;e<=Uu.records.stack[Uu.records.stack.length-1].level;)Uu.records.stack.pop();let s={id:Uu.records.cnt++,level:e,name:t,nodeType:r,icon:i,cssClass:n,description:a,children:[]};Uu.records.stack[Uu.records.stack.length-1].children.push(s),Uu.records.stack.push(s)},"addNode"),J7t={clear:Y7t,addNode:Q7t,getRoot:j7t,getCount:X7t,getConfig:Z7t,getAccTitle:Ar,getAccDescription:_r,getDiagramTitle:Lr,setAccDescription:Rr,setAccTitle:kr,setDiagramTitle:Or},Zw=J7t});var e8t,i9e,a9e=F(()=>{"use strict";Xa();ur();vt();Vr();Hs();n9e();Pj();e8t=o(e=>{Gn(e,Zw);for(let t of e.nodes){let r=typeof t.indent=="number"?t.indent:0,n=t.name,i=n.endsWith("/");i&&(n=n.slice(0,-1));let a=i?"directory":"file",s=t.classAnnotation||void 0,l=t.iconAnnotation,u=l!==void 0?l||"none":void 0,h=t.descAnnotation||void 0,d=h?mr(h,_t()):void 0;Zw.addNode(r,n,a,s,u,d)}},"populate"),i9e={parse:o(async e=>{let{text:t,lineMap:r}=r9e(e);try{let n=await Si("treeView",t);Z.debug(n),e8t(n)}catch(n){throw r.size>0&&n instanceof Error&&(n.message=t9e(n.message,r)),n}},"parse")}});function t8t(e,t){let r=t?.filenameIcons?.[e];if(r)return r;let n=e.lastIndexOf(".");if(n>0){let i=e.substring(n).toLowerCase(),a=t?.extensionIcons;return a?.[i]??a?.[i.slice(1)]}}function s9e(e,t){return e.includes(":")?e:e in px.icons||!t?`${px.prefix}:${e}`:`${t}:${e}`}function Oj(e,t){if(e.icon!=="none"){if(e.icon)return s9e(e.icon,t.defaultIconPack);if(t.showIcons){if(e.nodeType==="file"){let r=t8t(e.name,t);if(r==="none")return;if(r)return s9e(r,t.defaultIconPack)}return`${px.prefix}:${e.nodeType==="directory"?"folder":"file"}`}}}var px,o9e=F(()=>{"use strict";px={prefix:"mermaid-treeview",height:24,width:24,icons:{folder:{body:''},file:{body:''}}};o(t8t,"detectIcon");o(s9e,"qualifyIcon");o(Oj,"getNodeIcon")});var Bj,r8t,n8t,c9e,i8t,a8t,l9e,s8t,o8t,l8t,u9e,h9e=F(()=>{"use strict";vt();Vl();Ka();$n();o9e();ty([{name:px.prefix,icons:px}]);Bj=14,r8t=4,n8t=16,c9e=o((e,t)=>`tv-icon-${e}-${t.replace(/[^\w-]/g,"-")}`,"iconSymbolId"),i8t=o(async(e,t,r,n)=>{let i=new Set,a=o(u=>{let h=Oj(u,r);h&&i.add(h),u.children.forEach(a)},"collect");if(a(t),i.size===0)return;let s=await Promise.all([...i].map(async u=>({icon:u,svg:await ts(u,{height:Bj,width:Bj})}))),l=e.append("defs");for(let{icon:u,svg:h}of s)l.append("g").attr("id",c9e(n,u)).html(h)},"injectIconDefs"),a8t=o((e,t,r,n,i,a)=>{let s=n.append("g"),l="treeView-node-label";r.nodeType==="directory"&&(l+=" treeView-node-dir"),r.cssClass&&(l+=` ${r.cssClass}`);let u=Bj+r8t,h=Oj(r,i),d=h!==void 0;h&&s.append("use").attr("xlink:href",`#${c9e(a,h)}`).attr("x",e+i.paddingX).attr("y",t+i.paddingY).attr("class","treeView-node-icon");let f=s.append("text").text(r.name).attr("dominant-baseline","middle").attr("class",l),{height:p,width:m}=f.node().getBBox(),g=p+i.paddingY*2,y=e+i.paddingX+(d?u:0);f.attr("x",y),f.attr("y",t+g/2);let v=y+m,x=m+i.paddingX*2+(d?u:0);return r.BBox={x:e,y:t,width:x,height:g},r.cssClass?.split(/\s+/).includes("highlight")&&s.insert("rect",":first-child").attr("x",e).attr("y",t+1).attr("width",0).attr("height",g-2).attr("rx",3).attr("class","treeView-highlight-bg"),{node:r,nodeGroup:s,labelRightEdge:v,centerY:t+g/2}},"positionLabel"),l9e=o((e,t,r,n,i,a)=>e.append("line").attr("x1",t).attr("y1",r).attr("x2",n).attr("y2",i).attr("stroke-width",a).attr("class","treeView-node-line"),"positionLine"),s8t=o((e,t,r,n)=>{let i=0,a=0,s=[],l=o((d,f,p,m)=>{let g=m*(p.rowIndent+p.paddingX),y=a8t(g,i,f,d,p,n);s.push(y);let{height:v,width:x}=f.BBox;l9e(d,g-p.rowIndent,i+v/2,g,i+v/2,p.lineThickness),a=Math.max(a,g+x),i+=v},"drawNode"),u=o((d,f=0)=>{l(e,d,r,f),d.children.forEach(y=>{u(y,f+1)});let{x:p,y:m,height:g}=d.BBox;if(d.children.length){let{y,height:v}=d.children[d.children.length-1].BBox;l9e(e,p+r.paddingX,m+g,p+r.paddingX,y+v/2+r.lineThickness/2,r.lineThickness)}},"processNode");u(t);let h=s.filter(d=>d.node.description);if(h.length>0){let f=Math.max(...s.map(p=>p.labelRightEdge))+n8t;for(let p of h){let g=p.nodeGroup.append("text").text(p.node.description).attr("dominant-baseline","middle").attr("class","treeView-node-description").attr("x",f).attr("y",p.centerY).node().getBBox();a=Math.max(a,f+g.width+r.paddingX)}}for(let d of s)if(d.node.cssClass?.split(/\s+/).includes("highlight")){let f=d.nodeGroup.select(".treeView-highlight-bg");if(!f.empty()){let p=a-d.node.BBox.x+8;f.attr("width",p),a=Math.max(a,d.node.BBox.x+p+2)}}return{totalHeight:i,totalWidth:a}},"drawTree"),o8t=o(async(e,t,r,n)=>{Z.debug(`Rendering treeView diagram +`+e);let i=n.db,a=i.getRoot(),s=i.getConfig(),l=xn(t);await i8t(l,a,s,t);let u=l.append("g");u.attr("class","tree-view");let{totalHeight:h,totalWidth:d}=s8t(u,a,s,t);l.attr("viewBox",`-${s.lineThickness/2} 0 ${d} ${h}`),Wr(l,h,d,s.useMaxWidth)},"draw"),l8t={draw:o8t},u9e=l8t});var c8t,u8t,d9e,f9e=F(()=>{"use strict";Qt();c8t={labelFontSize:"16px",labelColor:"black",lineColor:"black",iconColor:"#546e7a",descriptionColor:"#6a9955",highlightBg:"rgba(255, 193, 7, 0.15)",highlightStroke:"#ffc107"},u8t=o(({treeView:e})=>{let{labelFontSize:t,labelColor:r,lineColor:n,iconColor:i,descriptionColor:a,highlightBg:s,highlightStroke:l}=qr(c8t,e);return` + .treeView-node-label { + font-size: ${t}; + fill: ${r}; + white-space: pre; + } + .treeView-node-dir { + font-weight: bold; + } + .treeView-node-line { + stroke: ${n}; + } + .treeView-node-icon { + color: ${i}; + } + .treeView-node-description { + font-size: ${t}; + fill: ${a}; + font-style: italic; + white-space: pre; + } + .treeView-highlight-bg { + fill: ${s}; + stroke: ${l}; + stroke-width: 1; + } + `},"styles"),d9e=u8t});var p9e={};ir(p9e,{diagram:()=>h8t});var h8t,m9e=F(()=>{"use strict";a9e();Pj();h9e();f9e();h8t={db:Zw,renderer:u9e,parser:i9e,styles:d9e}});var $j,Fj,Qw,v9e,zj,ms,Yu,Jw,x9e,m8t,ek,b9e,T9e,C9e,w9e,k9e,nD,Dp,iD=F(()=>{"use strict";$j={L:"left",R:"right",T:"top",B:"bottom"},Fj={L:o(e=>`${e},${e/2} 0,${e} 0,0`,"L"),R:o(e=>`0,${e/2} ${e},0 ${e},${e}`,"R"),T:o(e=>`0,0 ${e},0 ${e/2},${e}`,"T"),B:o(e=>`${e/2},0 ${e},${e} 0,${e}`,"B")},Qw={L:o((e,t)=>e-t+2,"L"),R:o((e,t)=>e-2,"R"),T:o((e,t)=>e-t+2,"T"),B:o((e,t)=>e-2,"B")},v9e=o(function(e){return ms(e)?e==="L"?"R":"L":e==="T"?"B":"T"},"getOppositeArchitectureDirection"),zj=o(function(e){let t=e;return t==="L"||t==="R"||t==="T"||t==="B"},"isArchitectureDirection"),ms=o(function(e){let t=e;return t==="L"||t==="R"},"isArchitectureDirectionX"),Yu=o(function(e){let t=e;return t==="T"||t==="B"},"isArchitectureDirectionY"),Jw=o(function(e,t){let r=ms(e)&&Yu(t),n=Yu(e)&&ms(t);return r||n},"isArchitectureDirectionXY"),x9e=o(function(e){let t=e[0],r=e[1],n=ms(t)&&Yu(r),i=Yu(t)&&ms(r);return n||i},"isArchitecturePairXY"),m8t=o(function(e){return e!=="LL"&&e!=="RR"&&e!=="TT"&&e!=="BB"},"isValidArchitectureDirectionPair"),ek=o(function(e,t){let r=`${e}${t}`;return m8t(r)?r:void 0},"getArchitectureDirectionPair"),b9e=o(function([e,t],r){let n=r[0],i=r[1];return ms(n)?Yu(i)?[e+(n==="L"?-1:1),t+(i==="T"?1:-1)]:[e+(n==="L"?-1:1),t]:ms(i)?[e+(i==="L"?1:-1),t+(n==="T"?1:-1)]:[e,t+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),T9e=o(function(e){return e==="LT"||e==="TL"?[1,1]:e==="BL"||e==="LB"?[1,-1]:e==="BR"||e==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),C9e=o(function(e,t){return Jw(e,t)?"bend":ms(e)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),w9e=o(function(e){return e.type==="service"},"isArchitectureService"),k9e=o(function(e){return e.type==="junction"},"isArchitectureJunction"),nD=o(e=>e.data(),"edgeData"),Dp=o(e=>e.data(),"nodeData")});var g8t,mx,Gj=F(()=>{"use strict";ur();Wi();Qt();Nn();iD();g8t=cr.architecture,mx=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.layoutHints=[];this.registeredIds={};this.elements={};this.diagramId="";this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr;this.clear()}static{o(this,"ArchitectureDB")}setDiagramId(t){this.diagramId=t}getDiagramId(){return this.diagramId}clear(){this.nodes={},this.groups={},this.edges=[],this.layoutHints=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},this.diagramId="",yr()}addService({id:t,icon:r,in:n,title:i,iconText:a}){if(this.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(n!==void 0){if(t===n)throw new Error(`The service [${t}] cannot be placed within itself`);if(this.registeredIds[n]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[n]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:r,iconText:a,title:i,edges:[],in:n}}getServices(){return Object.values(this.nodes).filter(w9e)}addJunction({id:t,in:r}){if(this.registeredIds[t]!==void 0)throw new Error(`The junction id [${t}] is already in use by another ${this.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The junction [${t}] cannot be placed within itself`);if(this.registeredIds[r]===void 0)throw new Error(`The junction [${t}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds[r]==="node")throw new Error(`The junction [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:r}}getJunctions(){return Object.values(this.nodes).filter(k9e)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:r,in:n,title:i}){if(this.registeredIds?.[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(n!==void 0){if(t===n)throw new Error(`The group [${t}] cannot be placed within itself`);if(this.registeredIds?.[n]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[n]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:r,title:i,in:n}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:r,lhsDir:n,rhsDir:i,lhsInto:a,rhsInto:s,lhsGroup:l,rhsGroup:u,title:h}){if(!zj(n))throw new Error(`Invalid direction given for left hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(n)}`);if(!zj(i))throw new Error(`Invalid direction given for right hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(i)}`);if(this.nodes[t]===void 0&&this.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[r]===void 0&&this.groups[r]===void 0)throw new Error(`The right-hand id [${r}] does not yet exist. Please create the service/group before declaring an edge to it.`);let d=this.nodes[t].in,f=this.nodes[r].in;if(l&&d&&f&&d==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(u&&d&&f&&d==f)throw new Error(`The right-hand id [${r}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let p={lhsId:t,lhsDir:n,lhsInto:a,lhsGroup:l,rhsId:r,rhsDir:i,rhsInto:s,rhsGroup:u,title:h};this.edges.push(p),this.nodes[t]&&this.nodes[r]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[r].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}addLayoutHint(t){if(t.members.length<2)throw new Error(`An align directive requires at least two members; got ${t.members.length}`);let r=new Set;t.members.forEach(n=>{if(this.registeredIds[n]!=="node")throw new Error(`align ${t.direction} references [${n}], which is not a service or junction`);if(r.has(n))throw new Error(`align ${t.direction} lists [${n}] more than once`);r.add(n)}),this.layoutHints.push(t)}getLayoutHints(){return this.layoutHints}getDataStructures(){if(this.dataStructures===void 0){let t={},r=Object.entries(this.nodes).reduce((u,[h,d])=>(u[h]=d.edges.reduce((f,p)=>{let m=this.getNode(p.lhsId)?.in,g=this.getNode(p.rhsId)?.in;if(m&&g&&m!==g){let y=C9e(p.lhsDir,p.rhsDir);y!=="bend"&&(t[m]??={},t[m][g]=y,t[g]??={},t[g][m]=y)}if(p.lhsId===h){let y=ek(p.lhsDir,p.rhsDir);y&&(f[y]=p.rhsId)}else{let y=ek(p.rhsDir,p.lhsDir);y&&(f[y]=p.lhsId)}return f},{}),u),{}),n=Object.keys(r)[0],i={[n]:1},a=Object.keys(r).reduce((u,h)=>h===n?u:{...u,[h]:1},{}),s=o(u=>{let h={[u]:[0,0]},d=[u];for(;d.length>0;){let f=d.shift();if(f){i[f]=1,delete a[f];let p=r[f],[m,g]=h[f];Object.entries(p).forEach(([y,v])=>{i[v]||(h[v]=b9e([m,g],y),d.push(v))})}}return h},"BFS"),l=[s(n)];for(;Object.keys(a).length>0;)l.push(s(Object.keys(a)[0]));this.dataStructures={adjList:r,spatialMaps:l,groupAlignments:t}}return this.dataStructures}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}getConfig(){return qr({...g8t,..._t().architecture})}getConfigField(t){return this.getConfig()[t]}}});var y8t,Vj,S9e=F(()=>{"use strict";Xa();vt();Hs();Gj();y8t=o((e,t)=>{Gn(e,t),e.groups.map(r=>t.addGroup(r)),e.services.map(r=>t.addService({...r,type:"service"})),e.junctions.map(r=>t.addJunction({...r,type:"junction"})),e.edges.map(r=>t.addEdge(r)),e.alignments?.map(r=>t.addLayoutHint({direction:r.direction,members:[...r.members]}))},"populateDb"),Vj={parser:{yy:void 0},parse:o(async e=>{let t=await Si("architecture",e);Z.debug(t);let r=Vj.parser?.yy;if(!(r instanceof mx))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");y8t(t,r)},"parse")}});var v8t,E9e,A9e=F(()=>{"use strict";v8t=o(e=>` + .edge { + stroke-width: ${e.archEdgeWidth}; + stroke: ${e.archEdgeColor}; + fill: none; + } + + .arrow { + fill: ${e.archEdgeArrowColor}; + } + + .node-bkg { + fill: none; + stroke: ${e.archGroupBorderColor}; + stroke-width: ${e.archGroupBorderWidth}; + stroke-dasharray: 8; + } + .node-icon-text { + display: flex; + align-items: center; + } + + .node-icon-text > div { + color: #fff; + margin: 1px; + height: fit-content; + text-align: center; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + } +`,"getStyles"),E9e=v8t});var qj=Io((tk,Wj)=>{"use strict";o((function(t,r){typeof tk=="object"&&typeof Wj=="object"?Wj.exports=r():typeof define=="function"&&define.amd?define([],r):typeof tk=="object"?tk.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(tk,function(){return(function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)})([(function(e,t,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,d){n.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(f,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=i}),(function(e,t,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&w>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(w,1);var k=x.source.owner.getEdges().indexOf(x);if(k==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(k,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),k=T.length,C=0;Cv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S,R=this.nodes,L=R.length,N=0;NT&&(y=T),vC&&(x=C),bT&&(y=T),vC&&(x=C),b=this.nodes.length){var L=0;v.forEach(function(N){N.owner==g&&L++}),L==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]f)return l[0]=u,l[1]=m,l[2]=d,l[3]=R,!1;if(hd)return l[0]=p,l[1]=h,l[2]=w,l[3]=f,!1;if(ud?(l[0]=y,l[1]=v,_=!0):(l[0]=g,l[1]=m,_=!0):M===P&&(u>d?(l[0]=p,l[1]=m,_=!0):(l[0]=x,l[1]=v,_=!0)),-D===P?d>u?(l[2]=S,l[3]=R,A=!0):(l[2]=w,l[3]=C,A=!0):D===P&&(d>u?(l[2]=k,l[3]=C,A=!0):(l[2]=L,l[3]=R,A=!0)),_&&A)return!1;if(u>d?h>f?(B=this.getCardinalDirection(M,P,4),O=this.getCardinalDirection(D,P,2)):(B=this.getCardinalDirection(-M,P,3),O=this.getCardinalDirection(-D,P,1)):h>f?(B=this.getCardinalDirection(-M,P,1),O=this.getCardinalDirection(-D,P,3)):(B=this.getCardinalDirection(M,P,2),O=this.getCardinalDirection(D,P,4)),!_)switch(B){case 1:V=m,$=u+-T/P,l[0]=$,l[1]=V;break;case 2:$=x,V=h+b*P,l[0]=$,l[1]=V;break;case 3:V=v,$=u+T/P,l[0]=$,l[1]=V;break;case 4:$=y,V=h+-b*P,l[0]=$,l[1]=V;break}if(!A)switch(O){case 1:z=C,G=d+-I/P,l[2]=G,l[3]=z;break;case 2:G=L,z=f+N*P,l[2]=G,l[3]=z;break;case 3:z=R,G=d+I/P,l[2]=G,l[3]=z;break;case 4:G=S,z=f+-N*P,l[2]=G,l[3]=z;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,k=void 0,C=void 0,w=void 0,S=void 0,R=void 0,L=void 0;return T=p-d,C=h-f,S=f*d-h*p,k=v-g,w=m-y,R=y*g-m*v,L=T*w-k*C,L===0?null:(x=(C*R-w*S)/L,b=(k*S-T*R)/L,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,e.exports=i}),(function(e,t,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},e.exports=n}),(function(e,t,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function h(d,f){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},e.exports=i}),(function(e,t,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(C[0]);T.length>0&&g;){var w=T[0];T.splice(0,1),b.add(w);for(var S=w.getEdges(),x=0;x-1&&C.splice(I,1)}b=new Set,k=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(R,1);var L=k.getNeighborsList();L.forEach(function(_){if(y.indexOf(_)<0){var A=v.get(_),M=A-1;M==1&&w.push(_),v.set(_,M)}})}y=y.concat(w),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},e.exports=n}),(function(e,t,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=i}),(function(e,t,r){"use strict";function n(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement=x.length||T>=x[0].length)){for(var k=0;kh},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=(function(At){for(var bt=[];At-- >0;)bt.push(0);return bt})(Math.min(this.m+1,this.n)),this.U=(function(At){var bt=o(function me(lt){if(lt.length==0)return 0;for(var gt=[],Ze=0;Ze0;)bt.push(0);return bt})(this.n),l=(function(At){for(var bt=[];At-- >0;)bt.push(0);return bt})(this.m),u=!0,h=!0,d=Math.min(this.m-1,this.n),f=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;P--)if(this.s[P]!==0){for(var B=P+1;B=0;H--){if((function(At,bt){return At&&bt})(H0;){var be=void 0,Pe=void 0;for(be=A-2;be>=-1&&be!==-1;be--)if(Math.abs(s[be])<=Re+ae*(Math.abs(this.s[be])+Math.abs(this.s[be+1]))){s[be]=0;break}if(be===A-2)Pe=4;else{var Ge=void 0;for(Ge=A-1;Ge>=be&&Ge!==be;Ge--){var Oe=(Ge!==A?Math.abs(s[Ge]):0)+(Ge!==be+1?Math.abs(s[Ge-1]):0);if(Math.abs(this.s[Ge])<=Re+ae*Oe){this.s[Ge]=0;break}}Ge===be?Pe=3:Ge===A-1?Pe=1:(Pe=2,be=Ge)}switch(be++,Pe){case 1:{var ue=s[A-2];s[A-2]=0;for(var ye=A-2;ye>=be;ye--){var ke=n.hypot(this.s[ye],ue),ce=this.s[ye]/ke,re=ue/ke;if(this.s[ye]=ke,ye!==be&&(ue=-re*s[ye-1],s[ye-1]=ce*s[ye-1]),h)for(var J=0;J=this.s[be+1]);){var ft=this.s[be];if(this.s[be]=this.s[be+1],this.s[be+1]=ft,h&&beMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(t,r){typeof rk=="object"&&typeof Hj=="object"?Hj.exports=r(qj()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof rk=="object"?rk.coseBase=r(qj()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(rk,function(e){return(()=>{"use strict";var t={45:((a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u}),806:((a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var d in u)h[d]=u[d];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h}),767:((a,s,l)=>{var u=l(551).FDLayoutEdge;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),880:((a,s,l)=>{var u=l(551).LGraph;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),578:((a,s,l)=>{var u=l(551).LGraphManager;function h(f){u.call(this,f)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),765:((a,s,l)=>{var u=l(551).FDLayout,h=l(578),d=l(880),f=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,T=l(551).DimensionD,k=l(551).Layout,C=l(551).Integer,w=l(551).IGeometry,S=l(551).LGraph,R=l(551).Transform,L=l(551).LinkedList;function N(){u.call(this),this.toBeTiled={},this.constraints={}}o(N,"CoSELayout"),N.prototype=Object.create(u.prototype);for(var I in u)N[I]=u[I];N.prototype.newGraphManager=function(){var _=new h(this);return this.graphManager=_,_},N.prototype.newGraph=function(_){return new d(null,this.graphManager,_)},N.prototype.newNode=function(_){return new f(this.graphManager,_)},N.prototype.newEdge=function(_){return new p(null,null,_)},N.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},N.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},N.prototype.layout=function(){var _=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return _&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},N.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var A=new Set(this.getAllNodes()),M=this.nodesWithGravity.filter(function(B){return A.has(B)});this.graphManager.setAllNodesToApplyGravitation(M)}}else{var _=this.getFlatForest();if(_.length>0)this.positionNodesRadially(_);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var A=new Set(this.getAllNodes()),M=this.nodesWithGravity.filter(function(D){return A.has(D)});this.graphManager.setAllNodesToApplyGravitation(M),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},N.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var _=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(P){return _.has(P)});this.graphManager.setAllNodesToApplyGravitation(A),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var M=!this.isTreeGrowing&&!this.isGrowthFinished,D=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(M,D),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},N.prototype.getPositionsData=function(){for(var _=this.graphManager.getAllNodes(),A={},M=0;M<_.length;M++){var D=_[M].rect,P=_[M].id;A[P]={id:P,x:D.getCenterX(),y:D.getCenterY(),w:D.width,h:D.height}}return A},N.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var _=!1;if(y.ANIMATE==="during")this.emit("layoutstarted");else{for(;!_;)_=this.tick();this.graphManager.updateBounds()}},N.prototype.moveNodes=function(){for(var _=this.getAllNodes(),A,M=0;M<_.length;M++)A=_[M],A.calculateDisplacement();Object.keys(this.constraints).length>0&&this.updateDisplacements();for(var M=0;M<_.length;M++)A=_[M],A.move()},N.prototype.initConstraintVariables=function(){var _=this;this.idToNodeMap=new Map,this.fixedNodeSet=new Set;for(var A=this.graphManager.getAllNodes(),M=0;M0&&(D.fixedNodeWeight=B)}}if(this.constraints.relativePlacementConstraint){var O=new Map,$=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(U){_.fixedNodesOnHorizontal.add(U),_.fixedNodesOnVertical.add(U)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var V=this.constraints.alignmentConstraint.vertical,M=0;M=2*U.length/3;le--)oe=Math.floor(Math.random()*(le+1)),te=U[le],U[le]=U[oe],U[oe]=te;return U},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(U){if(U.left){var oe=O.has(U.left)?O.get(U.left):U.left,te=O.has(U.right)?O.get(U.right):U.right;_.nodesInRelativeHorizontal.includes(oe)||(_.nodesInRelativeHorizontal.push(oe),_.nodeToRelativeConstraintMapHorizontal.set(oe,[]),_.dummyToNodeForVerticalAlignment.has(oe)?_.nodeToTempPositionMapHorizontal.set(oe,_.idToNodeMap.get(_.dummyToNodeForVerticalAlignment.get(oe)[0]).getCenterX()):_.nodeToTempPositionMapHorizontal.set(oe,_.idToNodeMap.get(oe).getCenterX())),_.nodesInRelativeHorizontal.includes(te)||(_.nodesInRelativeHorizontal.push(te),_.nodeToRelativeConstraintMapHorizontal.set(te,[]),_.dummyToNodeForVerticalAlignment.has(te)?_.nodeToTempPositionMapHorizontal.set(te,_.idToNodeMap.get(_.dummyToNodeForVerticalAlignment.get(te)[0]).getCenterX()):_.nodeToTempPositionMapHorizontal.set(te,_.idToNodeMap.get(te).getCenterX())),_.nodeToRelativeConstraintMapHorizontal.get(oe).push({right:te,gap:U.gap}),_.nodeToRelativeConstraintMapHorizontal.get(te).push({left:oe,gap:U.gap})}else{var le=$.has(U.top)?$.get(U.top):U.top,ie=$.has(U.bottom)?$.get(U.bottom):U.bottom;_.nodesInRelativeVertical.includes(le)||(_.nodesInRelativeVertical.push(le),_.nodeToRelativeConstraintMapVertical.set(le,[]),_.dummyToNodeForHorizontalAlignment.has(le)?_.nodeToTempPositionMapVertical.set(le,_.idToNodeMap.get(_.dummyToNodeForHorizontalAlignment.get(le)[0]).getCenterY()):_.nodeToTempPositionMapVertical.set(le,_.idToNodeMap.get(le).getCenterY())),_.nodesInRelativeVertical.includes(ie)||(_.nodesInRelativeVertical.push(ie),_.nodeToRelativeConstraintMapVertical.set(ie,[]),_.dummyToNodeForHorizontalAlignment.has(ie)?_.nodeToTempPositionMapVertical.set(ie,_.idToNodeMap.get(_.dummyToNodeForHorizontalAlignment.get(ie)[0]).getCenterY()):_.nodeToTempPositionMapVertical.set(ie,_.idToNodeMap.get(ie).getCenterY())),_.nodeToRelativeConstraintMapVertical.get(le).push({bottom:ie,gap:U.gap}),_.nodeToRelativeConstraintMapVertical.get(ie).push({top:le,gap:U.gap})}});else{var z=new Map,W=new Map;this.constraints.relativePlacementConstraint.forEach(function(U){if(U.left){var oe=O.has(U.left)?O.get(U.left):U.left,te=O.has(U.right)?O.get(U.right):U.right;z.has(oe)?z.get(oe).push(te):z.set(oe,[te]),z.has(te)?z.get(te).push(oe):z.set(te,[oe])}else{var le=$.has(U.top)?$.get(U.top):U.top,ie=$.has(U.bottom)?$.get(U.bottom):U.bottom;W.has(le)?W.get(le).push(ie):W.set(le,[ie]),W.has(ie)?W.get(ie).push(le):W.set(ie,[le])}});var H=o(function(oe,te){var le=[],ie=[],ae=new L,Re=new Set,be=0;return oe.forEach(function(Pe,Ge){if(!Re.has(Ge)){le[be]=[],ie[be]=!1;var Oe=Ge;for(ae.push(Oe),Re.add(Oe),le[be].push(Oe);ae.length!=0;){Oe=ae.shift(),te.has(Oe)&&(ie[be]=!0);var ue=oe.get(Oe);ue.forEach(function(ye){Re.has(ye)||(ae.push(ye),Re.add(ye),le[be].push(ye))})}be++}}),{components:le,isFixed:ie}},"constructComponents"),j=H(z,_.fixedNodesOnHorizontal);this.componentsOnHorizontal=j.components,this.fixedComponentsOnHorizontal=j.isFixed;var Q=H(W,_.fixedNodesOnVertical);this.componentsOnVertical=Q.components,this.fixedComponentsOnVertical=Q.isFixed}}},N.prototype.updateDisplacements=function(){var _=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(Q){var U=_.idToNodeMap.get(Q.nodeId);U.displacementX=0,U.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var A=this.constraints.alignmentConstraint.vertical,M=0;M1){var $;for($=0;$D&&(D=Math.floor(O.y)),B=Math.floor(O.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-O.x/2,v.WORLD_CENTER_Y-O.y/2))},N.radialLayout=function(_,A,M){var D=Math.max(this.maxDiagonalInTree(_),m.DEFAULT_RADIAL_SEPARATION);N.branchRadialLayout(A,null,0,359,0,D);var P=S.calculateBounds(_),B=new R;B.setDeviceOrgX(P.getMinX()),B.setDeviceOrgY(P.getMinY()),B.setWorldOrgX(M.x),B.setWorldOrgY(M.y);for(var O=0;O<_.length;O++){var $=_[O];$.transform(B)}var V=new b(P.getMaxX(),P.getMaxY());return B.inverseTransformPoint(V)},N.branchRadialLayout=function(_,A,M,D,P,B){var O=(D-M+1)/2;O<0&&(O+=180);var $=(O+M)%360,V=$*w.TWO_PI/360,G=Math.cos(V),z=P*Math.cos(V),W=P*Math.sin(V);_.setCenter(z,W);var H=[];H=H.concat(_.getEdges());var j=H.length;A!=null&&j--;for(var Q=0,U=H.length,oe,te=_.getEdgesBetween(A);te.length>1;){var le=te[0];te.splice(0,1);var ie=H.indexOf(le);ie>=0&&H.splice(ie,1),U--,j--}A!=null?oe=(H.indexOf(te[0])+1)%U:oe=0;for(var ae=Math.abs(D-M)/j,Re=oe;Q!=j;Re=++Re%U){var be=H[Re].getOtherEnd(_);if(be!=A){var Pe=(M+Q*ae)%360,Ge=(Pe+ae)%360;N.branchRadialLayout(be,_,Pe,Ge,P+B,B),Q++}}},N.maxDiagonalInTree=function(_){for(var A=C.MIN_VALUE,M=0;M<_.length;M++){var D=_[M],P=D.getDiagonal();P>A&&(A=P)}return A},N.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},N.prototype.groupZeroDegreeMembers=function(){var _=this,A={};this.memberGroups={},this.idToDummyNode={};for(var M=[],D=this.graphManager.getAllNodes(),P=0;P"u"&&(A[$]=[]),A[$]=A[$].concat(B)}Object.keys(A).forEach(function(V){if(A[V].length>1){var G="DummyCompound_"+V;_.memberGroups[G]=A[V];var z=A[V][0].getParent(),W=new f(_.graphManager);W.id=G,W.paddingLeft=z.paddingLeft||0,W.paddingRight=z.paddingRight||0,W.paddingBottom=z.paddingBottom||0,W.paddingTop=z.paddingTop||0,_.idToDummyNode[G]=W;var H=_.getGraphManager().add(_.newGraph(),W),j=z.getChild();j.add(W);for(var Q=0;QP?(D.rect.x-=(D.labelWidth-P)/2,D.setWidth(D.labelWidth),D.labelMarginLeft=(D.labelWidth-P)/2):D.labelPosHorizontal=="right"&&D.setWidth(P+D.labelWidth)),D.labelHeight&&(D.labelPosVertical=="top"?(D.rect.y-=D.labelHeight,D.setHeight(B+D.labelHeight),D.labelMarginTop=D.labelHeight):D.labelPosVertical=="center"&&D.labelHeight>B?(D.rect.y-=(D.labelHeight-B)/2,D.setHeight(D.labelHeight),D.labelMarginTop=(D.labelHeight-B)/2):D.labelPosVertical=="bottom"&&D.setHeight(B+D.labelHeight))}})},N.prototype.repopulateCompounds=function(){for(var _=this.compoundOrder.length-1;_>=0;_--){var A=this.compoundOrder[_],M=A.id,D=A.paddingLeft,P=A.paddingTop,B=A.labelMarginLeft,O=A.labelMarginTop;this.adjustLocations(this.tiledMemberPack[M],A.rect.x,A.rect.y,D,P,B,O)}},N.prototype.repopulateZeroDegreeMembers=function(){var _=this,A=this.tiledZeroDegreePack;Object.keys(A).forEach(function(M){var D=_.idToDummyNode[M],P=D.paddingLeft,B=D.paddingTop,O=D.labelMarginLeft,$=D.labelMarginTop;_.adjustLocations(A[M],D.rect.x,D.rect.y,P,B,O,$)})},N.prototype.getToBeTiled=function(_){var A=_.id;if(this.toBeTiled[A]!=null)return this.toBeTiled[A];var M=_.getChild();if(M==null)return this.toBeTiled[A]=!1,!1;for(var D=M.getNodes(),P=0;P0)return this.toBeTiled[A]=!1,!1;if(B.getChild()==null){this.toBeTiled[B.id]=!1;continue}if(!this.getToBeTiled(B))return this.toBeTiled[A]=!1,!1}return this.toBeTiled[A]=!0,!0},N.prototype.getNodeDegree=function(_){for(var A=_.id,M=_.getEdges(),D=0,P=0;Pz&&(z=H.rect.height)}M+=z+_.verticalPadding}},N.prototype.tileCompoundMembers=function(_,A){var M=this;this.tiledMemberPack=[],Object.keys(_).forEach(function(D){var P=A[D];if(M.tiledMemberPack[D]=M.tileNodes(_[D],P.paddingLeft+P.paddingRight),P.rect.width=M.tiledMemberPack[D].width,P.rect.height=M.tiledMemberPack[D].height,P.setCenter(M.tiledMemberPack[D].centerX,M.tiledMemberPack[D].centerY),P.labelMarginLeft=0,P.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var B=P.rect.width,O=P.rect.height;P.labelWidth&&(P.labelPosHorizontal=="left"?(P.rect.x-=P.labelWidth,P.setWidth(B+P.labelWidth),P.labelMarginLeft=P.labelWidth):P.labelPosHorizontal=="center"&&P.labelWidth>B?(P.rect.x-=(P.labelWidth-B)/2,P.setWidth(P.labelWidth),P.labelMarginLeft=(P.labelWidth-B)/2):P.labelPosHorizontal=="right"&&P.setWidth(B+P.labelWidth)),P.labelHeight&&(P.labelPosVertical=="top"?(P.rect.y-=P.labelHeight,P.setHeight(O+P.labelHeight),P.labelMarginTop=P.labelHeight):P.labelPosVertical=="center"&&P.labelHeight>O?(P.rect.y-=(P.labelHeight-O)/2,P.setHeight(P.labelHeight),P.labelMarginTop=(P.labelHeight-O)/2):P.labelPosVertical=="bottom"&&P.setHeight(O+P.labelHeight))}})},N.prototype.tileNodes=function(_,A){var M=this.tileNodesByFavoringDim(_,A,!0),D=this.tileNodesByFavoringDim(_,A,!1),P=this.getOrgRatio(M),B=this.getOrgRatio(D),O;return B$&&($=Q.getWidth())});var V=B/P,G=O/P,z=Math.pow(M-D,2)+4*(V+D)*(G+M)*P,W=(D-M+Math.sqrt(z))/(2*(V+D)),H;A?(H=Math.ceil(W),H==W&&H++):H=Math.floor(W);var j=H*(V+D)-D;return $>j&&(j=$),j+=D*2,j},N.prototype.tileNodesByFavoringDim=function(_,A,M){var D=m.TILING_PADDING_VERTICAL,P=m.TILING_PADDING_HORIZONTAL,B=m.TILING_COMPARE_BY,O={rows:[],rowWidth:[],rowHeight:[],width:0,height:A,verticalPadding:D,horizontalPadding:P,centerX:0,centerY:0};B&&(O.idealRowWidth=this.calcIdealRowWidth(_,M));var $=o(function(U){return U.rect.width*U.rect.height},"getNodeArea"),V=o(function(U,oe){return $(oe)-$(U)},"areaCompareFcn");_.sort(function(Q,U){var oe=V;return O.idealRowWidth?(oe=B,oe(Q.id,U.id)):oe(Q,U)});for(var G=0,z=0,W=0;W<_.length;W++){var H=_[W];G+=H.getCenterX(),z+=H.getCenterY()}O.centerX=G/_.length,O.centerY=z/_.length;for(var W=0;W<_.length;W++){var H=_[W];if(O.rows.length==0)this.insertNodeToRow(O,H,0,A);else if(this.canAddHorizontal(O,H.rect.width,H.rect.height)){var j=O.rows.length-1;O.idealRowWidth||(j=this.getShortestRowIndex(O)),this.insertNodeToRow(O,H,j,A)}else this.insertNodeToRow(O,H,O.rows.length,A);this.shiftToLastRow(O)}return O},N.prototype.insertNodeToRow=function(_,A,M,D){var P=D;if(M==_.rows.length){var B=[];_.rows.push(B),_.rowWidth.push(P),_.rowHeight.push(0)}var O=_.rowWidth[M]+A.rect.width;_.rows[M].length>0&&(O+=_.horizontalPadding),_.rowWidth[M]=O,_.width0&&($+=_.verticalPadding);var V=0;$>_.rowHeight[M]&&(V=_.rowHeight[M],_.rowHeight[M]=$,V=_.rowHeight[M]-V),_.height+=V,_.rows[M].push(A)},N.prototype.getShortestRowIndex=function(_){for(var A=-1,M=Number.MAX_VALUE,D=0;D<_.rows.length;D++)_.rowWidth[D]M&&(A=D,M=_.rowWidth[D]);return A},N.prototype.canAddHorizontal=function(_,A,M){if(_.idealRowWidth){var D=_.rows.length-1,P=_.rowWidth[D];return P+A+_.horizontalPadding<=_.idealRowWidth}var B=this.getShortestRowIndex(_);if(B<0)return!0;var O=_.rowWidth[B];if(O+_.horizontalPadding+A<=_.width)return!0;var $=0;_.rowHeight[B]0&&($=M+_.verticalPadding-_.rowHeight[B]);var V;_.width-O>=A+_.horizontalPadding?V=(_.height+$)/(O+A+_.horizontalPadding):V=(_.height+$)/_.width,$=M+_.verticalPadding;var G;return _.widthB&&A!=M){D.splice(-1,1),_.rows[M].push(P),_.rowWidth[A]=_.rowWidth[A]-B,_.rowWidth[M]=_.rowWidth[M]+B,_.width=_.rowWidth[instance.getLongestRowIndex(_)];for(var O=Number.MIN_VALUE,$=0;$O&&(O=D[$].height);A>0&&(O+=_.verticalPadding);var V=_.rowHeight[A]+_.rowHeight[M];_.rowHeight[A]=O,_.rowHeight[M]0)for(var j=P;j<=B;j++)H[0]+=this.grid[j][O-1].length+this.grid[j][O].length-1;if(B0)for(var j=O;j<=$;j++)H[3]+=this.grid[P-1][j].length+this.grid[P][j].length-1;for(var Q=C.MAX_VALUE,U,oe,te=0;te{var u=l(551).FDLayoutNode,h=l(551).IMath;function d(p,m,g,y){u.call(this,p,m,g,y)}o(d,"CoSENode"),d.prototype=Object.create(u.prototype);for(var f in u)d[f]=u[f];d.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},d.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var mt=0;xe.forEach(function(ft){he=="horizontal"?(Be.set(ft,x.has(ft)?b[x.get(ft)]:fe.get(ft)),mt+=Be.get(ft)):(Be.set(ft,x.has(ft)?T[x.get(ft)]:fe.get(ft)),mt+=Be.get(ft))}),mt=mt/xe.length,Ke.forEach(function(ft){X.has(ft)||Be.set(ft,mt)})}else{var Le=0;Ke.forEach(function(ft){he=="horizontal"?Le+=x.has(ft)?b[x.get(ft)]:fe.get(ft):Le+=x.has(ft)?T[x.get(ft)]:fe.get(ft)}),Le=Le/Ke.length,Ke.forEach(function(ft){Be.set(ft,Le)})}});for(var $e=o(function(){var xe=He.shift(),mt=q.get(xe);mt.forEach(function(Le){if(Be.get(Le.id)ft&&(ft=gt),Zewt&&(wt=Ze)}}catch(vr){St=!0,At=vr}finally{try{!zt&&bt.return&&bt.return()}finally{if(St)throw At}}var Ee=(mt+ft)/2-(Le+wt)/2,tt=!0,at=!1,ot=void 0;try{for(var Wt=Ke[Symbol.iterator](),Bt;!(tt=(Bt=Wt.next()).done);tt=!0){var qt=Bt.value;Be.set(qt,Be.get(qt)+Ee)}}catch(vr){at=!0,ot=vr}finally{try{!tt&&Wt.return&&Wt.return()}finally{if(at)throw ot}}})}return Be},"findAppropriatePositionForRelativePlacement"),I=o(function(q){var he=0,X=0,fe=0,K=0;if(q.forEach(function(Ne){Ne.left?b[x.get(Ne.left)]-b[x.get(Ne.right)]>=0?he++:X++:T[x.get(Ne.top)]-T[x.get(Ne.bottom)]>=0?fe++:K++}),he>X&&fe>K)for(var qe=0;qeX)for(var _e=0;_eK)for(var Be=0;Be1)y.fixedNodeConstraint.forEach(function(ne,q){D[q]=[ne.position.x,ne.position.y],P[q]=[b[x.get(ne.nodeId)],T[x.get(ne.nodeId)]]}),B=!0;else if(y.alignmentConstraint)(function(){var ne=0;if(y.alignmentConstraint.vertical){for(var q=y.alignmentConstraint.vertical,he=o(function(Be){var Ne=new Set;q[Be].forEach(function(Xe){Ne.add(Xe)});var He=new Set([].concat(u(Ne)).filter(function(Xe){return $.has(Xe)})),$e=void 0;He.size>0?$e=b[x.get(He.values().next().value)]:$e=L(Ne).x,q[Be].forEach(function(Xe){D[ne]=[$e,T[x.get(Xe)]],P[ne]=[b[x.get(Xe)],T[x.get(Xe)]],ne++})},"_loop2"),X=0;X0?$e=b[x.get(He.values().next().value)]:$e=L(Ne).y,fe[Be].forEach(function(Xe){D[ne]=[b[x.get(Xe)],$e],P[ne]=[b[x.get(Xe)],T[x.get(Xe)]],ne++})},"_loop3"),qe=0;qeW&&(W=z[j].length,H=j);if(W0){var ce={x:0,y:0};y.fixedNodeConstraint.forEach(function(ne,q){var he={x:b[x.get(ne.nodeId)],y:T[x.get(ne.nodeId)]},X=ne.position,fe=R(X,he);ce.x+=fe.x,ce.y+=fe.y}),ce.x/=y.fixedNodeConstraint.length,ce.y/=y.fixedNodeConstraint.length,b.forEach(function(ne,q){b[q]+=ce.x}),T.forEach(function(ne,q){T[q]+=ce.y}),y.fixedNodeConstraint.forEach(function(ne){b[x.get(ne.nodeId)]=ne.position.x,T[x.get(ne.nodeId)]=ne.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var re=y.alignmentConstraint.vertical,J=o(function(q){var he=new Set;re[q].forEach(function(K){he.add(K)});var X=new Set([].concat(u(he)).filter(function(K){return $.has(K)})),fe=void 0;X.size>0?fe=b[x.get(X.values().next().value)]:fe=L(he).x,he.forEach(function(K){$.has(K)||(b[x.get(K)]=fe)})},"_loop4"),se=0;se0?fe=T[x.get(X.values().next().value)]:fe=L(he).y,he.forEach(function(K){$.has(K)||(T[x.get(K)]=fe)})},"_loop5"),we=0;we{a.exports=e})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var R9e=Io((nk,Yj)=>{"use strict";o((function(t,r){typeof nk=="object"&&typeof Yj=="object"?Yj.exports=r(Uj()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof nk=="object"?nk.cytoscapeFcose=r(Uj()):t.cytoscapeFcose=r(t.coseBase)}),"webpackUniversalModuleDefinition")(nk,function(e){return(()=>{"use strict";var t={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=(function(){function f(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),T;!(y=(T=b.next()).done)&&(g.push(T.value),!(m&&g.length===m));y=!0);}catch(k){v=!0,x=k}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(f,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return f(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),h=l(140).layoutBase.LinkedList,d={};d.getTopMostNodes=function(f){for(var p={},m=0;m0&&B.merge(G)});for(var O=0;O1){T=x[0],k=T.connectedEdges().length,x.forEach(function(P){P.connectedEdges().length0&&g.set("dummy"+(g.size+1),S),R},d.relocateComponent=function(f,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,T=!1,k=void 0;try{for(var C=p.nodeIndexes[Symbol.iterator](),w;!(b=(w=C.next()).done);b=!0){var S=w.value,R=u(S,2),L=R[0],N=R[1],I=m.cy.getElementById(L);if(I){var _=I.boundingBox(),A=p.xCoords[N]-_.w/2,M=p.xCoords[N]+_.w/2,D=p.yCoords[N]-_.h/2,P=p.yCoords[N]+_.h/2;Ay&&(y=M),Dx&&(x=P)}}}catch(G){T=!0,k=G}finally{try{!b&&C.return&&C.return()}finally{if(T)throw k}}var B=f.x-(y+g)/2,O=f.y-(x+v)/2;p.xCoords=p.xCoords.map(function(G){return G+B}),p.yCoords=p.yCoords.map(function(G){return G+O})}else{Object.keys(p).forEach(function(G){var z=p[G],W=z.getRect().x,H=z.getRect().x+z.getRect().width,j=z.getRect().y,Q=z.getRect().y+z.getRect().height;Wy&&(y=H),jx&&(x=Q)});var $=f.x-(y+g)/2,V=f.y-(x+v)/2;Object.keys(p).forEach(function(G){var z=p[G];z.setCenter(z.getCenterX()+$,z.getCenterY()+V)})}}},d.calcBoundingBox=function(f,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,T=void 0,k=void 0,C=void 0,w=void 0,S=f.descendants().not(":parent"),R=S.length,L=0;LT&&(y=T),vC&&(x=C),b{var u=l(548),h=l(140).CoSELayout,d=l(140).CoSENode,f=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,T){var k=b.cy,C=b.eles,w=C.nodes(),S=C.edges(),R=void 0,L=void 0,N=void 0,I={};b.randomize&&(R=T.nodeIndexes,L=T.xCoords,N=T.yCoords);var _=o(function(G){return typeof G=="function"},"isFn"),A=o(function(G,z){return _(G)?G(z):G},"optFn"),M=u.calcParentsWithoutChildren(k,C),D=o(function V(G,z,W,H){for(var j=z.length,Q=0;Q0){var ae=void 0;ae=W.getGraphManager().add(W.newGraph(),te),V(ae,oe,W,H)}}},"processChildrenList"),P=o(function(G,z,W){for(var H=0,j=0,Q=0;Q0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=H/j:_(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),B=o(function(G,z){z.fixedNodeConstraint&&(G.constraints.fixedNodeConstraint=z.fixedNodeConstraint),z.alignmentConstraint&&(G.constraints.alignmentConstraint=z.alignmentConstraint),z.relativePlacementConstraint&&(G.constraints.relativePlacementConstraint=z.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var O=new h,$=O.newGraphManager();return D($.addRoot(),u.getTopMostNodes(w),O,b),P(O,$,S),B(O,b),O.runLayout(),I},"coseLayout");a.exports={coseLayout:v}}),212:((a,s,l)=>{var u=(function(){function b(T,k){for(var C=0;C0)if(P){var $=f.getTopMostNodes(C.eles.nodes());if(_=f.connectComponents(w,C.eles,$),_.forEach(function(Oe){var ue=Oe.boundingBox();A.push({x:ue.x1+ue.w/2,y:ue.y1+ue.h/2})}),C.randomize&&_.forEach(function(Oe){C.eles=Oe,R.push(m(C))}),C.quality=="default"||C.quality=="proof"){var V=w.collection();if(C.tile){var G=new Map,z=[],W=[],H=0,j={nodeIndexes:G,xCoords:z,yCoords:W},Q=[];if(_.forEach(function(Oe,ue){Oe.edges().length==0&&(Oe.nodes().forEach(function(ye,ke){V.merge(Oe.nodes()[ke]),ye.isParent()||(j.nodeIndexes.set(Oe.nodes()[ke].id(),H++),j.xCoords.push(Oe.nodes()[0].position().x),j.yCoords.push(Oe.nodes()[0].position().y))}),Q.push(ue))}),V.length>1){var U=V.boundingBox();A.push({x:U.x1+U.w/2,y:U.y1+U.h/2}),_.push(V),R.push(j);for(var oe=Q.length-1;oe>=0;oe--)_.splice(Q[oe],1),R.splice(Q[oe],1),A.splice(Q[oe],1)}}_.forEach(function(Oe,ue){C.eles=Oe,I.push(y(C,R[ue])),f.relocateComponent(A[ue],I[ue],C)})}else _.forEach(function(Oe,ue){f.relocateComponent(A[ue],R[ue],C)});var te=new Set;if(_.length>1){var le=[],ie=S.filter(function(Oe){return Oe.css("display")=="none"});_.forEach(function(Oe,ue){var ye=void 0;if(C.quality=="draft"&&(ye=R[ue].nodeIndexes),Oe.nodes().not(ie).length>0){var ke={};ke.edges=[],ke.nodes=[];var ce=void 0;Oe.nodes().not(ie).forEach(function(re){if(C.quality=="draft")if(!re.isParent())ce=ye.get(re.id()),ke.nodes.push({x:R[ue].xCoords[ce]-re.boundingbox().w/2,y:R[ue].yCoords[ce]-re.boundingbox().h/2,width:re.boundingbox().w,height:re.boundingbox().h});else{var J=f.calcBoundingBox(re,R[ue].xCoords,R[ue].yCoords,ye);ke.nodes.push({x:J.topLeftX,y:J.topLeftY,width:J.width,height:J.height})}else I[ue][re.id()]&&ke.nodes.push({x:I[ue][re.id()].getLeft(),y:I[ue][re.id()].getTop(),width:I[ue][re.id()].getWidth(),height:I[ue][re.id()].getHeight()})}),Oe.edges().forEach(function(re){var J=re.source(),se=re.target();if(J.css("display")!="none"&&se.css("display")!="none")if(C.quality=="draft"){var ge=ye.get(J.id()),Te=ye.get(se.id()),we=[],Me=[];if(J.isParent()){var ve=f.calcBoundingBox(J,R[ue].xCoords,R[ue].yCoords,ye);we.push(ve.topLeftX+ve.width/2),we.push(ve.topLeftY+ve.height/2)}else we.push(R[ue].xCoords[ge]),we.push(R[ue].yCoords[ge]);if(se.isParent()){var ne=f.calcBoundingBox(se,R[ue].xCoords,R[ue].yCoords,ye);Me.push(ne.topLeftX+ne.width/2),Me.push(ne.topLeftY+ne.height/2)}else Me.push(R[ue].xCoords[Te]),Me.push(R[ue].yCoords[Te]);ke.edges.push({startX:we[0],startY:we[1],endX:Me[0],endY:Me[1]})}else I[ue][J.id()]&&I[ue][se.id()]&&ke.edges.push({startX:I[ue][J.id()].getCenterX(),startY:I[ue][J.id()].getCenterY(),endX:I[ue][se.id()].getCenterX(),endY:I[ue][se.id()].getCenterY()})}),ke.nodes.length>0&&(le.push(ke),te.add(ue))}});var ae=D.packComponents(le,C.randomize).shifts;if(C.quality=="draft")R.forEach(function(Oe,ue){var ye=Oe.xCoords.map(function(ce){return ce+ae[ue].dx}),ke=Oe.yCoords.map(function(ce){return ce+ae[ue].dy});Oe.xCoords=ye,Oe.yCoords=ke});else{var Re=0;te.forEach(function(Oe){Object.keys(I[Oe]).forEach(function(ue){var ye=I[Oe][ue];ye.setCenter(ye.getCenterX()+ae[Re].dx,ye.getCenterY()+ae[Re].dy)}),Re++})}}}else{var B=C.eles.boundingBox();if(A.push({x:B.x1+B.w/2,y:B.y1+B.h/2}),C.randomize){var O=m(C);R.push(O)}C.quality=="default"||C.quality=="proof"?(I.push(y(C,R[0])),f.relocateComponent(A[0],I[0],C)):f.relocateComponent(A[0],R[0],C)}var be=o(function(ue,ye){if(C.quality=="default"||C.quality=="proof"){typeof ue=="number"&&(ue=ye);var ke=void 0,ce=void 0,re=ue.data("id");return I.forEach(function(se){re in se&&(ke={x:se[re].getRect().getCenterX(),y:se[re].getRect().getCenterY()},ce=se[re])}),C.nodeDimensionsIncludeLabels&&(ce.labelWidth&&(ce.labelPosHorizontal=="left"?ke.x+=ce.labelWidth/2:ce.labelPosHorizontal=="right"&&(ke.x-=ce.labelWidth/2)),ce.labelHeight&&(ce.labelPosVertical=="top"?ke.y+=ce.labelHeight/2:ce.labelPosVertical=="bottom"&&(ke.y-=ce.labelHeight/2))),ke==null&&(ke={x:ue.position("x"),y:ue.position("y")}),{x:ke.x,y:ke.y}}else{var J=void 0;return R.forEach(function(se){var ge=se.nodeIndexes.get(ue.id());ge!=null&&(J={x:se.xCoords[ge],y:se.yCoords[ge]})}),J==null&&(J={x:ue.position("x"),y:ue.position("y")}),{x:J.x,y:J.y}}},"getPositions");if(C.quality=="default"||C.quality=="proof"||C.randomize){var Pe=f.calcParentsWithoutChildren(w,S),Ge=S.filter(function(Oe){return Oe.css("display")=="none"});C.eles=S.not(Ge),S.nodes().not(":parent").not(Ge).layoutPositions(k,C,be),Pe.length>0&&Pe.forEach(function(Oe){Oe.position(be(Oe))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b})();a.exports=x}),657:((a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,d=l(140).layoutBase.SVD,f=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,T=new Map,k=new Map,C=[],w=[],S=[],R=[],L=[],N=[],I=[],_=[],A=void 0,M=void 0,D=1e8,P=1e-9,B=m.piTol,O=m.samplingType,$=m.nodeSeparation,V=void 0,G=o(function(){for(var he=0,X=0,fe=!1;X=qe;){Be=K[qe++];for(var Ke=C[Be],xe=0;xe$e&&($e=L[Le],Xe=Le)}return Xe},"BFS"),W=o(function(he){var X=void 0;if(he){X=Math.floor(Math.random()*M),A=X;for(var K=0;K=1)break;$e=He}for(var Ke=0;Ke=1)break;$e=He}for(var mt=0;mt0&&(X.isParent()?C[he].push(k.get(X.id())):C[he].push(X.id()))})});var Pe=o(function(he){var X=T.get(he),fe=void 0;b.get(he).forEach(function(K){g.getElementById(K).isParent()?fe=k.get(K):fe=K,C[X].push(fe),C[T.get(fe)].push(he)})},"_loop"),Ge=!0,Oe=!1,ue=void 0;try{for(var ye=b.keys()[Symbol.iterator](),ke;!(Ge=(ke=ye.next()).done);Ge=!0){var ce=ke.value;Pe(ce)}}catch(q){Oe=!0,ue=q}finally{try{!Ge&&ye.return&&ye.return()}finally{if(Oe)throw ue}}M=T.size;var re=void 0;if(M>2){V=M{var u=l(212),h=o(function(f){f&&f("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h}),140:(a=>{a.exports=e})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});function jj(e,t){if(e===0)return t();let r=Math.random,n=e>>>0;Math.random=function(){n=n+1831565813>>>0;let i=n;return i=Math.imul(i^i>>>15,i|1),i^=i+Math.imul(i^i>>>7,i|61),((i^i>>>14)>>>0)/4294967296};try{return t()}finally{Math.random=r}}var _9e=F(()=>{"use strict";o(jj,"withSeededRandom")});var gx,M0,Xj=F(()=>{"use strict";Vl();gx=o(e=>`${e}`,"wrapIcon"),M0={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:gx('')},server:{body:gx('')},disk:{body:gx('')},internet:{body:gx('')},cloud:{body:gx('')},unknown:u8,blank:{body:gx("")}}}});var L9e,D9e,I9e,M9e,N9e=F(()=>{"use strict";Xt();Ls();Vl();Vr();Xj();iD();Qt();L9e=o(async function(e,t,r,n){let i=r.getConfigField("padding"),a=r.getConfigField("iconSize"),s=a/2,l=a/6,u=l/2;await Promise.all(t.edges().map(async h=>{let{source:d,sourceDir:f,sourceArrow:p,sourceGroup:m,target:g,targetDir:y,targetArrow:v,targetGroup:x,label:b}=nD(h),{x:T,y:k}=h[0].sourceEndpoint(),{x:C,y:w}=h[0].midpoint(),{x:S,y:R}=h[0].targetEndpoint(),L=i+4;if(m&&(ms(f)?T+=f==="L"?-L:L:k+=f==="T"?-L:L+18),x&&(ms(y)?S+=y==="L"?-L:L:R+=y==="T"?-L:L+18),!m&&r.getNode(d)?.type==="junction"&&(ms(f)?T+=f==="L"?s:-s:k+=f==="T"?s:-s),!x&&r.getNode(g)?.type==="junction"&&(ms(y)?S+=y==="L"?s:-s:R+=y==="T"?s:-s),h[0]._private.rscratch){let N=e.insert("g");if(N.insert("path").attr("d",`M ${T},${k} L ${C},${w} L${S},${R} `).attr("class","edge").attr("id",`${n}-${eu(d,g,{prefix:"L"})}`),p){let I=ms(f)?Qw[f](T,l):T-u,_=Yu(f)?Qw[f](k,l):k-u;N.insert("polygon").attr("points",Fj[f](l)).attr("transform",`translate(${I},${_})`).attr("class","arrow")}if(v){let I=ms(y)?Qw[y](S,l):S-u,_=Yu(y)?Qw[y](R,l):R-u;N.insert("polygon").attr("points",Fj[y](l)).attr("transform",`translate(${I},${_})`).attr("class","arrow")}if(b){let I=Jw(f,y)?"XY":ms(f)?"X":"Y",_=0;I==="X"?_=Math.abs(T-S):I==="Y"?_=Math.abs(k-R)/1.5:_=Math.abs(T-S)/2;let A=N.append("g");if(await Pn(A,b,{useHtmlLabels:!1,width:_,classes:"architecture-service-label"},Ae()),A.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),I==="X")A.attr("transform","translate("+C+", "+w+")");else if(I==="Y")A.attr("transform","translate("+C+", "+w+") rotate(-90)");else if(I==="XY"){let M=ek(f,y);if(M&&x9e(M)){let D=A.node().getBoundingClientRect(),[P,B]=T9e(M);A.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*P*B*45})`);let O=A.node().getBoundingClientRect();A.attr("transform",` + translate(${C}, ${w-D.height/2}) + translate(${P*O.width/2}, ${B*O.height/2}) + rotate(${-1*P*B*45}, 0, ${D.height/2}) + `)}}}}}))},"drawEdges"),D9e=o(async function(e,t,r,n){let a=r.getConfigField("padding")*.75,s=r.getConfigField("fontSize"),u=r.getConfigField("iconSize")/2;await Promise.all(t.nodes().map(async h=>{let d=Dp(h);if(d.type==="group"){let{h:f,w:p,x1:m,y1:g}=h.boundingBox(),y=e.append("rect");y.attr("id",`${n}-group-${d.id}`).attr("x",m+u).attr("y",g+u).attr("width",p).attr("height",f).attr("class","node-bkg");let v=e.append("g"),x=m,b=g;if(d.icon){let T=v.append("g");T.html(`${await ts(d.icon,{height:a,width:a,fallbackPrefix:M0.prefix})}`),T.attr("transform","translate("+(x+u+1)+", "+(b+u+1)+")"),x+=a,b+=s/2-1-2}if(d.label){let T=v.append("g");await Pn(T,d.label,{useHtmlLabels:!1,width:p,classes:"architecture-service-label"},Ae()),T.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),T.attr("transform","translate("+(x+u+4)+", "+(b+u+2)+")")}r.setElementForId(d.id,y)}}))},"drawGroups"),I9e=o(async function(e,t,r,n){let i=Ae();for(let a of r){let s=t.append("g"),l=e.getConfigField("iconSize");if(a.title){let f=s.append("g");await Pn(f,a.title,{useHtmlLabels:!1,width:l*1.5,classes:"architecture-service-label"},i),f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),f.attr("transform","translate("+l/2+", "+l+")")}let u=s.append("g");if(a.icon)u.html(`${await ts(a.icon,{height:l,width:l,fallbackPrefix:M0.prefix})}`);else if(a.iconText){u.html(`${await ts("blank",{height:l,width:l,fallbackPrefix:M0.prefix})}`);let m=u.append("g").append("foreignObject").attr("width",l).attr("height",l).append("div").attr("class","node-icon-text").attr("style",`height: ${l}px;`).append("div").html(mr(a.iconText,i)),g=parseInt(window.getComputedStyle(m.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;m.attr("style",`-webkit-line-clamp: ${Math.floor((l-2)/g)};`)}else u.append("path").attr("class","node-bkg").attr("id",`${n}-node-${a.id}`).attr("d",`M0,${l} V5 Q0,0 5,0 H${l-5} Q${l},0 ${l},5 V${l} Z`);s.attr("id",`${n}-service-${a.id}`).attr("class","architecture-service");let{width:h,height:d}=s.node().getBBox();a.width=h,a.height=d,e.setElementForId(a.id,s)}return 0},"drawServices"),M9e=o(function(e,t,r,n){r.forEach(i=>{let a=t.append("g"),s=e.getConfigField("iconSize");a.append("g").append("rect").attr("id",`${n}-node-${i.id}`).attr("fill-opacity","0").attr("width",s).attr("height",s),a.attr("class","architecture-junction");let{width:u,height:h}=a._groups[0][0].getBBox();a.width=u,a.height=h,e.setElementForId(i.id,a)})},"drawJunctions")});function x8t(e,t,r){e.forEach(n=>{t.add({group:"nodes",data:{type:"service",id:n.id,icon:n.icon,label:n.title,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function b8t(e,t,r){e.forEach(n=>{t.add({group:"nodes",data:{type:"junction",id:n.id,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function T8t(e,t){t.nodes().map(r=>{let n=Dp(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,e.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function C8t(e,t){e.forEach(r=>{t.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function w8t(e,t){e.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:d,title:f}=r,p=Jw(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:f,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:d,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};t.add({group:"edges",data:m,classes:p})})}function k8t(e,t,r,n=[]){let i=o((p,m)=>Object.entries(p).reduce((g,[y,v])=>{let x=0,b=Object.entries(v);if(b.length===1)return g[y]=b[0][1],g;for(let T=0;T{let m={},g={};return Object.entries(p).forEach(([y,[v,x]])=>{let b=e.getNode(y)?.in??"default";m[x]??={},m[x][b]??=[],m[x][b].push(y),g[v]??={},g[v][b]??=[],g[v][b].push(y)}),{horiz:Object.values(i(m,"horizontal")).filter(y=>y.length>1),vert:Object.values(i(g,"vertical")).filter(y=>y.length>1)}}),[s,l]=a.reduce(([p,m],{horiz:g,vert:y})=>[[...p,...g],[...m,...y]],[[],[]]),u=new Set;n.forEach(p=>p.members.forEach(m=>u.add(m)));let h=o(p=>p.filter(m=>!m.some(g=>u.has(g))),"dropOverlapping"),d=h(s),f=h(l);return n.forEach(p=>{p.members.length<2||(p.direction==="row"?d.push([...p.members]):f.push([...p.members]))}),{horizontal:d,vertical:f}}function S8t(e,t,r=[]){let n=[],i=t.getConfigField("iconSize"),a=t.getConfigField("idealEdgeLengthMultiplier"),s=a*i,l=new Set;r.forEach(d=>{for(let f=0;f`${d[0]},${d[1]}`,"posToStr"),h=o(d=>d.split(",").map(f=>parseInt(f)),"strToPos");return e.forEach(d=>{let f=Object.fromEntries(Object.entries(d).map(([y,v])=>[u(v),y])),p=[u([0,0])],m={},g={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;p.length>0;){let y=p.shift();if(y){m[y]=1;let v=f[y];if(v){let x=h(y);Object.entries(g).forEach(([b,T])=>{let k=u([x[0]+T[0],x[1]+T[1]]),C=f[k];if(C&&!m[k]){if(p.push(k),l.has(`${v}|${C}`))return;n.push({[$j[b]]:C,[$j[v9e(b)]]:v,gap:a*i})}})}}}}),n}function E8t(e,t,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=et("body").append("div").attr("id","cy").attr("style","display:none"),h=El({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge[label]",style:{label:"data(label)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${i.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${i.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});u.remove(),C8t(r,h),x8t(e,h,i),b8t(t,h,i),w8t(n,h);let d=i.getLayoutHints(),f=k8t(i,a,s,d),p=S8t(a,i,d),m=i.getConfigField("iconSize"),g=i.getConfigField("idealEdgeLengthMultiplier")*m,y=.5*m,v=i.getConfigField("edgeElasticity"),x=i.getConfigField("seed"),b=h.layout({name:"fcose",quality:"proof",randomize:i.getConfigField("randomize"),nodeSeparation:i.getConfigField("nodeSeparation"),numIter:i.getConfigField("numIter"),styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(T){let[k,C]=T.connectedNodes(),{parent:w}=Dp(k),{parent:S}=Dp(C);return w===S?g:y},edgeElasticity(T){let[k,C]=T.connectedNodes(),{parent:w}=Dp(k),{parent:S}=Dp(C);return w===S?v:.001},alignmentConstraint:f,relativePlacementConstraint:p});b.one("layoutstop",()=>{function T(k,C,w,S){let R,L,{x:N,y:I}=k,{x:_,y:A}=C;L=(S-I+(N-w)*(I-A)/(N-_))/Math.sqrt(1+Math.pow((I-A)/(N-_),2)),R=Math.sqrt(Math.pow(S-I,2)+Math.pow(w-N,2)-Math.pow(L,2));let M=Math.sqrt(Math.pow(_-N,2)+Math.pow(A-I,2));R=R/M;let D=(_-N)*(S-I)-(A-I)*(w-N);switch(!0){case D>=0:D=1;break;case D<0:D=-1;break}let P=(_-N)*(w-N)+(A-I)*(S-I);switch(!0){case P>=0:P=1;break;case P<0:P=-1;break}return L=Math.abs(L)*D,R=R*P,{distances:L,weights:R}}o(T,"getSegmentWeights"),h.startBatch();for(let k of Object.values(h.edges()))if(k.data?.()){let{x:C,y:w}=k.source().position(),{x:S,y:R}=k.target().position();if(C!==S&&w!==R){let L=k.sourceEndpoint(),N=k.targetEndpoint(),{sourceDir:I}=nD(k),[_,A]=Yu(I)?[L.x,N.y]:[N.x,L.y],{weights:M,distances:D}=T(L,N,_,A);k.style("segment-distances",D),k.style("segment-weights",M)}}h.endBatch(),jj(x,()=>b.run())});try{jj(x,()=>b.run())}catch(T){throw T instanceof RangeError&&T.message.includes("Invalid array length")?new Error("Architecture layout failed: a declared `align row|column` directive likely contradicts the edge directions, or two declared alignments overlap on a shared node. Check that the order of members in each `align` chain is consistent with the edges between them, and that no node appears in two `align` directives along the same axis."):T}h.ready(T=>{Z.info("Ready",T),l(h)})})}var P9e,A8t,O9e,B9e=F(()=>{"use strict";GF();P9e=Xs(R9e(),1);_9e();$r();vt();Vl();Ka();$n();Xj();iD();N9e();ty([{name:M0.prefix,icons:M0}]);El.use(P9e.default);o(x8t,"addServices");o(b8t,"addJunctions");o(T8t,"positionNodes");o(C8t,"addGroups");o(w8t,"addEdges");o(k8t,"getAlignments");o(S8t,"getRelativeConstraints");o(E8t,"layoutArchitecture");A8t=o(async(e,t,r,n)=>{let i=n.db;i.setDiagramId(t);let a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),d=xn(t),f=d.append("g");f.attr("class","architecture-edges");let p=d.append("g");p.attr("class","architecture-services");let m=d.append("g");m.attr("class","architecture-groups"),await I9e(i,p,a,t),M9e(i,p,s,t);let g=await E8t(a,s,l,u,i,h);await L9e(f,g,i,t),await D9e(m,g,i,t),T8t(i,g),ul(void 0,d,i.getConfigField("padding"),i.getConfigField("useMaxWidth"))},"draw"),O9e={draw:A8t}});var $9e={};ir($9e,{diagram:()=>R8t});var R8t,F9e=F(()=>{"use strict";S9e();Gj();A9e();B9e();R8t={parser:Vj,get db(){return new mx},renderer:O9e,styles:E9e}});var Kj,Zj,aD,Qj,V9e=F(()=>{"use strict";Kj="position frame",Zj="frame positioned",aD="position relation",Qj="relation positioned"});function P8t(){tX={}}function $8t(){let e=z8t,{ast:t}=tX,r=q9e();if(!t)throw new Error("No data for EventModel");return t.frames.forEach((n,i)=>{let a=U8t(n,t.dataEntities,r);e=eX(e,{$kind:Kj,index:i,frame:n,textProps:a});let s;Q8t(n)?(Z.debug("source frame",n.sourceFrames),s=t.frames.filter(l=>n.sourceFrames.some(u=>u.$refText===l.name)),s.forEach(l=>{e=eX(e,{$kind:aD,index:i,frame:n,sourceFrame:l})})):e=eX(e,{$kind:aD,index:i,frame:n})}),e={...e,sortedSwimlanesArray:H9e(e.swimlanes)},e}function F8t(e){tX.ast=e}function q9e(){return bn}function G8t(e){let t=e.split(".");if(t.length===2)return t[0]}function V8t(e){let t=e.split(".");return t.length===2?t[1]:e}function W8t(e,t){if(!(!t||t.length===0))return Object.values(e).find(r=>r.namespace===t)}function Jj(e,t,r){return Math.max(t,...Object.keys(e).filter(n=>{let i=Number.parseInt(n);return i>t&&iNumber.parseInt(n)))+1}function q8t(e,t){let r=G8t(e.entityIdentifier),n=W8t(t,r);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return n?{index:n.index,label:n.namespace||bn.labelUiAutomation}:r?{index:Jj(t,0,100),label:bn.labelUiAutomationPrefix+r}:{index:0,label:bn.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return n?{index:n.index,label:n.namespace||bn.labelCommandReadModel}:r?{index:Jj(t,100,200),label:bn.labelCommandReadModelPrefix+r}:{index:100,label:bn.labelCommandReadModel};case"evt":case"event":default:return n?{index:n.index,label:n.namespace||bn.labelEvents}:r?{index:Jj(t,200,300),label:bn.labelEventsPrefix+r}:{index:200,label:bn.labelEvents}}}function H8t(e){let{themeVariables:t}=_t();switch(e.modelEntityType){case"ui":return{fill:t.emUiFill??"white",stroke:t.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:t.emProcessorFill??"#edb3f6",stroke:t.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:t.emReadModelFill??"#d3f1a2",stroke:t.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:t.emCommandFill??"#bcd6fe",stroke:t.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:t.emEventFill??"#ffb778",stroke:t.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}function U8t(e,t,r){let n=_t(),i=mr(V8t(e.entityIdentifier)??"",n),a,s={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"
    "},u=`${ym(i,r.textMaxWidth,s)}`;if(e.dataInlineValue&&(a=e.dataInlineValue,a=a.substring(a.indexOf("{")+1),a=a.substring(0,a.lastIndexOf("}")-1),a=mr(a,n),a=ym(a,r.textMaxWidth,s),a=a.replaceAll(" "," ")),e.dataReference){let g=t.find(y=>y.name===e.dataReference?.$refText);g&&(a=g.dataBlockValue,a=a.substring(a.indexOf(`{ +`)+2),a=a.substring(0,a.lastIndexOf("}")-1),a=mr(a,n),a=ym(a,r.textMaxWidth,s),a=a.replaceAll(" "," "),a+="
    ")}let h=a!==void 0;h&&(u+=`

    ${a}`);let d={fontSize:s.fontSize,fontWeight:s.fontWeight,fontFamily:s.fontFamily},f=b2(u,d),p=h?f.width/3:f.width,m={content:u,width:p,height:f.height};return Z.debug(`[${e.name}] ${e.entityIdentifier} text`,m),m}function Y8t(e,t){let r=t,n=H8t(r.frame),i={width:r.textProps.width+2*bn.boxTextPadding,height:r.textProps.height+2*bn.boxTextPadding};return[{$kind:Zj,frame:r.frame,index:r.index,visual:n,dimension:i,textProps:r.textProps}]}function j8t(e,t,r){return t===void 0?bn.contentStartX:t.index===e.index&&e.r?e.r+bn.boxPadding:r===void 0?bn.contentStartX:r.r-bn.boxOverlap+bn.boxPadding}function X8t(e,t){let r=[...e.map(n=>n.r),t];return Math.max(...r)}function H9e(e){return Object.values(e).sort((t,r)=>t.index-r.index)}function K8t(e,t){let r=t,n=q8t(r.frame,e.swimlanes),i;n.index in e.swimlanes?i=e.swimlanes[n.index]:i={index:n.index,label:n.label,r:0,y:n.index*bn.swimlaneMinHeight+bn.swimlaneGap,height:bn.swimlaneMinHeight,maxHeight:bn.swimlaneMinHeight};let a=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,s=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,l={width:Math.max(bn.boxMinWidth,Math.min(bn.boxMaxWidth,r.dimension.width))+2*bn.boxPadding,height:Math.max(bn.boxMinHeight,Math.min(bn.boxMaxHeight,r.dimension.height))+2*bn.boxPadding},u=j8t(i,s,a),h=u+l.width+bn.boxPadding,d=X8t(Object.values(e.swimlanes),h);i.r=u+l.width,i.maxHeight=Math.max(i.maxHeight,l.height),i.height=Math.max(bn.swimlaneMinHeight,i.maxHeight)+2*bn.swimlanePadding;let f={x:u,y:bn.swimlanePadding+i.y,r:h,dimension:l,leftSibling:!1,swimlane:i,visual:r.visual,text:r.textProps.content,frame:r.frame,index:r.index},p={...e,boxes:[...e.boxes,f],swimlanes:{...e.swimlanes,[`${i.index}`]:i},previousSwimlaneNumber:n.index,previousFrame:r.frame,maxR:d},m=H9e(p.swimlanes);m.length>0&&(m[0].y=0);for(let g=1;g0}function W9e(e,t){if(t!=null)return e.find(r=>r.frame.name===t.name)}function J8t(e,t,r){if(!(r<0))for(let n=r;n>=0;n--){let i=e[n];if(i.swimlane.index!==t)return i}}function eIt(e,t){let r=t;if(S_(r.frame)||Z8t(r.index,r.frame))return[];let n=W9e(e.boxes,r.frame);if(n===void 0)throw new Error(`Target box not found for frame ${r.frame.name}`);let i;return r.sourceFrame?i=W9e(e.boxes,r.sourceFrame):i=J8t(e.boxes,n.swimlane.index,r.index-1),i===void 0?[]:[{$kind:Qj,frame:r.frame,index:r.index,sourceBox:i,targetBox:n}]}function tIt(e,t){let r=t,n={visual:{fill:"none",stroke:"#000"},source:{x:r.sourceBox.x,y:r.sourceBox.y},target:{x:r.targetBox.x,y:r.targetBox.y},sourceBox:r.sourceBox,targetBox:r.targetBox};return{...e,relations:[...e.relations,n]}}function iIt(e,t){let r=rIt[t.$kind];if(r==null)return[];let n=r(e,t);return Z.debug("decided events",n),n}function aIt(e,t){let r=t.reduce((n,i)=>{let a=nIt[i.$kind];return a==null?n:a(n,i)},e);return Z.debug("evolve events",{state:e,newState:r,events:t}),r}function eX(e,t){let r=iIt(e,t);return aIt(e,r)}var I8t,M8t,N8t,O8t,B8t,tX,bn,z8t,rIt,nIt,ik,rX=F(()=>{"use strict";vt();Qt();Qt();ur();Nn();Vr();Wi();Xa();V9e();I8t=o(function(e){Z.debug("options str",e)},"setOptions"),M8t=o(function(){return{}},"getOptions"),N8t=o(function(){P8t(),yr()},"clear");o(P8t,"reset");O8t=cr.eventmodeling,B8t=o(()=>qr({...O8t,..._t().eventmodeling}),"getConfig"),tX={};o($8t,"getState");o(F8t,"setAst");bn={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};o(q9e,"getDiagramProps");z8t={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};o(G8t,"extractNamespace");o(V8t,"extractName");o(W8t,"findSwimlaneByNamespace");o(Jj,"findNextAvailableIndex");o(q8t,"calculateSwimlaneProps");o(H8t,"calculateEntityVisualProps");o(U8t,"calculateTextProps");o(Y8t,"decidePositionFrame");o(j8t,"calculateX");o(X8t,"calculateMaxRight");o(H9e,"sortedSwimlanesArray");o(K8t,"evolveFramePositioned");o(Z8t,"isFirstFrame");o(Q8t,"hasSourceFrame");o(W9e,"findBoxByFrame");o(J8t,"findBoxByLineIndex");o(eIt,"decidePositionRelation");o(tIt,"evolveRelationPositioned");rIt={[Kj]:Y8t,[aD]:eIt},nIt={[Zj]:K8t,[Qj]:tIt};o(iIt,"decide");o(aIt,"evolve");o(eX,"dispatch");ik={getConfig:B8t,setOptions:I8t,getOptions:M8t,clear:N8t,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,setDiagramTitle:Or,getDiagramTitle:Lr,setAst:F8t,getDiagramProps:q9e,getState:$8t}});var U9e,Y9e=F(()=>{"use strict";Xa();vt();Hs();rX();U9e={parse:o(async e=>{let t=await Si("eventmodeling",e);Z.debug(t),ik.setAst(t),Gn(t,ik)},"parse")}});function lIt(e,t){return r=>{let n=r.swimlane.y+t.swimlanePadding,i=e.append("g").attr("class","em-box");i.append("rect").attr("x",r.x).attr("y",n).attr("rx","3").attr("width",r.dimension.width).attr("height",r.dimension.height).attr("stroke",r.visual.stroke).attr("fill",r.visual.fill),i.append("foreignObject").attr("x",r.x+t.boxPadding).attr("y",n+10).attr("width",r.dimension.width-2*t.boxPadding).attr("height",r.dimension.height-2*t.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(r.text)}}function cIt(e,t){return e>t}function uIt(e,t,r,n){return i=>{let a=i.sourceBox.swimlane.y+t.swimlanePadding,s=i.targetBox.swimlane.y+t.swimlanePadding,l=cIt(a,s),u=i.sourceBox.x+i.sourceBox.dimension.width*2/3,h=i.targetBox.x+i.targetBox.dimension.width/3,d,f;Z.debug(`rendering relation up=${l} for `,{sourceBox:i.sourceBox,targetBox:i.targetBox}),l?(d=a,f=s+i.targetBox.dimension.height):(d=a+i.sourceBox.dimension.height,f=s);let p=n.emRelationStroke??i.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",i.visual.fill).attr("stroke",p).attr("stroke-width","1").attr("marker-end",`url(#${r})`).attr("d",`M${u} ${d} L${h} ${f}`)}}function hIt(e,t,r,n){return i=>{let a=e.append("g").attr("class","em-swimlane"),s=n.emSwimlaneBackgroundOdd??"rgb(250,250,250)",l=n.emSwimlaneBackgroundStroke??"rgb(240,240,240)";a.append("rect").attr("x",0).attr("y",i.y).attr("rx","3").attr("width",t+r.swimlanePadding).attr("height",i.height).attr("fill",s).attr("stroke",l),a.append("text").attr("font-weight",r.swimlaneTextFontWeight).attr("x",30).attr("y",i.y+30).text(i.label)}}var sIt,oIt,dIt,j9e,X9e=F(()=>{"use strict";$r();Xt();vt();sIt=Ae(),oIt=sIt?.eventmodeling;o(lIt,"renderD3Box");o(cIt,"dirUpwards");o(uIt,"renderD3Relation");o(hIt,"renderD3Swimlane");dIt=o(function(e,t,r,n){if(Z.debug("in eventmodeling renderer",e+` +`,"id:",t,r),!oIt)throw new Error("EventModeling config not found");let i=n.db,{themeVariables:a,eventmodeling:s}=Ae(),l=et(`[id="${t}"]`),u=i.getDiagramProps(),h=i.getState(),d=`em-arrowhead-${t}`,f=a.emArrowhead??"#000000";h.sortedSwimlanesArray.forEach(hIt(l,h.maxR,u,a)),h.boxes.forEach(lIt(l,u)),h.relations.forEach(uIt(l,u,d,a)),l.append("defs").append("marker").attr("id",d).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",f),hb(void 0,l,s?.padding??30,s?.useMaxWidth)},"draw"),j9e={draw:dIt}});var fIt,K9e,Z9e=F(()=>{"use strict";fIt=o(e=>"","getStyles"),K9e=fIt});var Q9e={};ir(Q9e,{diagram:()=>pIt});var pIt,J9e=F(()=>{"use strict";Y9e();rX();X9e();Z9e();pIt={parser:U9e,db:ik,renderer:j9e,styles:K9e}});var nX,rBe,nBe=F(()=>{"use strict";nX=(function(){var e=o(function(x,b,T,k){for(T=T||{},k=x.length;k--;T[x[k]]=b);return T},"o"),t=[1,4],r=[1,14],n=[1,12],i=[1,13],a=[6,7,8],s=[1,20],l=[1,18],u=[1,19],h=[6,7,11],d=[1,6,13,14],f=[1,23],p=[1,24],m=[1,6,7,11,13,14],g={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(b,T,k,C,w,S,R){var L=S.length-1;switch(w){case 6:case 7:return C;case 15:C.addNode(S[L-1].length,S[L].trim());break;case 16:C.addNode(0,S[L].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:i},e(a,[2,3]),{1:[2,2]},e(a,[2,4]),e(a,[2,5]),{1:[2,6],6:r,12:15,13:n,14:i},{6:r,9:16,12:11,13:n,14:i},{6:s,7:l,10:17,11:u},e(h,[2,18],{14:[1,21]}),e(h,[2,16]),e(h,[2,17]),{6:s,7:l,10:22,11:u},{1:[2,7],6:r,12:15,13:n,14:i},e(d,[2,14],{7:f,11:p}),e(m,[2,8]),e(m,[2,9]),e(m,[2,10]),e(h,[2,15]),e(d,[2,13],{7:f,11:p}),e(m,[2,11]),e(m,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(b,T){if(T.recoverable)this.trace(b);else{var k=new Error(b);throw k.hash=T,k}},"parseError"),parse:o(function(b){var T=this,k=[0],C=[],w=[null],S=[],R=this.table,L="",N=0,I=0,_=0,A=2,M=1,D=S.slice.call(arguments,1),P=Object.create(this.lexer),B={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(B.yy[O]=this.yy[O]);P.setInput(b,B.yy),B.yy.lexer=P,B.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var $=P.yylloc;S.push($);var V=P.options&&P.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function G(Pe){k.length=k.length-2*Pe,w.length=w.length-Pe,S.length=S.length-Pe}o(G,"popStack");function z(){var Pe;return Pe=C.pop()||P.lex()||M,typeof Pe!="number"&&(Pe instanceof Array&&(C=Pe,Pe=C.pop()),Pe=T.symbols_[Pe]||Pe),Pe}o(z,"lex");for(var W,H,j,Q,U,oe,te={},le,ie,ae,Re;;){if(j=k[k.length-1],this.defaultActions[j]?Q=this.defaultActions[j]:((W===null||typeof W>"u")&&(W=z()),Q=R[j]&&R[j][W]),typeof Q>"u"||!Q.length||!Q[0]){var be="";Re=[];for(le in R[j])this.terminals_[le]&&le>A&&Re.push("'"+this.terminals_[le]+"'");P.showPosition?be="Parse error on line "+(N+1)+`: +`+P.showPosition()+` +Expecting `+Re.join(", ")+", got '"+(this.terminals_[W]||W)+"'":be="Parse error on line "+(N+1)+": Unexpected "+(W==M?"end of input":"'"+(this.terminals_[W]||W)+"'"),this.parseError(be,{text:P.match,token:this.terminals_[W]||W,line:P.yylineno,loc:$,expected:Re})}if(Q[0]instanceof Array&&Q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+W);switch(Q[0]){case 1:k.push(W),w.push(P.yytext),S.push(P.yylloc),k.push(Q[1]),W=null,H?(W=H,H=null):(I=P.yyleng,L=P.yytext,N=P.yylineno,$=P.yylloc,_>0&&_--);break;case 2:if(ie=this.productions_[Q[1]][1],te.$=w[w.length-ie],te._$={first_line:S[S.length-(ie||1)].first_line,last_line:S[S.length-1].last_line,first_column:S[S.length-(ie||1)].first_column,last_column:S[S.length-1].last_column},V&&(te._$.range=[S[S.length-(ie||1)].range[0],S[S.length-1].range[1]]),oe=this.performAction.apply(te,[L,I,N,B.yy,Q[1],w,S].concat(D)),typeof oe<"u")return oe;ie&&(k=k.slice(0,-1*ie*2),w=w.slice(0,-1*ie),S=S.slice(0,-1*ie)),k.push(this.productions_[Q[1]][0]),w.push(te.$),S.push(te._$),ae=R[k[k.length-2]][k[k.length-1]],k.push(ae);break;case 3:return!0}}return!0},"parse")},y=(function(){var x={EOF:1,parseError:o(function(T,k){if(this.yy.parser)this.yy.parser.parseError(T,k);else throw new Error(T)},"parseError"),setInput:o(function(b,T){return this.yy=T||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var T=b.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},"input"),unput:o(function(b){var T=b.length,k=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;var C=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var w=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===C.length?this.yylloc.first_column:0)+C[C.length-k.length].length-k[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[w[0],w[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(b){this.unput(this.match.slice(b))},"less"),pastInput:o(function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var b=this.match;return b.length<20&&(b+=this._input.substr(0,20-b.length)),(b.substr(0,20)+(b.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var b=this.pastInput(),T=new Array(b.length+1).join("-");return b+this.upcomingInput()+` +`+T+"^"},"showPosition"),test_match:o(function(b,T){var k,C,w;if(this.options.backtrack_lexer&&(w={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(w.yylloc.range=this.yylloc.range.slice(0))),C=b[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],k=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var S in w)this[S]=w[S];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,T,k,C;this._more||(this.yytext="",this.match="");for(var w=this._currentRules(),S=0;ST[0].length)){if(T=k,C=S,this.options.backtrack_lexer){if(b=this.test_match(k,w[S]),b!==!1)return b;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(b=this.test_match(T,w[C]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(T,k,C,w){var S=w;switch(C){case 0:return 6;case 1:return 8;case 2:return 8;case 3:return 6;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return x})();g.lexer=y;function v(){this.yy={}}return o(v,"Parser"),v.prototype=g,g.Parser=v,new v})();nX.parser=nX;rBe=nX});var sD,iBe=F(()=>{"use strict";Xt();Vr();Nn();sD=class{constructor(){this.stack=[];this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}static{o(this,"IshikawaDB")}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,yr()}getRoot(){return this.root}addNode(t,r){let n=xt.sanitizeText(r,Ae());if(!this.root){this.root={text:n,children:[]},this.stack=[{level:0,node:this.root}],Or(n);return}this.baseLevel??=t;let i=t-this.baseLevel+1;for(i<=0&&(i=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=i;)this.stack.pop();let a=this.stack[this.stack.length-1].node,s={text:n,children:[]};a.children.push(s),this.stack.push({level:i,node:s})}getAccTitle(){return Ar()}setAccTitle(t){kr(t)}getAccDescription(){return _r()}setAccDescription(t){Rr(t)}getDiagramTitle(){return Lr()}setDiagramTitle(t){Or(t)}}});var vIt,yx,xIt,bIt,TIt,uBe,aBe,sBe,oBe,CIt,lBe,wIt,kIt,SIt,iX,EIt,AIt,hBe,oD,cBe,vx,dBe,fBe=F(()=>{"use strict";Xt();Ka();$n();Qt();tr();vIt=14,yx=250,xIt=30,bIt=60,TIt=5,uBe=82*Math.PI/180,aBe=Math.cos(uBe),sBe=Math.sin(uBe),oBe=o((e,t,r)=>{let n=e.node().getBBox(),i=n.width+t*2,a=n.height+t*2;Wr(e,a,i,r),e.attr("viewBox",`${n.x-t} ${n.y-t} ${i} ${a}`)},"applyPaddedViewBox"),CIt=o((e,t,r,n)=>{let a=n.db.getRoot();if(!a)return;let s=Ae(),{look:l,handDrawnSeed:u,themeVariables:h}=s,d=As(s.fontSize)[0]??vIt,f=l==="handDrawn",p=a.children??[],m=s.ishikawa?.diagramPadding??20,g=s.ishikawa?.useMaxWidth??!1,y=xn(t),v=y.append("g").attr("class","ishikawa"),x=f?ut.svg(y.node()):void 0,b=x?{roughSvg:x,seed:u??0,lineColor:h?.lineColor??"#333",fillColor:h?.mainBkg??"#fff"}:void 0,T=`ishikawa-arrow-${t}`;f||v.append("defs").append("marker").attr("id",T).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let k=0,C=yx,w=f?void 0:vx(v,k,C,k,C,"ishikawa-spine");if(wIt(v,k,C,a.text,d,b),!p.length){f&&vx(v,k,C,k,C,"ishikawa-spine",b),oBe(y,m,g);return}k-=20;let S=p.filter((P,B)=>B%2===0),R=p.filter((P,B)=>B%2===1),L=lBe(S),N=lBe(R),I=L.total+N.total,_=yx,A=yx;if(I>0){let P=yx*2,B=yx*.3;_=Math.max(B,P*(L.total/I)),A=Math.max(B,P*(N.total/I))}let M=d*2;_=Math.max(_,L.max*M),A=Math.max(A,N.max*M),C=Math.max(_,yx),w&&w.attr("y1",C).attr("y2",C),v.select(".ishikawa-head-group").attr("transform",`translate(0,${C})`);let D=Math.ceil(p.length/2);for(let P=0;PMath.min(O,$.getBBox().x),1/0)}if(f)vx(v,k,C,0,C,"ishikawa-spine",b);else{w.attr("x1",k);let P=`url(#${T})`;v.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",P)}oBe(y,m,g)},"draw"),lBe=o(e=>{let t=o(r=>r.children.reduce((n,i)=>n+1+t(i),0),"countDescendants");return e.reduce((r,n)=>{let i=t(n);return r.total+=i,r.max=Math.max(r.max,i),r},{total:0,max:0})},"sideStats"),wIt=o((e,t,r,n,i,a)=>{let s=Math.max(6,Math.floor(110/(i*.6))),l=e.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${t},${r})`),u=oD(l,hBe(n,s),0,0,"ishikawa-head-label","start",i),h=u.node().getBBox(),d=Math.max(60,h.width+6),f=Math.max(40,h.height*2+40),p=`M 0 ${-f/2} L 0 ${f/2} Q ${d*2.4} 0 0 ${-f/2} Z`;if(a){let m=a.roughSvg.path(p,{roughness:1.5,seed:a.seed,fill:a.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:a.lineColor,strokeWidth:2});l.insert(()=>m,":first-child").attr("class","ishikawa-head")}else l.insert("path",":first-child").attr("class","ishikawa-head").attr("d",p);u.attr("transform",`translate(${(d-h.width)/2-h.x+3},${-h.y-h.height/2})`)},"drawHead"),kIt=o((e,t)=>{let r=[],n=[],i=o((a,s,l)=>{let u=t===-1?[...a].reverse():a;for(let h of u){let d=r.length,f=h.children??[];r.push({depth:l,text:hBe(h.text,15),parentIndex:s,childCount:f.length}),l%2===0?(n.push(d),f.length&&i(f,d,l+1)):(f.length&&i(f,d,l+1),n.push(d))}},"walk");return i(e,-1,2),{entries:r,yOrder:n}},"flattenTree"),SIt=o((e,t,r,n,i,a,s)=>{let l=e.append("g").attr("class","ishikawa-label-group"),h=oD(l,t,r,n+11*i,"ishikawa-label cause","middle",a).node().getBBox();if(s){let d=s.roughSvg.rectangle(h.x-20,h.y-2,h.width+40,h.height+4,{roughness:1.5,seed:s.seed,fill:s.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:s.lineColor,strokeWidth:2});l.insert(()=>d,":first-child").attr("class","ishikawa-label-box")}else l.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",h.x-20).attr("y",h.y-2).attr("width",h.width+40).attr("height",h.height+4)},"drawCauseLabel"),iX=o((e,t,r,n,i,a)=>{let s=Math.sqrt(n*n+i*i);if(s===0)return;let l=n/s,u=i/s,h=6,d=-u*h,f=l*h,p=t,m=r,g=`M ${p} ${m} L ${p-l*h*2+d} ${m-u*h*2+f} L ${p-l*h*2-d} ${m-u*h*2-f} Z`,y=a.roughSvg.path(g,{roughness:1,seed:a.seed,fill:a.lineColor,fillStyle:"solid",stroke:a.lineColor,strokeWidth:1});e.append(()=>y)},"drawArrowMarker"),EIt=o((e,t,r,n,i,a,s,l)=>{let u=t.children??[],h=a*(u.length?1:.2),d=-aBe*h,f=sBe*h*i,p=r+d,m=n+f;if(vx(e,r,n,p,m,"ishikawa-branch",l),l&&iX(e,r,n,r-p,n-m,l),SIt(e,t.text,p,m,i,s,l),!u.length)return;let{entries:g,yOrder:y}=kIt(u,i),v=g.length,x=new Array(v);for(let[w,S]of y.entries())x[S]=n+f*((w+1)/(v+1));let b=new Map;b.set(-1,{x0:r,y0:n,x1:p,y1:m,childCount:u.length,childrenDrawn:0});let T=-aBe,k=sBe*i,C=i<0?"ishikawa-label up":"ishikawa-label down";for(let[w,S]of g.entries()){let R=x[w],L=b.get(S.parentIndex),N=e.append("g").attr("class","ishikawa-sub-group"),I=0,_=0,A=0;if(S.depth%2===0){let M=L.y1-L.y0;I=cBe(L.x0,L.x1,M?(R-L.y0)/M:.5),_=R,A=I-(S.childCount>0?bIt+S.childCount*TIt:xIt),vx(N,I,R,A,R,"ishikawa-sub-branch",l),l&&iX(N,I,R,1,0,l),oD(N,S.text,A,R,"ishikawa-label align","end",s)}else{let M=L.childrenDrawn++;I=cBe(L.x0,L.x1,(L.childCount-M)/(L.childCount+1)),_=L.y0,A=I+T*((R-_)/k),vx(N,I,_,A,R,"ishikawa-sub-branch",l),l&&iX(N,I,_,I-A,_-R,l),oD(N,S.text,A,R,C,"end",s)}S.childCount>0&&b.set(w,{x0:I,y0:_,x1:A,y1:R,childCount:S.childCount,childrenDrawn:0})}},"drawBranch"),AIt=o(e=>e.split(/|\n/),"splitLines"),hBe=o((e,t)=>{if(e.length<=t)return e;let r=[];for(let n of e.split(/\s+/)){let i=r.length-1;i>=0&&r[i].length+1+n.length<=t?r[i]+=" "+n:r.push(n)}return r.join(` +`)},"wrapText"),oD=o((e,t,r,n,i,a,s)=>{let l=AIt(t),u=s*1.05,h=e.append("text").attr("class",i).attr("text-anchor",a).attr("x",r).attr("y",n-(l.length-1)*u/2);for(let[d,f]of l.entries())h.append("tspan").attr("x",r).attr("dy",d===0?0:u).text(f);return h},"drawMultilineText"),cBe=o((e,t,r)=>e+(t-e)*r,"lerp"),vx=o((e,t,r,n,i,a,s)=>{if(s){let l=s.roughSvg.line(t,r,n,i,{roughness:1.5,seed:s.seed,stroke:s.lineColor,strokeWidth:2});e.append(()=>l).attr("class",a);return}return e.append("line").attr("class",a).attr("x1",t).attr("y1",r).attr("x2",n).attr("y2",i)},"drawLine"),dBe={draw:CIt}});var RIt,pBe,mBe=F(()=>{"use strict";RIt=o(e=>` +.ishikawa .ishikawa-spine, +.ishikawa .ishikawa-branch, +.ishikawa .ishikawa-sub-branch { + stroke: ${e.lineColor}; + stroke-width: 2; + fill: none; +} + +.ishikawa .ishikawa-sub-branch { + stroke-width: 1; +} + +.ishikawa .ishikawa-arrow { + fill: ${e.lineColor}; +} + +.ishikawa .ishikawa-head { + fill: ${e.mainBkg}; + stroke: ${e.lineColor}; + stroke-width: 2; +} + +.ishikawa .ishikawa-label-box { + fill: ${e.mainBkg}; + stroke: ${e.lineColor}; + stroke-width: 2; +} + +.ishikawa text { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + fill: ${e.textColor}; +} + +.ishikawa .ishikawa-head-label { + font-weight: 600; + text-anchor: middle; + dominant-baseline: middle; + font-size: 14px; +} + +.ishikawa .ishikawa-label { + text-anchor: end; +} + +.ishikawa .ishikawa-label.cause { + text-anchor: middle; + dominant-baseline: middle; +} + +.ishikawa .ishikawa-label.align { + text-anchor: end; + dominant-baseline: middle; +} + +.ishikawa .ishikawa-label.up { + dominant-baseline: baseline; +} + +.ishikawa .ishikawa-label.down { + dominant-baseline: hanging; +} +`,"getStyles"),pBe=RIt});var gBe={};ir(gBe,{diagram:()=>_It});var _It,yBe=F(()=>{"use strict";nBe();iBe();fBe();mBe();_It={parser:rBe,get db(){return new sD},renderer:dBe,styles:pBe}});var aX,bBe,TBe=F(()=>{"use strict";aX=(function(){var e=o(function(b,T,k,C){for(k=k||{},C=b.length;C--;k[b[C]]=T);return k},"o"),t=[5,8],r=[7,8,11,12,17,19,22,24],n=[1,17],i=[1,18],a=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],s=[1,31],l=[1,39],u=[7,8,11,12,17,19,22,24,27],h=[1,57],d=[1,56],f=[1,58],p=[1,59],m=[1,60],g=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],y={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:o(function(T,k,C,w,S,R,L){var N=R.length-1;switch(S){case 1:return R[N-1];case 2:case 3:case 4:this.$=[];break;case 5:R[N-1].push(R[N]),this.$=R[N-1];break;case 6:this.$=[];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:this.$=R[N];break;case 8:w.setDiagramTitle(R[N].substr(6)),this.$=R[N].substr(6);break;case 9:w.addSubsetData([R[N]],void 0,void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 10:w.addSubsetData([R[N-1]],R[N],void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 11:w.addSubsetData([R[N-2]],void 0,parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 12:w.addSubsetData([R[N-3]],R[N-2],parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 13:if(R[N].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N]),w.addSubsetData(R[N],void 0,void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 14:if(R[N-1].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-1]),w.addSubsetData(R[N-1],R[N],void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 15:if(R[N-2].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-2]),w.addSubsetData(R[N-2],void 0,parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 16:if(R[N-3].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-3]),w.addSubsetData(R[N-3],R[N-2],parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 17:case 18:case 19:w.addTextData(R[N-1],R[N],void 0);break;case 20:case 21:w.addTextData(R[N-2],R[N-1],R[N]);break;case 23:w.addStyleData(R[N-1],R[N]);break;case 24:case 25:case 26:var I=w.getCurrentSets();if(!I)throw new Error("text requires set");w.addTextData(I,R[N],void 0);break;case 27:case 28:var I=w.getCurrentSets();if(!I)throw new Error("text requires set");w.addTextData(I,R[N-1],R[N]);break;case 29:case 41:this.$=[R[N]];break;case 30:case 42:this.$=[...R[N-2],R[N]];break;case 31:this.$=[R[N-2],R[N]];break;case 33:this.$=R[N].join(" ");break;case 34:this.$=[R[N]];break;case 35:R[N-1].push(R[N]),this.$=R[N-1];break;case 43:case 44:this.$=R[N];break}},"anonymous"),table:[e(t,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},e(r,[2,4],{6:5}),e(t,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},e(r,[2,5]),e(r,[2,6]),e(r,[2,7]),e(r,[2,8]),{13:16,20:n,21:i},{13:20,18:19,20:n,21:i},{13:20,18:21,20:n,21:i},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:n,21:i},e(r,[2,9],{14:[1,27],15:[1,28]}),e(a,[2,43]),e(a,[2,44]),e(r,[2,13],{14:[1,29],15:[1,30],27:s}),e(a,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:s},e(r,[2,22]),e(r,[2,24],{14:[1,35]}),e(r,[2,25],{14:[1,36]}),e(r,[2,26]),{20:l,25:37,26:38,27:s},e(r,[2,10],{15:[1,40]}),{16:[1,41]},e(r,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:n,21:i},e(r,[2,17],{14:[1,45]}),e(r,[2,18],{14:[1,46]}),e(r,[2,19]),e(r,[2,27]),e(r,[2,28]),e(r,[2,23],{27:[1,47]}),e(u,[2,29]),{15:[1,48]},{16:[1,49]},e(r,[2,11]),{16:[1,50]},e(r,[2,15]),e(a,[2,42]),e(r,[2,20]),e(r,[2,21]),{20:l,26:51},{16:h,20:d,21:[1,53],28:52,29:54,30:55,31:f,32:p,33:m},e(r,[2,12]),e(r,[2,16]),e(u,[2,30]),e(u,[2,31]),e(u,[2,32]),e(u,[2,33],{30:61,16:h,20:d,31:f,32:p,33:m}),e(g,[2,34]),e(g,[2,36]),e(g,[2,37]),e(g,[2,38]),e(g,[2,39]),e(g,[2,40]),e(g,[2,35])],defaultActions:{6:[2,1]},parseError:o(function(T,k){if(k.recoverable)this.trace(T);else{var C=new Error(T);throw C.hash=k,C}},"parseError"),parse:o(function(T){var k=this,C=[0],w=[],S=[null],R=[],L=this.table,N="",I=0,_=0,A=0,M=2,D=1,P=R.slice.call(arguments,1),B=Object.create(this.lexer),O={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(O.yy[$]=this.yy[$]);B.setInput(T,O.yy),O.yy.lexer=B,O.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var V=B.yylloc;R.push(V);var G=B.options&&B.options.ranges;typeof O.yy.parseError=="function"?this.parseError=O.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function z(Ge){C.length=C.length-2*Ge,S.length=S.length-Ge,R.length=R.length-Ge}o(z,"popStack");function W(){var Ge;return Ge=w.pop()||B.lex()||D,typeof Ge!="number"&&(Ge instanceof Array&&(w=Ge,Ge=w.pop()),Ge=k.symbols_[Ge]||Ge),Ge}o(W,"lex");for(var H,j,Q,U,oe,te,le={},ie,ae,Re,be;;){if(Q=C[C.length-1],this.defaultActions[Q]?U=this.defaultActions[Q]:((H===null||typeof H>"u")&&(H=W()),U=L[Q]&&L[Q][H]),typeof U>"u"||!U.length||!U[0]){var Pe="";be=[];for(ie in L[Q])this.terminals_[ie]&&ie>M&&be.push("'"+this.terminals_[ie]+"'");B.showPosition?Pe="Parse error on line "+(I+1)+`: +`+B.showPosition()+` +Expecting `+be.join(", ")+", got '"+(this.terminals_[H]||H)+"'":Pe="Parse error on line "+(I+1)+": Unexpected "+(H==D?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(Pe,{text:B.match,token:this.terminals_[H]||H,line:B.yylineno,loc:V,expected:be})}if(U[0]instanceof Array&&U.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+H);switch(U[0]){case 1:C.push(H),S.push(B.yytext),R.push(B.yylloc),C.push(U[1]),H=null,j?(H=j,j=null):(_=B.yyleng,N=B.yytext,I=B.yylineno,V=B.yylloc,A>0&&A--);break;case 2:if(ae=this.productions_[U[1]][1],le.$=S[S.length-ae],le._$={first_line:R[R.length-(ae||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(ae||1)].first_column,last_column:R[R.length-1].last_column},G&&(le._$.range=[R[R.length-(ae||1)].range[0],R[R.length-1].range[1]]),te=this.performAction.apply(le,[N,_,I,O.yy,U[1],S,R].concat(P)),typeof te<"u")return te;ae&&(C=C.slice(0,-1*ae*2),S=S.slice(0,-1*ae),R=R.slice(0,-1*ae)),C.push(this.productions_[U[1]][0]),S.push(le.$),R.push(le._$),Re=L[C[C.length-2]][C[C.length-1]],C.push(Re);break;case 3:return!0}}return!0},"parse")},v=(function(){var b={EOF:1,parseError:o(function(k,C){if(this.yy.parser)this.yy.parser.parseError(k,C);else throw new Error(k)},"parseError"),setInput:o(function(T,k){return this.yy=k||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var k=T.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(function(T){var k=T.length,C=T.split(/(?:\r\n?|\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var w=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),C.length-1&&(this.yylineno-=C.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:C?(C.length===w.length?this.yylloc.first_column:0)+w[w.length-C.length].length-C[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(T){this.unput(this.match.slice(T))},"less"),pastInput:o(function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?"...":"")+T.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var T=this.match;return T.length<20&&(T+=this._input.substr(0,20-T.length)),(T.substr(0,20)+(T.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var T=this.pastInput(),k=new Array(T.length+1).join("-");return T+this.upcomingInput()+` +`+k+"^"},"showPosition"),test_match:o(function(T,k){var C,w,S;if(this.options.backtrack_lexer&&(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(S.yylloc.range=this.yylloc.range.slice(0))),w=T[0].match(/(?:\r\n?|\n).*/g),w&&(this.yylineno+=w.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:w?w[w.length-1].length-w[w.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],C=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),C)return C;if(this._backtrack){for(var R in S)this[R]=S[R];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,k,C,w;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),R=0;Rk[0].length)){if(k=C,w=R,this.options.backtrack_lexer){if(T=this.test_match(C,S[R]),T!==!1)return T;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(T=this.test_match(k,S[w]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var k=this.next();return k||this.lex()},"lex"),begin:o(function(k){this.conditionStack.push(k)},"begin"),popState:o(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:o(function(k){this.begin(k)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(k,C,w,S){var R=S;switch(w){case 0:break;case 1:break;case 2:break;case 3:if(k.getIndentMode&&k.getIndentMode())return k.consumeIndentText=!0,this.begin("INITIAL"),22;break;case 4:break;case 5:k.setIndentMode&&k.setIndentMode(!1),this.begin("INITIAL"),this.unput(C.yytext);break;case 6:return this.begin("bol"),8;break;case 7:break;case 8:break;case 9:return 7;case 10:return 11;case 11:return 5;case 12:return 12;case 13:return 17;case 14:if(k.consumeIndentText)k.consumeIndentText=!1;else return 19;break;case 15:return 24;case 16:return C.yytext=C.yytext.slice(2,-2),14;break;case 17:return C.yytext=C.yytext.slice(1,-1).trim(),14;break;case 18:return 16;case 19:return 31;case 20:return 33;case 21:return 32;case 22:return 20;case 23:return 21;case 24:return 27;case 25:return 15}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[ \t]+(?=[\n\r]))/i,/^(?:[ \t]+(?=text\b))/i,/^(?:[ \t]+)/i,/^(?:[^ \t\n\r])/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[ \t]+)/i,/^(?:$)/i,/^(?:title\s[^#\n;]+)/i,/^(?:venn-beta\b)/i,/^(?:set\b)/i,/^(?:union\b)/i,/^(?:text\b)/i,/^(?:style\b)/i,/^(?:\["[^\"]*"\])/i,/^(?:\[[^\]\"]+\])/i,/^(?:[+-]?(\d+(\.\d+)?|\.\d+))/i,/^(?:#[0-9a-fA-F]{3,8})/i,/^(?:rgba\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:rgb\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:"[^\"]*")/i,/^(?:,)/i,/^(?::)/i],conditions:{bol:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0},INITIAL:{rules:[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0}}};return b})();y.lexer=v;function x(){this.yy={}}return o(x,"Parser"),x.prototype=y,y.Parser=x,new x})();aX.parser=aX;bBe=aX});function qIt(){return qr(WIt,_t().venn)}var sX,oX,lX,cX,uX,hX,IIt,MIt,ak,NIt,PIt,OIt,BIt,lD,$It,FIt,zIt,GIt,VIt,WIt,HIt,CBe,wBe=F(()=>{"use strict";Qt();ur();Nn();Wi();sX=[],oX=[],lX=[],cX=new Set,hX=!1,IIt=o((e,t,r)=>{let n=lD(e).sort(),i=r??10/Math.pow(e.length,2);uX=n,n.length===1&&cX.add(n[0]),sX.push({sets:n,size:i,label:t?ak(t):void 0})},"addSubsetData"),MIt=o(()=>sX,"getSubsetData"),ak=o(e=>{let t=e.trim();return t.length>=2&&t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t},"normalizeText"),NIt=o(e=>e&&ak(e),"normalizeStyleValue"),PIt=o((e,t,r)=>{let n=ak(t);oX.push({sets:lD(e).sort(),id:n,label:r?ak(r):void 0})},"addTextData"),OIt=o((e,t)=>{let r=lD(e).sort(),n={};for(let[i,a]of t)n[i]=NIt(a)??a;lX.push({targets:r,styles:n})},"addStyleData"),BIt=o(()=>lX,"getStyleData"),lD=o(e=>e.map(t=>ak(t)),"normalizeIdentifierList"),$It=o(e=>{let r=lD(e).filter(n=>!cX.has(n));if(r.length>0)throw new Error(`unknown set identifier: ${r.join(", ")}`)},"validateUnionIdentifiers"),FIt=o(()=>oX,"getTextData"),zIt=o(()=>uX,"getCurrentSets"),GIt=o(()=>hX,"getIndentMode"),VIt=o(e=>{hX=e},"setIndentMode"),WIt=cr.venn;o(qIt,"getConfig");HIt=o(()=>{yr(),sX.length=0,oX.length=0,lX.length=0,cX.clear(),uX=void 0,hX=!1},"customClear"),CBe={getConfig:qIt,clear:HIt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr,addSubsetData:IIt,getSubsetData:MIt,addTextData:PIt,addStyleData:OIt,validateUnionIdentifiers:$It,getTextData:FIt,getStyleData:BIt,getCurrentSets:zIt,getIndentMode:GIt,setIndentMode:VIt}});var UIt,kBe,SBe=F(()=>{"use strict";UIt=o(e=>` + .venn-title { + font-size: 32px; + fill: ${e.vennTitleTextColor}; + font-family: ${e.fontFamily}; + } + + .venn-circle text { + font-size: 48px; + font-family: ${e.fontFamily}; + } + + .venn-intersection text { + font-size: 48px; + fill: ${e.vennSetTextColor}; + font-family: ${e.fontFamily}; + } + + .venn-text-node { + font-family: ${e.fontFamily}; + color: ${e.vennSetTextColor}; + } +`,"getStyles"),kBe=UIt});function cD(e,t){let r=jIt(e),n=r.filter(l=>YIt(l,e)),i=0,a=0,s=[];if(n.length>1){let l=_Be(n);for(let h=0;hd.angle-h.angle);let u=n[n.length-1];for(let h=0;hg.radius*2&&(T=g.radius*2),(p==null||p.width>T)&&(p={circle:g,width:T,p1:d,p2:u,large:T>g.radius,sweep:!0})}p!=null&&(s.push(p),i+=pX(p.circle.radius,p.width),u=d)}}else{let l=e[0];for(let h=1;hMath.abs(l.radius-e[h].radius)){u=!0;break}u?i=a=0:(i=l.radius*l.radius*Math.PI,s.push({circle:l,p1:{x:l.x,y:l.y+l.radius},p2:{x:l.x-1e-10,y:l.y+l.radius},width:l.radius*2,large:!0,sweep:!0}))}return a/=2,t&&(t.area=i+a,t.arcArea=i,t.polygonArea=a,t.arcs=s,t.innerPoints=n,t.intersectionPoints=r),i+a}function YIt(e,t){return t.every(r=>Ro(e,r)=e+t)return 0;if(r<=Math.abs(e-t))return Math.PI*Math.min(e,t)*Math.min(e,t);let n=e-(r*r-t*t+e*e)/(2*r),i=t-(r*r-e*e+t*t)/(2*r);return pX(e,n)+pX(t,i)}function RBe(e,t){let r=Ro(e,t),n=e.radius,i=t.radius;if(r>=n+i||r<=Math.abs(n-i))return[];let a=(n*n-i*i+r*r)/(2*r),s=Math.sqrt(n*n-a*a),l=e.x+a*(t.x-e.x)/r,u=e.y+a*(t.y-e.y)/r,h=-(t.y-e.y)*(s/r),d=-(t.x-e.x)*(s/r);return[{x:l+h,y:u-d},{x:l-h,y:u+d}]}function _Be(e){let t={x:0,y:0};for(let r of e)t.x+=r.x,t.y+=r.y;return t.x/=e.length,t.y/=e.length,t}function XIt(e,t,r,n){n=n||{};let i=n.maxIterations||100,a=n.tolerance||1e-10,s=e(t),l=e(r),u=r-t;if(s*l>0)throw"Initial bisect points must have opposite signs";if(s===0)return t;if(l===0)return r;for(let h=0;h=0&&(t=d),Math.abs(u)mX(t))}function xx(e,t){let r=0;for(let n=0;nC.fx-w.fx,"sortOrder"),x=t.slice(),b=t.slice(),T=t.slice(),k=t.slice();for(let C=0;C{let L=R.slice();return L.fx=R.fx,L.id=R.id,L});S.sort((R,L)=>R.id-L.id),r.history.push({x:g[0].slice(),fx:g[0].fx,simplex:S})}p=0;for(let S=0;S=g[m-1].fx){let S=!1;if(b.fx>w.fx?(md(T,1+d,x,-d,w),T.fx=e(T),T.fx=1)break;for(let R=1;Rl+a*i*u||h>=v)y=i;else{if(Math.abs(f)<=-s*u)return i;f*(y-g)>=0&&(y=g),g=i,v=h}return 0}o(m,"zoom");for(let g=0;g<10;++g){if(md(n.x,1,r.x,i,t),h=n.fx=e(n.x,n.fxprime),f=xx(n.fxprime,t),h>l+a*i*u||g&&h>=d)return m(p,i,d);if(Math.abs(f)<=-s*u)return i;if(f>=0)return m(i,p,h);d=h,p=i,i*=2}return i}function ZIt(e,t,r){let n={x:t.slice(),fx:0,fxprime:t.slice()},i={x:t.slice(),fx:0,fxprime:t.slice()},a=t.slice(),s,l,u=1,h;r=r||{},h=r.maxIterations||t.length*20,n.fx=e(n.x,n.fxprime),s=n.fxprime.slice(),yX(s,n.fxprime,-1);for(let d=0;d{let f={};for(let p=0;pbX(e,t,n)-r,0,e+t)}function QIt(e,t={}){let r=t.distinct,n=e.map(l=>Object.assign({},l));function i(l){return l.join(";")}if(o(i,"toKey"),r){let l=new Map;for(let u of n)for(let h=0;hl===u?0:la.sets.length===2).forEach(a=>{let s=r[a.sets[0]],l=r[a.sets[1]],u=Math.sqrt(t[s].size/Math.PI),h=Math.sqrt(t[l].size/Math.PI),d=vX(u,h,a.size);n[s][l]=n[l][s]=d;let f=0;a.size+1e-10>=Math.min(t[s].size,t[l].size)?f=1:a.size<=1e-10&&(f=-1),i[s][l]=i[l][s]=f}),{distances:n,constraints:i}}function eMt(e,t,r,n){for(let a=0;a0&&g<=f||p<0&&g>=f||(i+=2*y*y,t[2*a]+=4*y*(s-h),t[2*a+1]+=4*y*(l-d),t[2*u]+=4*y*(h-s),t[2*u+1]+=4*y*(d-l))}}return i}function tMt(e,t={}){let r=nMt(e,t),n=t.lossFunction||bx;if(e.length>=8){let i=rMt(e,t),a=n(i,e),s=n(r,e);a+1e-8p.map(m=>m/l));let u=o((p,m)=>eMt(p,m,a,s),"obj"),h=null;for(let p=0;pf.sets.length===2);for(let f of e){let p=f.weight!=null?f.weight:1,m=f.sets[0],g=f.sets[1];f.size+IBe>=Math.min(n[m].size,n[g].size)&&(p=0),i[m].push({set:g,size:f.size,weight:p}),i[g].push({set:m,size:f.size,weight:p})}let a=[];Object.keys(i).forEach(f=>{let p=0;for(let m=0;me[s]));let a=n.weight!=null?n.weight:1;r+=a*(i-n.size)*(i-n.size)}return r}function MBe(e,t){let r=0;for(let n of t){if(n.sets.length===1)continue;let i;if(n.sets.length===2){let l=e[n.sets[0]],u=e[n.sets[1]];i=bX(l.radius,u.radius,Ro(l,u))}else i=cD(n.sets.map(l=>e[l]));let a=n.weight!=null?n.weight:1,s=Math.log((i+1)/(n.size+1));r+=a*s*s}return r}function iMt(e,t,r){if(r==null?e.sort((i,a)=>a.radius-i.radius):e.sort(r),e.length>0){let i=e[0].x,a=e[0].y;for(let s of e)s.x-=i,s.y-=a}if(e.length===2&&Ro(e[0],e[1])1){let i=Math.atan2(e[1].x,e[1].y)-t,a=Math.cos(i),s=Math.sin(i);for(let l of e){let u=l.x,h=l.y;l.x=a*u-s*h,l.y=s*u+a*h}}if(e.length>2){let i=Math.atan2(e[2].x,e[2].y)-t;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;if(i>Math.PI){let a=e[1].y/(1e-10+e[1].x);for(let s of e){var n=(s.x+a*s.y)/(1+a*a);s.x=2*n-s.x,s.y=2*n*a-s.y}}}}function aMt(e){e.forEach(i=>{i.parent=i});function t(i){return i.parent!==i&&(i.parent=t(i.parent)),i.parent}o(t,"find");function r(i,a){let s=t(i),l=t(a);s.parent=l}o(r,"union");for(let i=0;i{delete i.parent}),Array.from(n.values())}function xX(e){let t=o(r=>{let n=e.reduce((a,s)=>Math.max(a,s[r]+s.radius),Number.NEGATIVE_INFINITY),i=e.reduce((a,s)=>Math.min(a,s[r]-s.radius),Number.POSITIVE_INFINITY);return{max:n,min:i}},"minMax");return{xRange:t("x"),yRange:t("y")}}function NBe(e,t,r){t==null&&(t=Math.PI/2);let n=BBe(e).map(h=>Object.assign({},h)),i=aMt(n);for(let h of i){iMt(h,t,r);let d=xX(h);h.size=(d.xRange.max-d.xRange.min)*(d.yRange.max-d.yRange.min),h.bounds=d}i.sort((h,d)=>d.size-h.size),n=i[0];let a=n.bounds,s=(a.xRange.max-a.xRange.min)/50;function l(h,d,f){if(!h)return;let p=h.bounds,m,g;if(d)m=a.xRange.max-p.xRange.min+s;else{m=a.xRange.max-p.xRange.max;let y=(p.xRange.max-p.xRange.min)/2-(a.xRange.max-a.xRange.min)/2;y<0&&(m+=y)}if(f)g=a.yRange.max-p.yRange.min+s;else{g=a.yRange.max-p.yRange.max;let y=(p.yRange.max-p.yRange.min)/2-(a.yRange.max-a.yRange.min)/2;y<0&&(g+=y)}for(let y of h)y.x+=m,y.y+=g,n.push(y)}o(l,"addCluster");let u=1;for(;u({radius:d*m.radius,x:n+f+(m.x-s.min)*d,y:n+p+(m.y-l.min)*d,setid:m.setid})))}function OBe(e){let t={};for(let r of e)t[r.setid]=r;return t}function BBe(e){return Object.keys(e).map(r=>Object.assign(e[r],{setid:r}))}function $Be(e={}){let t=!1,r=600,n=350,i=15,a=1e3,s=Math.PI/2,l=!0,u=null,h=!0,d=!0,f=null,p=null,m=!1,g=null,y=e&&e.symmetricalTextCentre?e.symmetricalTextCentre:!1,v={},x=e&&e.colourScheme?e.colourScheme:e&&e.colorScheme?e.colorScheme:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],b=0,T=o(function(S){if(S in v)return v[S];var R=v[S]=x[b];return b+=1,b>=x.length&&(b=0),R},"colours"),k=DBe,C=bx;function w(S){let R=S.datum(),L=new Set;R.forEach(U=>{U.size==0&&U.sets.length==1&&L.add(U.sets[0])}),R=R.filter(U=>!U.sets.some(oe=>L.has(oe)));let N={},I={};if(R.length>0){let U=k(R,{lossFunction:C,distinct:m});l&&(U=NBe(U,s,p)),N=PBe(U,r,n,i,u),I=zBe(N,R,y)}let _={};R.forEach(U=>{U.label&&(_[U.sets]=U.label)});function A(U){if(U.sets in _)return _[U.sets];if(U.sets.length==1)return""+U.sets[0]}o(A,"label"),S.selectAll("svg").data([N]).enter().append("svg");let M=S.select("svg");t?M.attr("viewBox",`0 0 ${r} ${n}`):M.attr("width",r).attr("height",n);let D={},P=!1;M.selectAll(".venn-area path").each(function(U){let oe=this.getAttribute("d");U.sets.length==1&&oe&&!m&&(P=!0,D[U.sets[0]]=lMt(oe))});function B(U){return oe=>{let te=U.sets.map(le=>{let ie=D[le],ae=N[le];return ie||(ie={x:r/2,y:n/2,radius:1}),ae||(ae={x:r/2,y:n/2,radius:1}),{x:ie.x*(1-oe)+ae.x*oe,y:ie.y*(1-oe)+ae.y*oe,radius:ie.radius*(1-oe)+ae.radius*oe}});return ABe(te,g)}}o(B,"pathTween");let O=M.selectAll(".venn-area").data(R,U=>U.sets),$=O.enter().append("g").attr("class",U=>`venn-area venn-${U.sets.length==1?"circle":"intersection"}${U.colour||U.color?" venn-coloured":""}`).attr("data-venn-sets",U=>U.sets.join("_")),V=$.append("path"),G=$.append("text").attr("class","label").text(U=>A(U)).attr("text-anchor","middle").attr("dy",".35em").attr("x",r/2).attr("y",n/2);d&&(V.style("fill-opacity","0").filter(U=>U.sets.length==1).style("fill",U=>U.colour?U.colour:U.color?U.color:T(U.sets)).style("fill-opacity",".25"),G.style("fill",U=>U.colour||U.color?"#FFF":e.textFill?e.textFill:U.sets.length==1?T(U.sets):"#444"));function z(U){return typeof U.transition=="function"?U.transition("venn").duration(a):U}o(z,"asTransition");let W=S;P&&typeof W.transition=="function"?(W=z(S),W.selectAll("path").attrTween("d",B)):W.selectAll("path").attr("d",U=>ABe(U.sets.map(oe=>N[oe])),g);let H=W.selectAll("text").filter(U=>U.sets in I).text(U=>A(U)).attr("x",U=>Math.floor(I[U.sets].x)).attr("y",U=>Math.floor(I[U.sets].y));h&&(P?"on"in H?H.on("end",dX(N,A)):H.each("end",dX(N,A)):H.each(dX(N,A)));let j=z(O.exit()).remove();typeof O.transition=="function"&&j.selectAll("path").attrTween("d",B);let Q=j.selectAll("text").attr("x",r/2).attr("y",n/2);return f!==null&&(G.style("font-size","0px"),H.style("font-size",f),Q.style("font-size","0px")),{circles:N,textCentres:I,nodes:O,enter:$,update:W,exit:j}}return o(w,"chart"),w.wrap=function(S){return arguments.length?(h=S,w):h},w.useViewBox=function(){return t=!0,w},w.width=function(S){return arguments.length?(r=S,w):r},w.height=function(S){return arguments.length?(n=S,w):n},w.padding=function(S){return arguments.length?(i=S,w):i},w.distinct=function(S){return arguments.length?(m=S,w):m},w.colours=function(S){return arguments.length?(T=S,w):T},w.colors=function(S){return arguments.length?(T=S,w):T},w.fontSize=function(S){return arguments.length?(f=S,w):f},w.round=function(S){return arguments.length?(g=S,w):g},w.duration=function(S){return arguments.length?(a=S,w):a},w.layoutFunction=function(S){return arguments.length?(k=S,w):k},w.normalize=function(S){return arguments.length?(l=S,w):l},w.scaleToFit=function(S){return arguments.length?(u=S,w):u},w.styled=function(S){return arguments.length?(d=S,w):d},w.orientation=function(S){return arguments.length?(s=S,w):s},w.orientationOrder=function(S){return arguments.length?(p=S,w):p},w.lossFunction=function(S){return arguments.length?(C=S==="default"?bx:S==="logRatio"?MBe:S,w):C},w}function dX(e,t){return function(r){let n=this,i=e[r.sets[0]].radius||50,a=t(r)||"",s=a.split(/\s+/).reverse(),u=(a.length+s.length)/3,h=s.pop(),d=[h],f=0,p=1.1;n.textContent=null;let m=[];function g(T){let k=n.ownerDocument.createElementNS(n.namespaceURI,"tspan");return k.textContent=T,m.push(k),n.append(k),k}o(g,"append");let y=g(h);for(;h=s.pop(),!!h;){d.push(h);let T=d.join(" ");y.textContent=T,T.length>u&&y.getComputedTextLength()>i&&(d.pop(),y.textContent=d.join(" "),d=[h],y=g(h),f++)}let v=.35-f*p/2,x=n.getAttribute("x"),b=n.getAttribute("y");m.forEach((T,k)=>{T.setAttribute("x",x),T.setAttribute("y",b),T.setAttribute("dy",`${v+k*p}em`)})}}function fX(e,t,r){let n=t[0].radius-Ro(t[0],e);for(let i=1;i=a&&(i=n[d],a=f)}let s=LBe(d=>-1*fX({x:d[0],y:d[1]},e,t),[i.x,i.y],{maxIterations:500,minErrorDelta:1e-10}).x,l={x:r?0:s[0],y:s[1]},u=!0;for(let d of e)if(Ro(l,d)>d.radius){u=!1;break}for(let d of t)if(Ro(l,d)d.p1))}function sMt(e){let t={},r=Object.keys(e);for(let n of r)t[n]=[];for(let n=0;n0&&console.log("WARNING: area "+s+" not represented on screen")}return n}function oMt(e,t,r){let n=[];return n.push(` +M`,e,t),n.push(` +m`,-r,0),n.push(` +a`,r,r,0,1,0,r*2,0),n.push(` +a`,r,r,0,1,0,-r*2,0),n.join(" ")}function lMt(e){let t=e.split(" ");return{x:Number.parseFloat(t[1]),y:Number.parseFloat(t[2]),radius:-Number.parseFloat(t[4])}}function GBe(e){if(e.length===0)return[];let t={};return cD(e,t),t.arcs}function VBe(e,t){if(e.length===0)return"M 0 0";let r=Math.pow(10,t||0),n=t!=null?a=>Math.round(a*r)/r:a=>a;if(e.length==1){let a=e[0].circle;return oMt(n(a.x),n(a.y),n(a.radius))}let i=[` +M`,n(e[0].p2.x),n(e[0].p2.y)];for(let a of e){let s=n(a.circle.radius);i.push(` +A`,s,s,0,a.large?1:0,a.sweep?1:0,n(a.p1.x),n(a.p1.y))}return i.join(" ")}function ABe(e,t){return VBe(GBe(e),t)}function WBe(e,t={}){let{lossFunction:r,layoutFunction:n=DBe,normalize:i=!0,orientation:a=Math.PI/2,orientationOrder:s,width:l=600,height:u=350,padding:h=15,scaleToFit:d=!1,symmetricalTextCentre:f=!1,distinct:p,round:m=2}=t,g=n(e,{lossFunction:r==="default"||!r?bx:r==="logRatio"?MBe:r,distinct:p});i&&(g=NBe(g,a,s));let y=PBe(g,l,u,h,d),v=zBe(y,e,f),x=new Map(Object.keys(y).map(k=>[k,{set:k,x:y[k].x,y:y[k].y,radius:y[k].radius}])),b=e.map(k=>{let C=k.sets.map(R=>x.get(R)),w=GBe(C),S=VBe(w,m);return{circles:C,arcs:w,path:S,area:k,has:new Set(k.sets)}});function T(k){let C="";for(let w of b)w.has.size>k.length&&k.every(S=>w.has.has(S))&&(C+=" "+w.path);return C}return o(T,"genDistinctPath"),b.map(({circles:k,arcs:C,path:w,area:S})=>({data:S,text:v[S.sets],circles:k,arcs:C,path:w,distinctPath:w+T(S.sets)}))}var IBe,qBe=F(()=>{"use strict";o(cD,"intersectionArea");o(YIt,"containedInCircles");o(jIt,"getIntersectionPoints");o(pX,"circleArea");o(Ro,"distance");o(bX,"circleOverlap");o(RBe,"circleCircleIntersection");o(_Be,"getCenter");o(XIt,"bisect");o(mX,"zeros");o(EBe,"zerosM");o(xx,"dot");o(gX,"norm2");o(yX,"scale");o(md,"weightedSum");o(LBe,"nelderMead");o(KIt,"wolfeLineSearch");o(ZIt,"conjugateGradient");o(DBe,"venn");IBe=1e-10;o(vX,"distanceFromIntersectArea");o(QIt,"addMissingAreas");o(JIt,"getDistanceMatrices");o(eMt,"constrainedMDSGradient");o(tMt,"bestInitialLayout");o(rMt,"constrainedMDSLayout");o(nMt,"greedyLayout");o(bx,"lossFunction");o(MBe,"logRatioLossFunction");o(iMt,"orientateCircles");o(aMt,"disjointCluster");o(xX,"getBoundingBox");o(NBe,"normalizeSolution");o(PBe,"scaleSolution");o(OBe,"toObjectNotation");o(BBe,"fromObjectNotation");o($Be,"VennDiagram");o(dX,"wrapText");o(fX,"circleMargin");o(FBe,"computeTextCentre");o(sMt,"getOverlappingCircles");o(zBe,"computeTextCentres");o(oMt,"circlePath");o(lMt,"circleFromPath");o(GBe,"intersectionAreaArcs");o(VBe,"arcsToPath");o(ABe,"intersectionAreaPath");o(WBe,"layout")});function uMt(e){let t=new Map;for(let r of e){let n=r.targets.join("|"),i=t.get(n);i?Object.assign(i,r.styles):t.set(n,{...r.styles})}return t}function N0(e){return e.join("|")}function dMt(e,t,r,n,i,a){let s=e?.useDebugLayout??!1,u=r.select("svg").append("g").attr("class","venn-text-nodes"),h=new Map;for(let d of n){let f=N0(d.sets),p=h.get(f);p?p.push(d):h.set(f,[d])}for(let[d,f]of h.entries()){let p=t.get(d);if(!p?.text)continue;let m=p.text.x,g=p.text.y,y=Math.min(...p.circles.map(M=>M.radius)),v=Math.min(...p.circles.map(M=>M.radius-Math.hypot(m-M.x,g-M.y))),x=Number.isFinite(v)?Math.max(0,v):0;x===0&&Number.isFinite(y)&&(x=y*.6);let b=u.append("g").attr("class","venn-text-area").attr("font-size",`${40*i}px`);s&&b.append("circle").attr("class","venn-text-debug-circle").attr("cx",m).attr("cy",g).attr("r",x).attr("fill","none").attr("stroke","purple").attr("stroke-width",1.5*i).attr("stroke-dasharray",`${6*i} ${4*i}`);let T=Math.max(80*i,x*2*.95),k=Math.max(60*i,x*2*.95),S=(p.data.label&&p.data.label.length>0?Math.min(32*i,x*.25):0)+(f.length<=2?30*i:0),R=m-T/2,L=g-k/2+S,N=Math.max(1,Math.ceil(Math.sqrt(f.length))),I=Math.max(1,Math.ceil(f.length/N)),_=T/N,A=k/I;for(let[M,D]of f.entries()){let P=M%N,B=Math.floor(M/N),O=R+_*(P+.5),$=L+A*(B+.5);s&&b.append("rect").attr("class","venn-text-debug-cell").attr("x",R+_*P).attr("y",L+A*B).attr("width",_).attr("height",A).attr("fill","none").attr("stroke","teal").attr("stroke-width",1*i).attr("stroke-dasharray",`${4*i} ${3*i}`);let V=_*.9,G=A*.9,z=b.append("foreignObject").attr("class","venn-text-node-fo").attr("width",V).attr("height",G).attr("x",O-V/2).attr("y",$-G/2).attr("overflow","visible"),W=a.get(D.id)?.color,H=z.append("xhtml:span").attr("class","venn-text-node").style("display","flex").style("width","100%").style("height","100%").style("white-space","normal").style("align-items","center").style("justify-content","center").style("text-align","center").style("overflow-wrap","normal").style("word-break","normal").text(D.label??D.id);W&&H.style("color",W)}}}function fMt(e){let t=new Set(e.map(i=>[...i.sets].sort().join("|"))),r=new Map(e.filter(i=>i.sets.length===1&&i.size!==void 0).map(i=>[i.sets[0],i.size])),n=[];for(let i of e){if(i.sets.length<3)continue;let a=[...i.sets].sort();for(let s=0;s0?[...e,...n]:e}var hMt,HBe,UBe=F(()=>{"use strict";$r();zi();ur();Ka();qBe();$n();tr();o(uMt,"buildStyleByKey");hMt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig?.(),{themeVariables:s,look:l,handDrawnSeed:u}=_t(),h=l==="handDrawn",d=[s.venn1,s.venn2,s.venn3,s.venn4,s.venn5,s.venn6,s.venn7,s.venn8].filter(Boolean),f=i.getDiagramTitle?.(),p=i.getSubsetData(),m=i.getTextData(),g=uMt(i.getStyleData()),y=fMt(p),v=a?.width??800,x=a?.height??450,T=v/1600,k=f?48*T:0,C=s.primaryTextColor??s.textColor,w=xn(t);w.attr("viewBox",`0 0 ${v} ${x}`),f&&w.append("text").text(f).attr("class","venn-title").attr("font-size",`${32*T}px`).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x","50%").attr("y",32*T).style("fill",s.vennTitleTextColor||s.titleColor);let S=et(document.createElement("div")),R=$Be().width(v).height(x-k);S.datum(y).call(R);let L=h?ut.svg(S.select("svg").node()):void 0,N=WBe(y,{width:v,height:x-k,padding:a?.padding??15}),I=new Map;for(let D of N){let P=N0([...D.data.sets].sort());I.set(P,D)}m.length>0&&dMt(a,I,S,m,T,g);let _=Tn(s.background||"#f4f4f4");S.selectAll(".venn-circle").each(function(D,P){let B=et(this),$=N0([...D.sets].sort()),V=g.get($),G=V?.fill||d[P%d.length]||s.primaryColor;B.classed(`venn-set-${P%8}`,!0);let z=V?.["fill-opacity"]??.1,W=V?.stroke||G,H=V?.["stroke-width"]||`${5*T}`;if(h&&L){let Q=I.get($);if(Q&&Q.circles.length>0){let U=Q.circles[0],oe=L.circle(U.x,U.y,U.radius*2,{roughness:.7,seed:u,fill:kk(G,.7),fillStyle:"hachure",fillWeight:2,hachureGap:8,hachureAngle:-41+P*60,stroke:W,strokeWidth:parseFloat(String(H))});B.select("path").remove(),B.node()?.insertBefore(oe,B.select("text").node())}}else B.select("path").style("fill",G).style("fill-opacity",z).style("stroke",W).style("stroke-width",H).style("stroke-opacity",.95);let j=V?.color||(_?Qe(G,30):Je(G,30));B.select("text").style("font-size",`${48*T}px`).style("fill",j)}),h&&L?S.selectAll(".venn-intersection").each(function(D){let P=et(this),O=N0([...D.sets].sort()),$=g.get(O),V=$?.fill;if(V){let G=P.select("path"),z=G.attr("d");if(z){let W=L.path(z,{roughness:.7,seed:u,fill:kk(V,.3),fillStyle:"cross-hatch",fillWeight:2,hachureGap:6,hachureAngle:60,stroke:"none"}),H=G.node();H?.parentNode?.insertBefore(W,H),G.remove()}}else P.select("path").style("fill-opacity",0);P.select("text").style("font-size",`${48*T}px`).style("fill",$?.color??s.vennSetTextColor??C)}):(S.selectAll(".venn-intersection text").style("font-size",`${48*T}px`).style("fill",D=>{let B=N0([...D.sets].sort());return g.get(B)?.color??s.vennSetTextColor??C}),S.selectAll(".venn-intersection path").style("fill-opacity",D=>{let B=N0([...D.sets].sort());return g.get(B)?.fill?1:0}).style("fill",D=>{let B=N0([...D.sets].sort());return g.get(B)?.fill??"transparent"}));let A=w.append("g").attr("transform",`translate(0, ${k})`),M=S.select("svg").node();if(M&&"childNodes"in M)for(let D of[...M.childNodes])A.node()?.appendChild(D);Wr(w,x,v,a?.useMaxWidth??!0)},"draw");o(N0,"stableSetsKey");o(dMt,"renderTextNodes");o(fMt,"ensurePairwiseSubsets");HBe={draw:hMt}});var YBe={};ir(YBe,{diagram:()=>pMt});var pMt,jBe=F(()=>{"use strict";TBe();wBe();SBe();UBe();pMt={parser:bBe,db:CBe,renderer:HBe,styles:kBe}});var Tx,TX=F(()=>{"use strict";Wi();ur();Qt();Jt();Nn();Tx=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr}static{o(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let t=cr,r=_t();return qr({...t.treemap,...r.treemap??{}})}addNode(t,r){this.nodes.push(t),this.levels.set(t,r),r===0&&(this.outerNodes.push(t),this.root??=t)}getRoot(){return{name:"",children:this.outerNodes}}addClass(t,r){let n=this.classes.get(t)??{id:t,styles:[],textStyles:[]},i=r.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");i&&i.forEach(a=>{M2(a)&&(n?.textStyles?n.textStyles.push(a):n.textStyles=[a]),n?.styles?n.styles.push(a):n.styles=[a]}),this.classes.set(t,n)}getClasses(){return this.classes}getStylesForClass(t){return this.classes.get(t)?.styles??[]}clear(){yr(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function ZBe(e){if(!e.length)return[];let t=[],r=[];return e.forEach(n=>{let i={name:n.name,children:n.type==="Leaf"?void 0:[]};for(i.classSelector=n?.classSelector,n?.cssCompiledStyles&&(i.cssCompiledStyles=n.cssCompiledStyles),n.type==="Leaf"&&n.value!==void 0&&(i.value=n.value);r.length>0&&r[r.length-1].level>=n.level;)r.pop();if(r.length===0)t.push(i);else{let a=r[r.length-1].node;a.children?a.children.push(i):a.children=[i]}n.type!=="Leaf"&&r.push({node:i,level:n.level})}),t}var QBe=F(()=>{"use strict";o(ZBe,"buildHierarchy")});var vMt,xMt,CX,JBe=F(()=>{"use strict";Xa();vt();Hs();QBe();TX();vMt=o((e,t)=>{Gn(e,t);let r=[];for(let a of e.TreemapRows??[])a.$type==="ClassDefStatement"&&t.addClass(a.className??"",a.styleText??"");for(let a of e.TreemapRows??[]){let s=a.item;if(!s)continue;let l=a.indent?parseInt(a.indent):0,u=xMt(s),h=s.classSelector?t.getStylesForClass(s.classSelector):[],d=h.length>0?h:void 0,f={level:l,name:u,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:d};r.push(f)}let n=ZBe(r),i=o((a,s)=>{for(let l of a)t.addNode(l,s),l.children&&l.children.length>0&&i(l.children,s+1)},"addNodesRecursively");i(n,0)},"populate"),xMt=o(e=>e.name?String(e.name):"","getItemName"),CX={parser:{yy:void 0},parse:o(async e=>{try{let r=await Si("treemap",e);Z.debug("Treemap AST:",r);let n=CX.parser?.yy;if(!(n instanceof Tx))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");vMt(r,n)}catch(t){throw Z.error("Error parsing treemap:",t),t}},"parse")}});var bMt,Cx,sk,TMt,CMt,e$e,t$e=F(()=>{"use strict";Ka();Jf();$n();$r();Jt();ur();vt();bMt=10,Cx=10,sk=25,TMt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig(),s=a.padding??bMt,l=i.getDiagramTitle(),u=i.getRoot(),{themeVariables:h}=_t();if(!u)return;let d=l?30:0,f=xn(t),p=a.nodeWidth?a.nodeWidth*Cx:960,m=a.nodeHeight?a.nodeHeight*Cx:500,g=p,y=m+d;f.attr("viewBox",`0 0 ${g} ${y}`),Wr(f,y,g,a.useMaxWidth);let v;try{let z=a.valueFormat||",";if(z==="$0,0")v=o(W=>"$"+Xc(",")(W),"valueFormat");else if(z.startsWith("$")&&z.includes(",")){let W=/\.\d+/.exec(z),H=W?W[0]:"";v=o(j=>"$"+Xc(","+H)(j),"valueFormat")}else if(z.startsWith("$")){let W=z.substring(1);v=o(H=>"$"+Xc(W||"")(H),"valueFormat")}else v=Xc(z)}catch(z){Z.error("Error creating format function:",z),v=Xc(",")}let x=Oo().range(["transparent",h.cScale0,h.cScale1,h.cScale2,h.cScale3,h.cScale4,h.cScale5,h.cScale6,h.cScale7,h.cScale8,h.cScale9,h.cScale10,h.cScale11]),b=Oo().range(["transparent",h.cScalePeer0,h.cScalePeer1,h.cScalePeer2,h.cScalePeer3,h.cScalePeer4,h.cScalePeer5,h.cScalePeer6,h.cScalePeer7,h.cScalePeer8,h.cScalePeer9,h.cScalePeer10,h.cScalePeer11]),T=Oo().range([h.cScaleLabel0,h.cScaleLabel1,h.cScaleLabel2,h.cScaleLabel3,h.cScaleLabel4,h.cScaleLabel5,h.cScaleLabel6,h.cScaleLabel7,h.cScaleLabel8,h.cScaleLabel9,h.cScaleLabel10,h.cScaleLabel11]);l&&f.append("text").attr("x",g/2).attr("y",d/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(l);let k=f.append("g").attr("transform",`translate(0, ${d})`).attr("class","treemapContainer"),C=vy(u).sum(z=>z.value??0).sort((z,W)=>(W.value??0)-(z.value??0)),S=uE().size([p,m]).paddingTop(z=>z.children&&z.children.length>0?sk+Cx:0).paddingInner(s).paddingLeft(z=>z.children&&z.children.length>0?Cx:0).paddingRight(z=>z.children&&z.children.length>0?Cx:0).paddingBottom(z=>z.children&&z.children.length>0?Cx:0).round(!0)(C),R=S.descendants().filter(z=>z.children&&z.children.length>0),L=k.selectAll(".treemapSection").data(R).enter().append("g").attr("class","treemapSection").attr("transform",z=>`translate(${z.x0},${z.y0})`);L.append("rect").attr("width",z=>z.x1-z.x0).attr("height",sk).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",z=>z.depth===0?"display: none;":""),L.append("clipPath").attr("id",(z,W)=>`clip-section-${t}-${W}`).append("rect").attr("width",z=>Math.max(0,z.x1-z.x0-12)).attr("height",sk),L.append("rect").attr("width",z=>z.x1-z.x0).attr("height",z=>z.y1-z.y0).attr("class",(z,W)=>`treemapSection section${W}`).attr("fill",z=>x(z.data.name)).attr("fill-opacity",.6).attr("stroke",z=>b(z.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",z=>{if(z.depth===0)return"display: none;";let W=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W.nodeStyles+";"+W.borderStyles.join(";")}),L.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",sk/2).attr("dominant-baseline","middle").text(z=>z.depth===0?"":z.data.name).attr("font-weight","bold").attr("clip-path",(z,W)=>`url(#clip-section-${t}-${W})`).attr("style",z=>{if(z.depth===0)return"display: none;";let W="dominant-baseline: middle; font-size: 12px; fill:"+T(z.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")}).each(function(z){if(z.depth===0)return;let W=et(this),H=z.data.name;W.text(H);let j=z.x1-z.x0,Q=6,U;a.showValues!==!1&&z.value?U=j-10-30-10-Q:U=j-Q-6;let te=Math.max(15,U),le=W.node();if(le.getComputedTextLength()>te){let Re=H;for(;Re.length>0;){if(Re=H.substring(0,Re.length-1),Re.length===0){W.text("..."),le.getComputedTextLength()>te&&W.text("");break}if(W.text(Re+"..."),le.getComputedTextLength()<=te)break}}}),a.showValues!==!1&&L.append("text").attr("class","treemapSectionValue").attr("x",z=>z.x1-z.x0-10).attr("y",sk/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(z=>z.value?v(z.value):"").attr("font-style","italic").attr("style",z=>{if(z.depth===0)return"display: none;";let W="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+T(z.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")});let N=S.leaves(),I=N.length>20,_=I?16:38,A=I?14:28,M=I?4:8,D=I?4:6,P=I?2:4,B=I?8:10,O=I?1:2,$=k.selectAll(".treemapLeafGroup").data(N).enter().append("g").attr("class",(z,W)=>`treemapNode treemapLeafGroup leaf${W}${z.data.classSelector?` ${z.data.classSelector}`:""}x`).attr("transform",z=>`translate(${z.x0},${z.y0})`);$.append("rect").attr("width",z=>z.x1-z.x0).attr("height",z=>z.y1-z.y0).attr("class","treemapLeaf").attr("fill",z=>z.parent?x(z.parent.data.name):x(z.data.name)).attr("style",z=>ct({cssCompiledStyles:z.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",z=>z.parent?x(z.parent.data.name):x(z.data.name)).attr("stroke-width",3),$.append("clipPath").attr("id",(z,W)=>`clip-${t}-${W}`).append("rect").attr("width",z=>Math.max(0,z.x1-z.x0-4)).attr("height",z=>Math.max(0,z.y1-z.y0-4)),$.append("text").attr("class","treemapLabel").attr("x",z=>(z.x1-z.x0)/2).attr("y",z=>(z.y1-z.y0)/2).attr("style",z=>{let W=`text-anchor: middle; dominant-baseline: middle; font-size: ${_}px;fill:`+T(z.data.name)+";",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")}).attr("clip-path",(z,W)=>`url(#clip-${t}-${W})`).text(z=>z.data.name).each(function(z){let W=et(this),H=z.x1-z.x0,j=z.y1-z.y0,Q=W.node(),U=H-2*P,oe=j-2*P;if(UU&&te>M;)te--,W.style("font-size",`${te}px`);let ie=Math.max(D,Math.min(A,Math.round(te*le))),ae=te+O+ie;for(;ae>oe&&te>M&&(te--,ie=Math.max(D,Math.min(A,Math.round(te*le))),!(ieoe;W.style("font-size",`${te}px`),I?(teU||te(W.x1-W.x0)/2).attr("y",function(W){return(W.y1-W.y0)/2}).attr("style",W=>{let H=`text-anchor: middle; dominant-baseline: hanging; font-size: ${A}px;fill:`+T(W.data.name)+";",j=ct({cssCompiledStyles:W.data.cssCompiledStyles});return H+j.labelStyles.replace("color:","fill:")}).attr("clip-path",(W,H)=>`url(#clip-${t}-${H})`).text(W=>W.value?v(W.value):"").each(function(W){let H=et(this),j=this.parentNode;if(!j){H.style("display","none");return}let Q=et(j).select(".treemapLabel");if(Q.empty()||Q.style("display")==="none"){H.style("display","none");return}let U=parseFloat(Q.style("font-size")),te=Math.max(D,Math.min(A,Math.round(U*.6)));H.style("font-size",`${te}px`);let ie=(W.y1-W.y0)/2+U/2+O;H.attr("y",ie);let ae=W.x1-W.x0,Pe=W.y1-W.y0-4,Ge=ae-2*P;H.node().getComputedTextLength()>Ge||ie+te>Pe||te{"use strict";Qt();Pc();ur();wMt={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},kMt=o(({treemap:e}={})=>{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(wMt,e),a=i.titleColor??n.titleColor,s=i.labelColor??n.textColor,l=i.valueColor??n.textColor;return` + .treemapNode.section { + stroke: ${i.sectionStrokeColor}; + stroke-width: ${i.sectionStrokeWidth}; + fill: ${i.sectionFillColor}; + } + .treemapNode.leaf { + stroke: ${i.leafStrokeColor}; + stroke-width: ${i.leafStrokeWidth}; + fill: ${i.leafFillColor}; + } + .treemapLabel { + fill: ${s}; + font-size: ${i.labelFontSize}; + } + .treemapValue { + fill: ${l}; + font-size: ${i.valueFontSize}; + } + .treemapTitle { + fill: ${a}; + font-size: ${i.titleFontSize}; + } + `},"getStyles"),r$e=kMt});var i$e={};ir(i$e,{diagram:()=>SMt});var SMt,a$e=F(()=>{"use strict";TX();JBe();t$e();n$e();SMt={parser:CX,get db(){return new Tx},renderer:e$e,styles:r$e}});var uD,P0,l$e,RMt,_Mt,wX,c$e=F(()=>{"use strict";Xa();vt();Hs();uD=o((e,t)=>{let r=e<=1?e*100:e;if(r<0||r>100)throw new Error(`${t} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${e}`);return r},"toPercent"),P0=o((e,t,r)=>({x:uD(t,`${r} evolution`),y:uD(e,`${r} visibility`)}),"toCoordinates"),l$e=o(e=>{if(e){if(e==="+<>")return"bidirectional";if(e==="+<")return"backward";if(e==="+>")return"forward"}},"getFlowFromPort"),RMt=o(e=>{if(!e?.startsWith("+"))return{};let r=/^\+'([^']*)'/.exec(e)?.[1];return e.includes("<>")?{flow:"bidirectional",label:r}:e.includes("<")?{flow:"backward",label:r}:e.includes(">")?{flow:"forward",label:r}:{label:r}},"extractFlowFromArrow"),_Mt=o((e,t)=>{if(Gn(e,t),e.size&&t.setSize(e.size.width,e.size.height),e.evolution){let r=e.evolution.stages.map(i=>i.secondName?`${i.name.trim()} / ${i.secondName.trim()}`:i.name.trim()),n=e.evolution.stages.filter(i=>i.boundary!==void 0).map(i=>i.boundary);t.updateAxes({stages:r,stageBoundaries:n})}if(e.anchors.forEach(r=>{let n=P0(r.visibility,r.evolution,`Anchor "${r.name}"`);t.addNode(r.name,r.name,n.x,n.y,"anchor")}),e.components.forEach(r=>{let n=P0(r.visibility,r.evolution,`Component "${r.name}"`),i=r.label?(r.label.negX?-1:1)*r.label.offsetX:void 0,a=r.label?(r.label.negY?-1:1)*r.label.offsetY:void 0,s=r.decorator?.strategy;t.addNode(r.name,r.name,n.x,n.y,"component",i,a,r.inertia,s)}),e.notes.forEach(r=>{let n=P0(r.visibility,r.evolution,`Note "${r.text}"`);t.addNote(r.text,n.x,n.y)}),e.pipelines.forEach(r=>{let n=t.getNode(r.parent);if(!n||typeof n.y!="number")throw new Error(`Pipeline "${r.parent}" must reference an existing component with coordinates.`);let i=n.y;t.startPipeline(r.parent),r.components.forEach(a=>{let s=`${r.parent}_${a.name}`,l=a.label?(a.label.negX?-1:1)*a.label.offsetX:void 0,u=a.label?(a.label.negY?-1:1)*a.label.offsetY:void 0,h=uD(a.evolution,`Pipeline component "${a.name}" evolution`);t.addNode(s,a.name,h,i,"pipeline-component",l,u),t.addPipelineComponent(r.parent,s)})}),e.links.forEach(r=>{let n=!!r.arrow&&(r.arrow.includes("-.->")||r.arrow.includes(".-.")),i=l$e(r.fromPort)??l$e(r.toPort),{flow:a,label:s}=RMt(r.arrow);!i&&a&&(i=a);let l=r.linkLabel,u=s??l;t.addLink(t.resolveNodeId(r.from),t.resolveNodeId(r.to),n,u,i)}),e.evolves.forEach(r=>{let n=t.getNode(r.component);if(n?.y!==void 0){let i=uD(r.target,`Evolve target for "${r.component}"`);t.addTrend(r.component,i,n.y)}}),e.annotations.length>0){let r=e.annotations[0],n=P0(r.x,r.y,"Annotations box");t.setAnnotationsBox(n.x,n.y)}e.annotation.forEach(r=>{let n=P0(r.x,r.y,`Annotation ${r.number}`);t.addAnnotation(r.number,[{x:n.x,y:n.y}],r.text)}),e.accelerators.forEach(r=>{let n=P0(r.x,r.y,`Accelerator "${r.name}"`);t.addAccelerator(r.name,n.x,n.y)}),e.deaccelerators.forEach(r=>{let n=P0(r.x,r.y,`Deaccelerator "${r.name}"`);t.addDeaccelerator(r.name,n.x,n.y)})},"populateDb"),wX={parser:{yy:void 0},parse:o(async e=>{let t=await Si("wardley",e);Z.debug(t);let r=wX.parser?.yy;if(!r||typeof r.addNode!="function")throw new Error("parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");_Mt(t,r)},"parse")}});var hD,u$e=F(()=>{"use strict";hD=class{constructor(){this.nodes=new Map;this.links=[];this.trends=new Map;this.pipelines=new Map;this.annotations=[];this.notes=[];this.accelerators=[];this.deaccelerators=[];this.axes={}}static{o(this,"WardleyBuilder")}addNode(t){let r=this.nodes.get(t.id)??{id:t.id,label:t.label},n={...r,...t,className:t.className??r.className,labelOffsetX:t.labelOffsetX??r.labelOffsetX,labelOffsetY:t.labelOffsetY??r.labelOffsetY};this.nodes.set(t.id,n)}addLink(t){this.links.push(t)}addTrend(t){this.trends.set(t.nodeId,t)}startPipeline(t){this.pipelines.set(t,{nodeId:t,componentIds:[]});let r=this.nodes.get(t);r&&(r.isPipelineParent=!0)}addPipelineComponent(t,r){let n=this.pipelines.get(t);n&&n.componentIds.push(r);let i=this.nodes.get(r);i&&(i.inPipeline=!0)}addAnnotation(t){this.annotations.push(t)}addNote(t){this.notes.push(t)}addAccelerator(t){this.accelerators.push(t)}addDeaccelerator(t){this.deaccelerators.push(t)}setAnnotationsBox(t,r){this.annotationsBox={x:t,y:r}}setAxes(t){this.axes={...this.axes,...t}}setSize(t,r){this.size={width:t,height:r}}getNode(t){return this.nodes.get(t)}resolveNodeId(t){if(this.nodes.has(t))return t;for(let[r,n]of this.nodes)if(n.label===t)return r;return t}build(){let t=[];for(let r of this.nodes.values()){if(typeof r.x!="number"||typeof r.y!="number")throw new Error(`Node "${r.label}" is missing coordinates`);t.push(r)}return{nodes:t,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}}});function LMt(){return Ae()["wardley-beta"]}function DMt(e,t,r,n,i,a,s,l,u){gs.addNode({id:e,label:t,x:r,y:n,className:i,labelOffsetX:a,labelOffsetY:s,inertia:l,sourceStrategy:u})}function IMt(e,t,r=!1,n,i){gs.addLink({source:e,target:t,dashed:r,label:n,flow:i})}function MMt(e,t,r){gs.addTrend({nodeId:e,targetX:t,targetY:r})}function NMt(e,t,r){gs.addAnnotation({number:e,coordinates:t,text:r})}function PMt(e,t,r){gs.addNote({text:e,x:t,y:r})}function OMt(e,t,r){gs.addAccelerator({name:e,x:t,y:r})}function BMt(e,t,r){gs.addDeaccelerator({name:e,x:t,y:r})}function $Mt(e,t){gs.setAnnotationsBox(e,t)}function FMt(e,t){gs.setSize(e,t)}function zMt(e){gs.startPipeline(e)}function GMt(e,t){gs.addPipelineComponent(e,t)}function VMt(e){gs.setAxes(e)}function WMt(e){return gs.getNode(e)}function qMt(e){return gs.resolveNodeId(e)}function HMt(){return gs.build()}function UMt(){gs.clear(),yr()}var gs,h$e,d$e=F(()=>{"use strict";Xt();Nn();u$e();gs=new hD;o(LMt,"getConfig");o(DMt,"addNode");o(IMt,"addLink");o(MMt,"addTrend");o(NMt,"addAnnotation");o(PMt,"addNote");o(OMt,"addAccelerator");o(BMt,"addDeaccelerator");o($Mt,"setAnnotationsBox");o(FMt,"setSize");o(zMt,"startPipeline");o(GMt,"addPipelineComponent");o(VMt,"updateAxes");o(WMt,"getNode");o(qMt,"resolveNodeId");o(HMt,"getWardleyData");o(UMt,"clear");h$e={getConfig:LMt,addNode:DMt,addLink:IMt,addTrend:MMt,addAnnotation:NMt,addNote:PMt,addAccelerator:OMt,addDeaccelerator:BMt,setAnnotationsBox:$Mt,setSize:FMt,startPipeline:zMt,addPipelineComponent:GMt,updateAxes:VMt,getNode:WMt,resolveNodeId:qMt,getWardleyData:HMt,clear:UMt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var YMt,jMt,XMt,KMt,f$e,p$e=F(()=>{"use strict";Xt();vt();Ka();$n();YMt=["Genesis","Custom Built","Product","Commodity"],jMt=o(()=>{let{themeVariables:e}=Ae();return{backgroundColor:e.wardley?.backgroundColor??e.background??"#fff",axisColor:e.wardley?.axisColor??"#000",axisTextColor:e.wardley?.axisTextColor??e.primaryTextColor??"#222",gridColor:e.wardley?.gridColor??"rgba(100, 100, 100, 0.2)",componentFill:e.wardley?.componentFill??"#fff",componentStroke:e.wardley?.componentStroke??"#000",componentLabelColor:e.wardley?.componentLabelColor??e.primaryTextColor??"#222",linkStroke:e.wardley?.linkStroke??"#000",evolutionStroke:e.wardley?.evolutionStroke??"#dc3545",annotationStroke:e.wardley?.annotationStroke??"#000",annotationTextColor:e.wardley?.annotationTextColor??e.primaryTextColor??"#222",annotationFill:e.wardley?.annotationFill??e.background??"#fff"}},"getTheme"),XMt=o(()=>{let e=Ae()["wardley-beta"];return{width:e?.width??900,height:e?.height??600,padding:e?.padding??48,nodeRadius:e?.nodeRadius??6,nodeLabelOffset:e?.nodeLabelOffset??8,axisFontSize:e?.axisFontSize??12,labelFontSize:e?.labelFontSize??10,showGrid:e?.showGrid??!1,useMaxWidth:e?.useMaxWidth??!0}},"getConfigValues"),KMt=o((e,t,r,n)=>{Z.debug(`Rendering Wardley map +`+e);let i=XMt(),a=jMt(),s=i.nodeRadius*1.6,l=n.db,u=l.getWardleyData(),h=l.getDiagramTitle(),d=u.size?.width??i.width,f=u.size?.height??i.height,p=xn(t);p.selectAll("*").remove(),Wr(p,f,d,i.useMaxWidth),p.attr("viewBox",`0 0 ${d} ${f}`);let m=p.append("g").attr("class","wardley-map"),g=p.append("defs");g.append("marker").attr("id",`arrow-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.evolutionStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-end-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.linkStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-start-${t}`).attr("viewBox","0 0 10 10").attr("refX",1).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z").attr("fill",a.linkStroke).attr("stroke","none"),m.append("rect").attr("class","wardley-background").attr("width",d).attr("height",f).attr("fill",a.backgroundColor);let y=d-i.padding*2,v=f-i.padding*2;h&&m.append("text").attr("class","wardley-title").attr("x",d/2).attr("y",i.padding/2).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);let x=o(O=>i.padding+O/100*y,"projectX"),b=o(O=>f-i.padding-O/100*v,"projectY"),T=m.append("g").attr("class","wardley-axes");T.append("line").attr("x1",i.padding).attr("x2",d-i.padding).attr("y1",f-i.padding).attr("y2",f-i.padding).attr("stroke",a.axisColor).attr("stroke-width",1),T.append("line").attr("x1",i.padding).attr("x2",i.padding).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke",a.axisColor).attr("stroke-width",1);let k=u.axes.xLabel??"Evolution",C=u.axes.yLabel??"Visibility";T.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",i.padding+y/2).attr("y",f-i.padding/4).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(k),T.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",i.padding/3).attr("y",i.padding+v/2).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${i.padding/3} ${i.padding+v/2})`).text(C);let w=u.axes.stages&&u.axes.stages.length>0?u.axes.stages:YMt;if(w.length>0){let O=m.append("g").attr("class","wardley-stages"),$=u.axes.stageBoundaries,V=[];if($&&$.length===w.length){let G=0;$.forEach(z=>{V.push({start:G,end:z}),G=z})}else{let G=1/w.length;w.forEach((z,W)=>{V.push({start:W*G,end:(W+1)*G})})}w.forEach((G,z)=>{let W=V[z],H=i.padding+W.start*y,j=i.padding+W.end*y,Q=(H+j)/2;z>0&&O.append("line").attr("x1",H).attr("x2",H).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),O.append("text").attr("class","wardley-stage-label").attr("x",Q).attr("y",f-i.padding/1.5).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize-2).attr("text-anchor","middle").text(G)})}if(i.showGrid){let O=m.append("g").attr("class","wardley-grid");for(let $=1;$<4;$++){let V=$/4,G=i.padding+y*V;O.append("line").attr("x1",G).attr("x2",G).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6"),O.append("line").attr("x1",i.padding).attr("x2",d-i.padding).attr("y1",f-i.padding-v*V).attr("y2",f-i.padding-v*V).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6")}}let S=new Map;if(u.nodes.forEach(O=>{S.set(O.id,{x:x(O.x),y:b(O.y),node:O})}),u.pipelines.length>0){let O=m.append("g").attr("class","wardley-pipelines"),$=m.append("g").attr("class","wardley-pipeline-links");u.pipelines.forEach(V=>{if(V.componentIds.length===0)return;let G=V.componentIds.map(j=>({id:j,pos:S.get(j),node:u.nodes.find(Q=>Q.id===j)})).filter(j=>j.pos&&j.node).sort((j,Q)=>j.node.x-Q.node.x);for(let j=0;j{let Q=S.get(j);Q&&(z=Math.min(z,Q.x),W=Math.max(W,Q.x),H=Q.y)}),z!==1/0&&W!==-1/0){let Q=i.nodeRadius*4,U=H-Q/2,oe=S.get(V.nodeId);if(oe){let te=(z+W)/2;oe.x=te,oe.y=U-s/6}O.append("rect").attr("class","wardley-pipeline-box").attr("x",z-15).attr("y",U).attr("width",W-z+30).attr("height",Q).attr("fill","none").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}let R=m.append("g").attr("class","wardley-links"),L=new Map;u.pipelines.forEach(O=>{L.set(O.nodeId,new Set(O.componentIds))});let N=u.links.filter(O=>!(!S.has(O.source)||!S.has(O.target)||L.get(O.target)?.has(O.source)));R.selectAll("line").data(N).enter().append("line").attr("class",O=>`wardley-link${O.dashed?" wardley-link--dashed":""}`).attr("x1",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H);return $.x+W/j*z}).attr("y1",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H);return $.y+H/j*z}).attr("x2",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=$.x-V.x,H=$.y-V.y,j=Math.sqrt(W*W+H*H);return V.x+W/j*z}).attr("y2",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=$.x-V.x,H=$.y-V.y,j=Math.sqrt(W*W+H*H);return V.y+H/j*z}).attr("stroke",a.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",O=>O.dashed?"6 6":null).attr("marker-end",O=>O.flow==="forward"||O.flow==="bidirectional"?`url(#link-arrow-end-${t})`:null).attr("marker-start",O=>O.flow==="backward"||O.flow==="bidirectional"?`url(#link-arrow-start-${t})`:null),R.selectAll("text").data(N.filter(O=>O.label)).enter().append("text").attr("class","wardley-link-label").attr("x",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.x+V.x)/2,z=V.y-$.y,W=V.x-$.x,H=Math.sqrt(W*W+z*z),j=8,Q=z/H;return G+Q*j}).attr("y",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.y+V.y)/2,z=V.x-$.x,W=V.y-$.y,H=Math.sqrt(z*z+W*W),j=8,Q=-z/H;return G+Q*j}).attr("fill",a.axisTextColor).attr("font-size",i.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.x+V.x)/2,z=($.y+V.y)/2,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H),Q=8,U=H/j,oe=-W/j,te=G+U*Q,le=z+oe*Q,ie=Math.atan2(H,W)*180/Math.PI;return(ie>90||ie<-90)&&(ie+=180),`rotate(${ie} ${te} ${le})`}).text(O=>O.label);let I=m.append("g").attr("class","wardley-trends"),_=u.trends.map(O=>{let $=S.get(O.nodeId);if(!$)return null;let V=x(O.targetX),G=b(O.targetY),z=V-$.x,W=G-$.y,H=Math.sqrt(z*z+W*W),j=i.nodeRadius+2,Q=H>j?V-z/H*j:V,U=H>j?G-W/H*j:G;return{origin:$,targetX:V,targetY:G,adjustedX2:Q,adjustedY2:U}}).filter(O=>O!==null);I.selectAll("line").data(_).enter().append("line").attr("class","wardley-trend").attr("x1",O=>O.origin.x).attr("y1",O=>O.origin.y).attr("x2",O=>O.adjustedX2).attr("y2",O=>O.adjustedY2).attr("stroke",a.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${t})`);let M=m.append("g").attr("class","wardley-nodes").selectAll("g").data(u.nodes).enter().append("g").attr("class",O=>["wardley-node",O.className?`wardley-node--${O.className}`:""].filter(Boolean).join(" "));M.filter(O=>O.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#666").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#ccc").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);let D=M.filter(O=>O.sourceStrategy==="market");D.append("circle").attr("class","wardley-market-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>!O.isPipelineParent&&O.sourceStrategy!=="market"&&O.className!=="anchor").append("circle").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1);let P=i.nodeRadius*.7,B=i.nodeRadius*1.2;if(D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x).attr("y1",O=>S.get(O.id).y-B).attr("x2",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y2",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y1",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y2",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y1",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>S.get(O.id).x).attr("y2",O=>S.get(O.id).y-B).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y-B).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("cy",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("cy",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),M.filter(O=>O.isPipelineParent===!0).append("rect").attr("x",O=>S.get(O.id).x-s/2).attr("y",O=>S.get(O.id).y-s/2).attr("width",s).attr("height",s).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",O=>{let $=S.get(O.id),V=O.isPipelineParent?s/2+15:i.nodeRadius+15;return O.sourceStrategy&&(V+=i.nodeRadius+10),$.x+V}).attr("y1",O=>{let $=S.get(O.id),V=O.isPipelineParent?s:i.nodeRadius*2;return $.y-V/2}).attr("x2",O=>{let $=S.get(O.id),V=O.isPipelineParent?s/2+15:i.nodeRadius+15;return O.sourceStrategy&&(V+=i.nodeRadius+10),$.x+V}).attr("y2",O=>{let $=S.get(O.id),V=O.isPipelineParent?s:i.nodeRadius*2;return $.y+V/2}).attr("stroke",a.componentStroke).attr("stroke-width",6),M.append("text").attr("x",O=>{let $=S.get(O.id);if(O.className==="anchor")return O.labelOffsetX!==void 0?$.x+O.labelOffsetX:$.x;let V=i.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetX===void 0&&(V+=10);let G=O.labelOffsetX??V;return $.x+G}).attr("y",O=>{let $=S.get(O.id);if(O.className==="anchor")return O.labelOffsetY!==void 0?$.y+O.labelOffsetY:$.y-3;let V=-i.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetY===void 0&&(V-=10);let G=O.labelOffsetY??V;return $.y+G}).attr("class","wardley-node-label").attr("fill",O=>O.className==="evolved"?a.evolutionStroke:O.className==="anchor"?"#000":a.componentLabelColor).attr("font-size",i.labelFontSize).attr("font-weight",O=>O.className==="anchor"?"bold":"normal").attr("text-anchor",O=>O.className==="anchor"?"middle":"start").attr("dominant-baseline",O=>O.className==="anchor"?"middle":"auto").text(O=>O.label),u.annotations.length>0){let O=m.append("g").attr("class","wardley-annotations");if(u.annotations.forEach($=>{let V=$.coordinates.map(G=>({x:x(G.x),y:b(G.y)}));if(V.length>1)for(let G=0;G{let z=O.append("g").attr("class","wardley-annotation");z.append("circle").attr("cx",G.x).attr("cy",G.y).attr("r",10).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5),z.append("text").attr("x",G.x).attr("y",G.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.number)})}),u.annotationsBox){let $=x(u.annotationsBox.x),V=b(u.annotationsBox.y),G=10,z=16,W=11,H=O.append("g").attr("class","wardley-annotations-box"),j=[...u.annotations].filter(U=>U.text).sort((U,oe)=>U.number-oe.number),Q=[];if(j.forEach((U,oe)=>{let te=H.append("text").attr("x",$+G).attr("y",V+G+(oe+1)*z).attr("font-size",W).attr("fill",a.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${U.number}. ${U.text}`);Q.push(te)}),Q.length>0){let U=0,oe=0;Q.forEach(Pe=>{let Ge=Pe.node(),Oe=Ge.getComputedTextLength();U=Math.max(U,Oe);let ue=Ge.getBBox();oe=Math.max(oe,ue.height)});let te=U+G*2+105,le=j.length*z+G*2+oe/2,ie=i.padding,ae=d-i.padding-te,Re=i.padding,be=f-i.padding-le;$=Math.max(ie,Math.min($,ae)),V=Math.max(Re,Math.min(V,be)),Q.forEach((Pe,Ge)=>{Pe.attr("x",$+G).attr("y",V+G+(Ge+1)*z)}),H.insert("rect","text").attr("x",$).attr("y",V).attr("width",te).attr("height",le).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(u.notes.length>0){let O=m.append("g").attr("class","wardley-notes");u.notes.forEach($=>{let V=x($.x),G=b($.y);O.append("text").attr("x",V).attr("y",G).attr("text-anchor","start").attr("font-size",11).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.text)})}if(u.accelerators.length>0){let O=m.append("g").attr("class","wardley-accelerators");u.accelerators.forEach($=>{let V=x($.x),G=b($.y),z=60,W=30,H=20,j=` + M ${V} ${G-W/2} + L ${V+z-H} ${G-W/2} + L ${V+z-H} ${G-W/2-8} + L ${V+z} ${G} + L ${V+z-H} ${G+W/2+8} + L ${V+z-H} ${G+W/2} + L ${V} ${G+W/2} + Z + `;O.append("path").attr("d",j).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",V+z/2).attr("y",G+W/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}if(u.deaccelerators.length>0){let O=m.append("g").attr("class","wardley-deaccelerators");u.deaccelerators.forEach($=>{let V=x($.x),G=b($.y),z=60,W=30,H=20,j=` + M ${V+z} ${G-W/2} + L ${V+H} ${G-W/2} + L ${V+H} ${G-W/2-8} + L ${V} ${G} + L ${V+H} ${G+W/2+8} + L ${V+H} ${G+W/2} + L ${V+z} ${G+W/2} + Z + `;O.append("path").attr("d",j).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",V+z/2).attr("y",G+W/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}},"draw"),f$e={draw:KMt}});var m$e,g$e=F(()=>{"use strict";Qt();Pc();ur();m$e=o(({wardley:e}={})=>{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(n.wardley,e);return` + .wardley-background { + fill: ${i.backgroundColor}; + } + .wardley-axes line, .wardley-axes path { + stroke: ${i.axisColor}; + } + .wardley-axis-label { + fill: ${i.axisTextColor}; + } + .wardley-stage-label { + fill: ${i.axisTextColor}; + } + .wardley-grid line { + stroke: ${i.gridColor}; + } + .wardley-node circle { + fill: ${i.componentFill}; + stroke: ${i.componentStroke}; + } + .wardley-node-label { + fill: ${i.componentLabelColor}; + } + .wardley-link { + stroke: ${i.linkStroke}; + } + .wardley-link--dashed { + stroke-dasharray: 4 4; + } + .wardley-link-label { + fill: ${i.axisTextColor}; + } + .wardley-trend line { + stroke: ${i.evolutionStroke}; + } + .wardley-annotation-line { + stroke: ${i.annotationStroke}; + } + .wardley-annotation circle { + fill: ${i.annotationFill}; + stroke: ${i.annotationStroke}; + } + .wardley-annotation text { + fill: ${i.annotationTextColor}; + } + .wardley-annotations-box rect { + fill: ${i.annotationFill}; + stroke: ${i.annotationStroke}; + } + .wardley-annotations-box text { + fill: ${i.annotationTextColor}; + } + .wardley-pipeline-box { + stroke: ${i.componentStroke}; + } + .wardley-notes text { + fill: ${i.axisTextColor}; + } + `},"styles")});var y$e={};ir(y$e,{diagram:()=>ZMt});var ZMt,v$e=F(()=>{"use strict";c$e();d$e();p$e();g$e();ZMt={parser:wX,db:h$e,renderer:f$e,styles:m$e}});var T$e,ok,tNt,rNt,nNt,iNt,aNt,sNt,wx,kX=F(()=>{"use strict";ur();Wi();vt();Qt();Nn();T$e=o(()=>({domains:new Map,transitions:[]}),"createDefaultData"),ok=T$e(),tNt=o(()=>ok.domains,"getDomains"),rNt=o(()=>ok.transitions,"getTransitions"),nNt=o(e=>{if(e)for(let t of e){let r=t.domain,n=(t.items??[]).map(i=>({label:i.label}));ok.domains.set(r,{name:r,items:n})}},"setDomains"),iNt=o(e=>{e&&(ok.transitions=e.filter(t=>t.from===t.to?(Z.warn(`Cynefin: self-loop transition on domain "${t.from}" is not meaningful and will be skipped.`),!1):!0).map(t=>({from:t.from,to:t.to,label:t.label||void 0})))},"setTransitions"),aNt=o(()=>qr({...cr.cynefin,..._t().cynefin}),"getConfig"),sNt=o(()=>{yr(),ok=T$e()},"clear"),wx={getDomains:tNt,getTransitions:rNt,setDomains:nNt,setTransitions:iNt,getConfig:aNt,clear:sNt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var oNt,C$e,w$e=F(()=>{"use strict";Xa();vt();Hs();kX();oNt=o(e=>{Gn(e,wx),wx.setDomains(e.domains),wx.setTransitions(e.transitions)},"populate"),C$e={parse:o(async e=>{let t=await Si("cynefin",e);Z.debug(t),oNt(t)},"parse")}});function dD(e){let t=e+1831565813|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function lNt(e){let t=0;for(let r=0;r{"use strict";o(dD,"seededRandom");o(lNt,"hashString");o(k$e,"resolveSeed");o(S$e,"generateFoldPath");o(E$e,"generateHorizontalBoundary");o(A$e,"generateCliffPath");o(R$e,"generateConfusionPath")});var L$e,cNt,uNt,SX,hNt,D$e,I$e=F(()=>{"use strict";Ka();$n();vt();ur();Pc();Qt();_$e();L$e={complex:{model:"Probe \u2192 Sense \u2192 Respond",practice:"Emergent Practices"},complicated:{model:"Sense \u2192 Analyse \u2192 Respond",practice:"Good Practices"},clear:{model:"Sense \u2192 Categorise \u2192 Respond",practice:"Best Practices"},chaotic:{model:"Act \u2192 Sense \u2192 Respond",practice:"Novel Practices"},confusion:{model:"",practice:"Disorder"}},cNt=o((e,t)=>{let r=e/2,n=t/2;return{complex:{cx:r/2,cy:n/2,x:0,y:0,w:r,h:n},complicated:{cx:r+r/2,cy:n/2,x:r,y:0,w:r,h:n},chaotic:{cx:r/2,cy:n+n/2,x:0,y:n,w:r,h:n},clear:{cx:r+r/2,cy:n+n/2,x:r,y:n,w:r,h:n},confusion:{cx:r,cy:n,x:r*.7,y:n*.7,w:r*.6,h:n*.6}}},"getDomainLayouts"),uNt=o(()=>{let e=ma(),t=_t();return qr(e,t.themeVariables).cynefin},"getCynefinDomainColors"),SX=3,hNt=o((e,t,r,n)=>{let i=n.db,a=i.getDomains(),s=i.getTransitions(),l=i.getDiagramTitle(),u=i.getAccTitle(),h=i.getAccDescription(),d=i.getConfig(),f=uNt();Z.debug("Rendering Cynefin diagram");let p=d.width,m=d.height,g=d.padding,y=d.showDomainDescriptions,v=d.boundaryAmplitude,x=p+g*2,b=m+g*2,T={complex:f.complexBg,complicated:f.complicatedBg,clear:f.clearBg,chaotic:f.chaoticBg,confusion:f.confusionBg},k=xn(t);Wr(k,b,x,d.useMaxWidth??!0),k.attr("viewBox",`0 0 ${x} ${b}`),u&&k.append("title").text(u),h&&k.append("desc").text(h);let C=k.append("g").attr("transform",`translate(${g}, ${g})`),w=cNt(p,m),S=k$e(d.seed,t),R=C.append("g").attr("class","cynefin-backgrounds"),L=["complex","complicated","chaotic","clear"];for(let O of L){let $=w[O];R.append("rect").attr("class","cynefinDomain").attr("x",$.x).attr("y",$.y).attr("width",$.w).attr("height",$.h).attr("fill",T[O]).attr("fill-opacity",.4).attr("stroke","none")}let N=C.append("g").attr("class","cynefin-boundaries");N.append("path").attr("class","cynefinBoundary").attr("d",S$e(p,m,S,v)).attr("fill","none"),N.append("path").attr("class","cynefinBoundary").attr("d",E$e(p,m,S+100,v)).attr("fill","none"),N.append("path").attr("class","cynefinCliff").attr("d",A$e(p,m)).attr("fill","none");let I=p*.15,_=m*.15;C.append("path").attr("class","cynefinConfusion").attr("d",R$e(p/2,m/2,I,_)).attr("fill",T.confusion).attr("fill-opacity",.5);let A=C.append("g").attr("class","cynefin-labels");for(let O of L){let $=w[O];A.append("text").attr("class","cynefinDomainLabel").attr("x",$.cx).attr("y",y?$.cy-30:$.cy).attr("text-anchor","middle").attr("dominant-baseline","middle").text(O.charAt(0).toUpperCase()+O.slice(1))}if(A.append("text").attr("class","cynefinDomainLabel").attr("x",p/2).attr("y",y?m/2-10:m/2).attr("text-anchor","middle").attr("dominant-baseline","middle").text("Confusion"),y){let O=C.append("g").attr("class","cynefin-subtitles");for(let $ of L){let V=w[$],G=L$e[$];O.append("text").attr("class","cynefinSubtitle").attr("x",V.cx).attr("y",V.cy-10).attr("text-anchor","middle").attr("dominant-baseline","middle").text(G.model),O.append("text").attr("class","cynefinSubtitle").attr("x",V.cx).attr("y",V.cy+5).attr("text-anchor","middle").attr("dominant-baseline","middle").text(G.practice)}O.append("text").attr("class","cynefinSubtitle").attr("x",p/2).attr("y",m/2+8).attr("text-anchor","middle").attr("dominant-baseline","middle").text(L$e.confusion.practice)}let M=C.append("g").attr("class","cynefin-items"),D=26,P=10,B=["complex","complicated","chaotic","clear","confusion"];for(let O of B){let $=a.get(O);if(!$||$.items.length===0)continue;let V=w[O],G=O==="confusion",z=$.items,W=0;G&&$.items.length>SX&&(W=$.items.length-SX,z=$.items.slice(0,SX));let H;if(G){let j=y?22:14;H=V.cy+j}else H=V.cy+(y?25:15);if([...z].forEach((j,Q)=>{let U=H+Q*(D+4),oe=M.append("g"),te=oe.append("text").attr("class","cynefinItemText").attr("x",0).attr("y",D/2).attr("text-anchor","middle").attr("dominant-baseline","central").text(j.label),le=j.label.length*7,ie=te.node();if(ie&&typeof ie.getBBox=="function"){let be=ie.getBBox();be.width>0&&(le=be.width)}let ae=le+P*2,Re=V.cx-ae/2;oe.attr("transform",`translate(${Re}, ${U})`),oe.insert("rect","text").attr("class","cynefinItem").attr("x",0).attr("y",0).attr("width",ae).attr("height",D).attr("rx",4).attr("ry",4).attr("fill",T[O]).attr("fill-opacity",.95),te.attr("x",ae/2).attr("y",D/2)}),W>0){let j=H+z.length*(D+4),Q=`+${W} more`,U=M.append("g"),oe=U.append("text").attr("class","cynefinItemText").attr("x",0).attr("y",D/2).attr("text-anchor","middle").attr("dominant-baseline","central").text(Q),te=Q.length*7,le=oe.node();if(le&&typeof le.getBBox=="function"){let Re=le.getBBox();Re.width>0&&(te=Re.width)}let ie=te+P*2,ae=V.cx-ie/2;U.attr("transform",`translate(${ae}, ${j})`),U.insert("rect","text").attr("class","cynefinItemOverflow").attr("x",0).attr("y",0).attr("width",ie).attr("height",D).attr("rx",4).attr("ry",4).attr("fill",T[O]).attr("fill-opacity",.6),oe.attr("x",ie/2).attr("y",D/2)}}if(s.length>0){let O=k.select("defs").empty()?k.append("defs"):k.select("defs"),$=`cynefin-arrow-${t}`;O.append("marker").attr("id",$).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","cynefinArrowHead");let V=C.append("g").attr("class","cynefin-arrows");s.forEach(G=>{let z=w[G.from],W=w[G.to];if(!z||!W)return;if(G.from===G.to){Z.warn(`Cynefin renderer: skipping self-loop on domain "${G.from}"`);return}let H=z.cx,j=z.cy,Q=W.cx,U=W.cy,oe=(H+Q)/2,te=(j+U)/2,le=Q-H,ie=U-j,ae=Math.sqrt(le*le+ie*ie),Re=ae*.15,be=-ie/ae,Pe=le/ae,Ge=oe+be*Re,Oe=te+Pe*Re;V.append("path").attr("class","cynefinArrowLine").attr("d",`M${H},${j} Q${Ge},${Oe} ${Q},${U}`).attr("fill","none").attr("marker-end",`url(#${$})`),G.label&&V.append("text").attr("class","cynefinArrowLabel").attr("x",Ge).attr("y",Oe-6).attr("text-anchor","middle").attr("dominant-baseline","auto").text(G.label)})}l&&C.append("text").attr("class","cynefinTitle").attr("x",p/2).attr("y",-g/2).attr("text-anchor","middle").attr("dominant-baseline","middle").text(l)},"draw"),D$e={draw:hNt}});var dNt,fNt,M$e,N$e=F(()=>{"use strict";Qt();Pc();ur();dNt=o(()=>{let e=ma(),t=_t();return qr(e,t.themeVariables).cynefin},"getCynefinTheme"),fNt=o(()=>{let e=dNt();return` + .cynefinDomain { + stroke: none; + } + .cynefinDomainLabel { + font-size: ${e.domainFontSize}px; + font-weight: bold; + fill: ${e.labelColor}; + } + .cynefinSubtitle { + font-size: ${e.itemFontSize-1}px; + fill: ${e.textColor}; + font-style: italic; + } + .cynefinItem { + fill-opacity: 0.95; + stroke: ${e.boundaryColor}; + stroke-width: 1; + } + .cynefinItemText { + font-size: ${e.itemFontSize}px; + fill: ${e.textColor}; + } + .cynefinItemOverflow { + fill-opacity: 0.6; + stroke: ${e.boundaryColor}; + stroke-width: 1; + stroke-dasharray: 3 2; + } + .cynefinBoundary { + stroke: ${e.boundaryColor}; + stroke-width: ${e.boundaryWidth}; + stroke-dasharray: 6 3; + } + .cynefinCliff { + stroke: ${e.cliffColor}; + stroke-width: ${e.cliffWidth}; + } + .cynefinConfusion { + stroke: ${e.boundaryColor}; + stroke-width: 1.5; + stroke-dasharray: 4 2; + } + .cynefinArrowLine { + stroke: ${e.arrowColor}; + stroke-width: ${e.arrowWidth}; + fill: none; + } + .cynefinArrowHead { + fill: ${e.arrowColor}; + stroke: none; + } + .cynefinArrowLabel { + font-size: ${e.itemFontSize-1}px; + fill: ${e.textColor}; + } + .cynefinTitle { + font-size: ${e.domainFontSize+2}px; + font-weight: bold; + fill: ${e.labelColor}; + } + `},"styles"),M$e=fNt});var P$e={};ir(P$e,{diagram:()=>pNt});var pNt,O$e=F(()=>{"use strict";w$e();kX();I$e();N$e();pNt={parser:C$e,db:wx,renderer:D$e,styles:M$e}});var EX,AX,RX,_X,fD,Ip,kx,yNt,F$e,z$e,vNt,xNt,bNt,TNt,CNt,wNt,kNt,SNt,ENt,sn,ju=F(()=>{"use strict";Xt();vt();Nn();Vr();EX="",AX="",RX="",_X=[],fD=new Map,Ip=o(e=>mr(e,Ae()),"sanitizeText"),kx=o(e=>{switch(e.type){case"terminal":return{...e,value:Ip(e.value)};case"nonterminal":return{...e,name:Ip(e.name)};case"sequence":return{...e,elements:e.elements.map(kx)};case"choice":return{...e,alternatives:e.alternatives.map(kx)};case"optional":return{...e,element:kx(e.element)};case"repetition":return{...e,element:kx(e.element),separator:e.separator?kx(e.separator):void 0};case"special":return{...e,text:Ip(e.text)}}},"sanitizeAstNode"),yNt=o(()=>{EX="",AX="",RX="",_X.length=0,fD.clear(),yr(),Z.debug("[Railroad] Database cleared")},"clear"),F$e=o(e=>{EX=Ip(e),Z.debug("[Railroad] Title set:",e)},"setTitle"),z$e=o(()=>EX,"getTitle"),vNt=o(e=>{let t={...e,name:Ip(e.name),definition:kx(e.definition),comment:e.comment?Ip(e.comment):void 0};Z.debug("[Railroad] Adding rule:",t.name),fD.has(t.name)&&Z.warn(`[Railroad] Rule '${t.name}' is already defined. Overwriting.`),_X.push(t),fD.set(t.name,t)},"addRule"),xNt=o(()=>_X,"getRules"),bNt=o(e=>fD.get(e),"getRule"),TNt=o(e=>{AX=Ip(e).replace(/^\s+/g,""),Z.debug("[Railroad] Accessibility title set:",e)},"setAccTitle"),CNt=o(()=>AX,"getAccTitle"),wNt=o(e=>{RX=Ip(e).replace(/\n\s+/g,` +`),Z.debug("[Railroad] Accessibility description set:",e)},"setAccDescription"),kNt=o(()=>RX,"getAccDescription"),SNt=F$e,ENt=z$e,sn={clear:yNt,setTitle:F$e,getTitle:z$e,addRule:vNt,getRules:xNt,getRule:bNt,setAccTitle:TNt,getAccTitle:CNt,setAccDescription:wNt,getAccDescription:kNt,setDiagramTitle:SNt,getDiagramTitle:ENt}});var ANt,Sx,RNt,_Nt,G$e,V$e=F(()=>{"use strict";Xa();vt();Hs();ju();ANt=Vv().Railroad.parser.LangiumParser,Sx=o(e=>{switch(e.$type){case"RailroadTerminalExpr":return{type:"terminal",value:e.value};case"RailroadNonTerminalExpr":return{type:"nonterminal",name:e.name};case"RailroadSpecialExpr":return{type:"special",text:e.text};case"RailroadSequenceExpr":{let t=e.elements.map(Sx);return t.length===1?t[0]:{type:"sequence",elements:t}}case"RailroadChoiceExpr":{let t=e.alternatives.map(Sx);return t.length===1?t[0]:{type:"choice",alternatives:t}}case"RailroadOptionalExpr":return{type:"optional",element:Sx(e.element)};case"RailroadOneOrMoreExpr":return{type:"repetition",element:Sx(e.element),min:1,max:1/0};case"RailroadZeroOrMoreExpr":return{type:"repetition",element:Sx(e.element),min:0,max:1/0};default:throw new Error(`Unsupported railroad expression: ${e.$type}`)}},"transformExpression"),RNt=o(e=>({name:e.name,definition:Sx(e.definition)}),"transformRule"),_Nt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(RNt(t)))},"populateDb"),G$e={parse:o(e=>{sn.clear(),Z.debug("[Railroad Parser] Starting Langium parse");let t=ANt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[Railroad Parser] Parsed rules:",r.rules.length),_Nt(r),Z.debug("[Railroad Parser] Parse complete")},"parse"),parser:{yy:sn}}});var Na,W$e=F(()=>{"use strict";Na={compactMode:!1,padding:10,verticalSeparation:8,horizontalSeparation:10,arcRadius:10,fontSize:14,fontFamily:"monospace",terminalFill:"#FFFFC0",terminalStroke:"#000000",terminalTextColor:"#000000",nonTerminalFill:"#FFFFFF",nonTerminalStroke:"#000000",nonTerminalTextColor:"#000000",lineColor:"#000000",strokeWidth:2,markerFill:"#000000",commentFill:"#E8E8E8",commentStroke:"#888888",commentTextColor:"#666666",specialFill:"#F0E0FF",specialStroke:"#8800CC",ruleNameColor:"#000066",showMarkers:!0,markerRadius:5}});var LNt,DNt,INt,q$e,MNt,NNt,Vn,H$e,O0,PNt,ONt,pD,Mp,Ex=F(()=>{"use strict";ur();Pc();W$e();LNt=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$|^(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch)\([\d\s%+,./-]+\)$|^[a-z]+$/i,DNt=/^[\w "',.-]+$/,INt=new Set(["compactMode","padding","verticalSeparation","horizontalSeparation","arcRadius","fontSize","fontFamily","terminalFill","terminalStroke","terminalTextColor","nonTerminalFill","nonTerminalStroke","nonTerminalTextColor","lineColor","strokeWidth","markerFill","commentFill","commentStroke","commentTextColor","specialFill","specialStroke","ruleNameColor","showMarkers","markerRadius"]),q$e=o(e=>e?Object.keys(e).every(t=>t==="railroad"||INt.has(t)):!1,"isRailroadStyleOptions"),MNt=o(e=>e?"railroad"in e&&e.railroad?e.railroad:q$e(e)?e:{}:{},"extractRailroadOverrides"),NNt=o(e=>{if(!e||q$e(e))return{};let{railroad:t,svgId:r,theme:n,look:i,...a}=e;return a},"extractThemeOverrides"),Vn=o((e,t)=>{if(typeof e!="string")return t;let r=e.trim();return LNt.test(r)?r:t},"sanitizeColorValue"),H$e=o((e,t)=>{if(typeof e!="string")return t;let r=e.trim();return DNt.test(r)?r:t},"sanitizeFontFamilyValue"),O0=o((e,t)=>{let r=typeof e=="number"?e:typeof e=="string"?Number.parseFloat(e):Number.NaN;return Number.isFinite(r)&&r>=0?r:t},"sanitizeNumberValue"),PNt=o(e=>{let t=typeof e=="number"?e:typeof e=="string"?Number.parseFloat(e):Number.NaN;return Number.isFinite(t)&&t>0?t:void 0},"parseThemeFontSize"),ONt=o(e=>{let t=H$e(e.fontFamily,Na.fontFamily),r=PNt(e.fontSize)??Na.fontSize;return{...Na,fontFamily:t,fontSize:r,terminalFill:Vn(e.secondBkg??e.secondaryColor,Na.terminalFill),terminalStroke:Vn(e.secondaryBorderColor??e.lineColor,Na.terminalStroke),terminalTextColor:Vn(e.secondaryTextColor??e.textColor,Na.terminalTextColor),nonTerminalFill:Vn(e.mainBkg??e.background,Na.nonTerminalFill),nonTerminalStroke:Vn(e.primaryBorderColor??e.lineColor,Na.nonTerminalStroke),nonTerminalTextColor:Vn(e.primaryTextColor??e.textColor,Na.nonTerminalTextColor),lineColor:Vn(e.lineColor,Na.lineColor),markerFill:Vn(e.lineColor,Na.markerFill),commentFill:Vn(e.labelBackground??e.tertiaryColor,Na.commentFill),commentStroke:Vn(e.tertiaryBorderColor??e.lineColor,Na.commentStroke),commentTextColor:Vn(e.tertiaryTextColor??e.textColor,Na.commentTextColor),specialFill:Vn(e.tertiaryColor??e.secondaryColor,Na.specialFill),specialStroke:Vn(e.tertiaryBorderColor??e.secondaryBorderColor,Na.specialStroke),ruleNameColor:Vn(e.titleColor??e.textColor,Na.ruleNameColor)}},"buildThemeDefaults"),pD=o(e=>{let t=_t(),r={...ma(),...t.themeVariables??{},...NNt(e)},n=ONt(r),i={...t.railroad??{},...MNt(e)};return{compactMode:i.compactMode??n.compactMode,padding:O0(i.padding,n.padding),verticalSeparation:O0(i.verticalSeparation,n.verticalSeparation),horizontalSeparation:O0(i.horizontalSeparation,n.horizontalSeparation),arcRadius:O0(i.arcRadius,n.arcRadius),fontSize:O0(i.fontSize,n.fontSize),fontFamily:H$e(i.fontFamily,n.fontFamily),terminalFill:Vn(i.terminalFill,n.terminalFill),terminalStroke:Vn(i.terminalStroke,n.terminalStroke),terminalTextColor:Vn(i.terminalTextColor,n.terminalTextColor),nonTerminalFill:Vn(i.nonTerminalFill,n.nonTerminalFill),nonTerminalStroke:Vn(i.nonTerminalStroke,n.nonTerminalStroke),nonTerminalTextColor:Vn(i.nonTerminalTextColor,n.nonTerminalTextColor),lineColor:Vn(i.lineColor,n.lineColor),strokeWidth:O0(i.strokeWidth,n.strokeWidth),markerFill:Vn(i.markerFill,n.markerFill),commentFill:Vn(i.commentFill,n.commentFill),commentStroke:Vn(i.commentStroke,n.commentStroke),commentTextColor:Vn(i.commentTextColor,n.commentTextColor),specialFill:Vn(i.specialFill,n.specialFill),specialStroke:Vn(i.specialStroke,n.specialStroke),ruleNameColor:Vn(i.ruleNameColor,n.ruleNameColor),showMarkers:i.showMarkers??n.showMarkers,markerRadius:O0(i.markerRadius,n.markerRadius)}},"buildRailroadStyleOptions"),Mp=o(e=>{let{fontFamily:t,fontSize:r,terminalFill:n,terminalStroke:i,terminalTextColor:a,nonTerminalFill:s,nonTerminalStroke:l,nonTerminalTextColor:u,lineColor:h,strokeWidth:d,markerFill:f,commentFill:p,commentStroke:m,commentTextColor:g,specialFill:y,specialStroke:v,ruleNameColor:x}=pD(e);return` + .railroad-diagram { + font-family: ${t}; + font-size: ${r}px; + } + + .railroad-terminal rect { + fill: ${n}; + stroke: ${i}; + stroke-width: ${d}px; + } + + .railroad-terminal text { + fill: ${a}; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-nonterminal rect { + fill: ${s}; + stroke: ${l}; + stroke-width: ${d}px; + } + + .railroad-nonterminal text { + fill: ${u}; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-line { + stroke: ${h}; + stroke-width: ${d}px; + fill: none; + } + + .railroad-start circle, + .railroad-end circle { + fill: ${f}; + } + + .railroad-comment ellipse { + fill: ${p}; + stroke: ${m}; + stroke-width: ${d}px; + } + + .railroad-comment text { + fill: ${g}; + font-style: italic; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-special rect { + fill: ${y}; + stroke: ${v}; + stroke-width: ${d}px; + stroke-dasharray: 5,3; + } + + .railroad-special text { + fill: ${u}; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-rule-name { + font-weight: bold; + fill: ${x}; + font-family: ${t}; + font-size: ${r}px; + } + + .railroad-group { + /* Grouping container, no specific styles */ + } +`},"getStyles")});var _o,LX,U$e,BNt,Np,lk=F(()=>{"use strict";vt();ur();Ka();$n();ju();Ex();_o=class{constructor(){this.d=""}static{o(this,"PathBuilder")}moveTo(t,r){return this.d+=`M ${t} ${r} `,this}lineTo(t,r){return this.d+=`L ${t} ${r} `,this}horizontalTo(t){return this.d+=`H ${t} `,this}verticalTo(t){return this.d+=`V ${t} `,this}arcTo(t,r,n,i,a,s,l){return this.d+=`A ${t} ${r} ${n} ${i?1:0} ${a?1:0} ${s} ${l} `,this}build(){return this.d.trim()}},LX=class{constructor(t,r=pD()){this.textCache=new Map;this.svg=t,this.config=r}static{o(this,"RailroadRenderer")}measureText(t){if(this.textCache.has(t))return this.textCache.get(t);let r=this.svg.append("text").attr("font-family",this.config.fontFamily).attr("font-size",this.config.fontSize).text(t),n=r.node().getBBox(),i={width:n.width,height:n.height};return r.remove(),this.textCache.set(t,i),i}renderTerminal(t,r){let n=this.measureText(r),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-terminal");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a).attr("rx",10).attr("ry",10),s.append("text").attr("x",i/2).attr("y",a/2).text(r),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderNonTerminal(t,r){let n=this.measureText(r),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-nonterminal");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),s.append("text").attr("x",i/2).attr("y",a/2).text(r),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderSequence(t,r){let n=r.map(h=>this.renderExpression(t,h)),i=0,a=0,s=0;for(let h of n)i+=h.dimensions.width,a=Math.max(a,h.dimensions.up),s=Math.max(s,h.dimensions.down);i+=(n.length-1)*this.config.horizontalSeparation;let l=t.append("g").attr("class","railroad-sequence"),u=0;for(let h=0;hthis.renderExpression(t,p)),i=0,a=0;for(let p of n)i=Math.max(i,p.dimensions.width),a+=p.dimensions.height;a+=(n.length-1)*this.config.verticalSeparation;let s=this.config.arcRadius,l=s*4,u=i+l,h=t.append("g").attr("class","railroad-choice"),d=0,f=a/2;for(let p of n){let m=d,g=m+p.dimensions.up,y=s*2+(i-p.dimensions.width)/2;h.node().appendChild(p.element).setAttribute("transform",`translate(${y}, ${m})`);let x=new _o,b=g>f;g===f?x.moveTo(0,f).lineTo(y,g):x.moveTo(0,f).arcTo(s,s,0,!1,b,s,f+(b?s:-s)).lineTo(s,g-(b?s:-s)).arcTo(s,s,0,!1,!b,s*2,g).lineTo(y,g),h.append("path").attr("class","railroad-line").attr("d",x.build());let T=new _o,k=y+p.dimensions.width,C=u-s*2;g===f?T.moveTo(k,g).lineTo(u,f):T.moveTo(k,g).lineTo(C,g).arcTo(s,s,0,!1,!b,u-s,g+(b?-s:s)).lineTo(u-s,f+(b?s:-s)).arcTo(s,s,0,!1,b,u,f),h.append("path").attr("class","railroad-line").attr("d",T.build()),d+=p.dimensions.height+this.config.verticalSeparation}return{element:h.node(),dimensions:{width:u,height:a,up:f,down:a-f}}}renderOptional(t,r){let n=this.renderExpression(t,r),i=this.config.arcRadius,a=i*2,s=n.dimensions.width+i*4,l=n.dimensions.height+a,u=t.append("g").attr("class","railroad-optional"),h=i*2,d=a;u.node().appendChild(n.element).setAttribute("transform",`translate(${h}, ${d})`);let p=d+n.dimensions.up,m=new _o().moveTo(0,p).lineTo(i*2,p);u.append("path").attr("class","railroad-line").attr("d",m.build());let g=new _o().moveTo(h+n.dimensions.width,p).lineTo(s,p);u.append("path").attr("class","railroad-line").attr("d",g.build());let y=new _o().moveTo(0,p).arcTo(i,i,0,!1,!1,i,p-i).lineTo(i,i).arcTo(i,i,0,!1,!0,i*2,0).lineTo(s-i*2,0).arcTo(i,i,0,!1,!0,s-i,i).lineTo(s-i,p-i).arcTo(i,i,0,!1,!1,s,p);return u.append("path").attr("class","railroad-line").attr("d",y.build()),{element:u.node(),dimensions:{width:s,height:l,up:p,down:l-p}}}renderRepetition(t,r,n){let i=this.renderExpression(t,r),a=this.config.arcRadius,s=a*2,l=i.dimensions.width+a*4,u=n===0,h=i.dimensions.height+s+(u?s:0),d=t.append("g").attr("class","railroad-repetition"),f=a*2,p=u?s:0;d.node().appendChild(i.element).setAttribute("transform",`translate(${f}, ${p})`);let g=p+i.dimensions.up;d.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(0,g).lineTo(a*2,g).build()),d.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(f+i.dimensions.width,g).lineTo(l,g).build());let y=p+i.dimensions.height+a,v=new _o().moveTo(f+i.dimensions.width,g).arcTo(a,a,0,!1,!0,f+i.dimensions.width+a,g+a).lineTo(f+i.dimensions.width+a,y).arcTo(a,a,0,!1,!0,f+i.dimensions.width,y+a).lineTo(a*2,y+a).arcTo(a,a,0,!1,!0,a,y).lineTo(a,g+a).arcTo(a,a,0,!1,!0,a*2,g);if(d.append("path").attr("class","railroad-line").attr("d",v.build()),u){let x=new _o().moveTo(0,g).arcTo(a,a,0,!1,!1,a,g-a).lineTo(a,a).arcTo(a,a,0,!1,!0,a*2,0).lineTo(l-a*2,0).arcTo(a,a,0,!1,!0,l-a,a).lineTo(l-a,g-a).arcTo(a,a,0,!1,!1,l,g);d.append("path").attr("class","railroad-line").attr("d",x.build())}return{element:d.node(),dimensions:{width:l,height:h,up:g,down:h-g}}}renderSpecial(t,r){let n=this.measureText("? "+r+" ?"),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-special");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),s.append("text").attr("x",i/2).attr("y",a/2).text("? "+r+" ?"),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderExpression(t,r){switch(r.type){case"terminal":return this.renderTerminal(t,r.value);case"nonterminal":return this.renderNonTerminal(t,r.name);case"sequence":return this.renderSequence(t,r.elements);case"choice":return this.renderChoice(t,r.alternatives);case"optional":return this.renderOptional(t,r.element);case"repetition":return this.renderRepetition(t,r.element,r.min);case"special":return this.renderSpecial(t,r.text);default:throw new Error(`Unknown node type: ${r.type}`)}}renderRule(t,r){let n=this.svg.append("g").attr("class","railroad-rule").attr("transform",`translate(0, ${r})`),i=t.name+" =",a=this.measureText(i).width+20,s=a+20,l=n.append("g"),u=this.renderExpression(l,t.definition),h=Math.max(20,u.dimensions.up),d=h-u.dimensions.up;return l.attr("transform",`translate(${s}, ${d})`),n.append("g").attr("class","railroad-rule-name-group").append("text").attr("class","railroad-rule-name").attr("x",0).attr("y",h).text(i),n.append("g").attr("class","railroad-start").append("circle").attr("cx",a).attr("cy",h).attr("r",this.config.markerRadius),n.append("g").attr("class","railroad-end").append("circle").attr("cx",s+u.dimensions.width+10).attr("cy",h).attr("r",this.config.markerRadius),n.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(a+this.config.markerRadius,h).lineTo(s,h).build()),n.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(s+u.dimensions.width,h).lineTo(s+u.dimensions.width+10-this.config.markerRadius,h).build()),{height:Math.max(40,d+u.dimensions.height+this.config.padding*2),width:s+u.dimensions.width+10+this.config.markerRadius}}renderDiagram(t){let r=this.config.padding,n=0;for(let i of t){let a=this.renderRule(i,r);r+=a.height+this.config.verticalSeparation,n=Math.max(n,a.width)}return{width:n+this.config.padding*2,height:r+this.config.padding}}},U$e=o((e,t,r)=>{Wr(e,t.height,t.width,r),e.attr("viewBox",`0 0 ${t.width} ${t.height}`)},"configureRailroadSvgSize"),BNt=o((e,t,r)=>{Z.debug(`[Railroad] Rendering diagram +`+e);try{let n=xn(t);n.attr("class","railroad-diagram");let a=_t().railroad?.useMaxWidth??!0,s=sn.getRules();if(Z.debug(`[Railroad] Rendering ${s.length} rules`),s.length===0){Z.warn("[Railroad] No rules to render"),U$e(n,{height:100,width:200},a);return}let u=new LX(n,pD()).renderDiagram(s);U$e(n,u,a),Z.debug("[Railroad] Render complete")}catch(n){throw Z.error("[Railroad] Render error:",n),n}},"draw"),Np={draw:BNt}});var j$e={};ir(j$e,{default:()=>$Nt,diagram:()=>Y$e});var Y$e,$Nt,X$e=F(()=>{"use strict";V$e();ju();lk();Ex();Y$e={parser:G$e,db:sn,renderer:Np,styles:Mp},$Nt=Y$e});var GNt,mD,VNt,Q$e,WNt,qNt,HNt,UNt,J$e,eFe=F(()=>{"use strict";Xa();vt();Hs();ju();GNt=Wv().RailroadEbnf.parser.LangiumParser,mD=o(e=>{let t=e.alternatives.map(VNt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformChoice"),VNt=o(e=>{let t=e.elements.map(qNt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformSequence"),Q$e=o(e=>{switch(e.$type){case"EbnfTerminal":return{type:"terminal",value:e.value};case"EbnfNonTerminal":return{type:"nonterminal",name:e.name};case"EbnfSpecial":return{type:"special",text:e.text};case"EbnfGroup":return mD(e.element);case"EbnfOptional":return{type:"optional",element:mD(e.element)};case"EbnfRepetition":return{type:"repetition",element:mD(e.element),min:0,max:1/0};default:throw new Error(`Unsupported EBNF primary node: ${e.$type}`)}},"transformPrimary"),WNt=o((e,t)=>{switch(t.$type){case"EbnfOptionalPostfix":return{type:"optional",element:e};case"EbnfZeroOrMorePostfix":return{type:"repetition",element:e,min:0,max:1/0};case"EbnfOneOrMorePostfix":return{type:"repetition",element:e,min:1,max:1/0};case"EbnfExceptionPostfix":return{type:"sequence",elements:[e,{type:"terminal",value:"-"},Q$e(t.except)]};default:throw new Error(`Unsupported EBNF postfix node: ${t.$type}`)}},"transformPostfix"),qNt=o(e=>e.postfixes.reduce((t,r)=>WNt(t,r),Q$e(e.base)),"transformTerm"),HNt=o(e=>({name:e.name,definition:mD(e.definition)}),"transformRule"),UNt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(HNt(t)))},"populateDb"),J$e={parse:o(e=>{sn.clear(),Z.debug("[EBNF Parser] Starting Langium parse");let t=GNt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[EBNF Parser] Parsed rules:",r.rules.length),UNt(r),Z.debug("[EBNF Parser] Parse complete")},"parse"),parser:{yy:sn}}});var tFe={};ir(tFe,{diagram:()=>YNt});var YNt,rFe=F(()=>{"use strict";eFe();ju();lk();Ex();YNt={parser:J$e,db:sn,renderer:Np,styles:Mp}});var KNt,DX,ZNt,QNt,JNt,ePt,tPt,rPt,aFe,sFe=F(()=>{"use strict";Xa();vt();Hs();ju();KNt=qv().RailroadAbnf.parser.LangiumParser,DX=o(e=>{let t=e.alternatives.map(ZNt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformAlternation"),ZNt=o(e=>{let t=e.elements.map(JNt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformConcatenation"),QNt=o(e=>{if(e.includes("*")){let[r,n]=e.split("*"),i=r?parseInt(r,10):0,a=n?parseInt(n,10):1/0;return{min:i,max:a}}let t=parseInt(e,10);return{min:t,max:t}},"parseRepeat"),JNt=o(e=>{let t=ePt(e.primary);if(!e.repeat)return t;let{min:r,max:n}=QNt(e.repeat);return r===0&&n===1?{type:"optional",element:t}:{type:"repetition",element:t,min:r,max:n}},"transformElement"),ePt=o(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return DX(e.element);case"AbnfOptionalGroup":return{type:"optional",element:DX(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),tPt=o(e=>({name:e.name,definition:DX(e.definition)}),"transformRule"),rPt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(tPt(t)))},"populateDb"),aFe={parse:o(e=>{sn.clear(),Z.debug("[ABNF Parser] Starting Langium parse");let t=KNt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[ABNF Parser] Parsed rules:",r.rules.length),rPt(r),Z.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:sn}}});var oFe={};ir(oFe,{diagram:()=>nPt});var nPt,lFe=F(()=>{"use strict";sFe();ju();lk();Ex();nPt={parser:aFe,db:sn,renderer:Np,styles:Mp}});var sPt,dFe,oPt,lPt,hFe,cPt,uPt,hPt,dPt,fFe,pFe=F(()=>{"use strict";Xa();vt();Hs();ju();sPt=Hv().RailroadPeg.parser.LangiumParser,dFe=o(e=>{let t=e.alternatives.map(oPt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformOrderedChoice"),oPt=o(e=>{let t=e.elements.map(lPt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformSequence"),lPt=o(e=>{let t=cPt(e.suffix);return e.operator?{type:"special",text:e.operator==="&"?`&${hFe(t)}`:`!${hFe(t)}`}:t},"transformPrefix"),hFe=o(e=>{switch(e.type){case"terminal":return`"${e.value}"`;case"nonterminal":return e.name;case"special":return e.text;default:return"(...)"}},"nodeToLabel"),cPt=o(e=>{let t=uPt(e.primary);if(!e.operator)return t;switch(e.operator){case"?":return{type:"optional",element:t};case"*":return{type:"repetition",element:t,min:0,max:1/0};case"+":return{type:"repetition",element:t,min:1,max:1/0};default:throw new Error(`Unsupported PEG suffix operator: ${e.operator}`)}},"transformSuffix"),uPt=o(e=>{switch(e.$type){case"PegLiteral":return{type:"terminal",value:e.value};case"PegIdentifier":return{type:"nonterminal",name:e.name};case"PegGroup":return dFe(e.element);case"PegAny":return{type:"special",text:e.dot};default:throw new Error(`Unsupported PEG primary node: ${e.$type}`)}},"transformPrimary"),hPt=o(e=>({name:e.name,definition:dFe(e.definition)}),"transformRule"),dPt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(hPt(t)))},"populateDb"),fFe={parse:o(e=>{sn.clear(),Z.debug("[PEG Parser] Starting Langium parse");let t=sPt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[PEG Parser] Parsed rules:",r.rules.length),dPt(r),Z.debug("[PEG Parser] Parse complete")},"parse"),parser:{yy:sn}}});var mFe={};ir(mFe,{diagram:()=>fPt});var fPt,gFe=F(()=>{"use strict";pFe();ju();lk();Ex();fPt={parser:fFe,db:sn,renderer:Np,styles:Mp}});var tOt={};ir(tOt,{default:()=>eOt});Vl();h8();Up();var Bje=o(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),$je=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(gae(),mae));return{id:"c4",diagram:e}},"loader"),Fje={id:"c4",detector:Bje,loader:$je},yae=Fje;var mTe="flowchart",n0t=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-wrapper"||t?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(e),"detector"),i0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:mTe,diagram:e}},"loader"),a0t={id:mTe,detector:n0t,loader:i0t},gTe=a0t;var yTe="flowchart-v2",s0t=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-d3"?!1:(t?.flowchart?.defaultRenderer==="elk"&&(t.layout="elk"),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(e)),"detector"),o0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:yTe,diagram:e}},"loader"),l0t={id:yTe,detector:s0t,loader:o0t},vTe=l0t;var wTe="swimlane",h0t=o(e=>/^\s*swimlane-beta\b/.test(e),"detector"),d0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(CTe(),TTe));return{id:wTe,diagram:e}},"loader"),f0t={id:wTe,detector:h0t,loader:d0t},kTe=f0t;var v0t=o(e=>/^\s*erDiagram/.test(e),"detector"),x0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(MTe(),ITe));return{id:"er",diagram:e}},"loader"),b0t={id:"er",detector:v0t,loader:x0t},NTe=b0t;var ZDe="gitGraph",H3t=o(e=>/^\s*gitGraph/.test(e),"detector"),U3t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(KDe(),XDe));return{id:ZDe,diagram:e}},"loader"),Y3t={id:ZDe,detector:H3t,loader:U3t},QDe=Y3t;var D7e="gantt",P5t=o(e=>/^\s*gantt/.test(e),"detector"),O5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(L7e(),_7e));return{id:D7e,diagram:e}},"loader"),B5t={id:D7e,detector:P5t,loader:O5t},I7e=B5t;var G7e="info",V5t=o(e=>/^\s*info/.test(e),"detector"),W5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(z7e(),F7e));return{id:G7e,diagram:e}},"loader"),V7e={id:G7e,detector:V5t,loader:W5t};var rAt=o(e=>/^\s*pie/.test(e),"detector"),nAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(Z7e(),K7e));return{id:"pie",diagram:e}},"loader"),Q7e={id:"pie",detector:rAt,loader:nAt};var h8e="quadrantChart",bAt=o(e=>/^\s*quadrantChart/.test(e),"detector"),TAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(u8e(),c8e));return{id:h8e,diagram:e}},"loader"),CAt={id:h8e,detector:bAt,loader:TAt},d8e=CAt;var F8e="xychart",FAt=o(e=>/^\s*xychart(-beta)?/.test(e),"detector"),zAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>($8e(),B8e));return{id:F8e,diagram:e}},"loader"),GAt={id:F8e,detector:FAt,loader:zAt},z8e=GAt;var X8e="requirement",UAt=o(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),YAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(j8e(),Y8e));return{id:X8e,diagram:e}},"loader"),jAt={id:X8e,detector:UAt,loader:YAt},K8e=jAt;var pIe="sequence",q6t=o(e=>/^\s*sequenceDiagram/.test(e),"detector"),H6t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(fIe(),dIe));return{id:pIe,diagram:e}},"loader"),U6t={id:pIe,detector:q6t,loader:H6t},mIe=U6t;var TIe="class",Q6t=o((e,t)=>t?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e),"detector"),J6t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(bIe(),xIe));return{id:TIe,diagram:e}},"loader"),eRt={id:TIe,detector:Q6t,loader:J6t},CIe=eRt;var SIe="classDiagram",rRt=o((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e),"detector"),nRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(kIe(),wIe));return{id:SIe,diagram:e}},"loader"),iRt={id:SIe,detector:rRt,loader:nRt},EIe=iRt;var iMe="state",LRt=o((e,t)=>t?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e),"detector"),DRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(nMe(),rMe));return{id:iMe,diagram:e}},"loader"),IRt={id:iMe,detector:LRt,loader:DRt},aMe=IRt;var lMe="stateDiagram",NRt=o((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer==="dagre-wrapper"),"detector"),PRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oMe(),sMe));return{id:lMe,diagram:e}},"loader"),ORt={id:lMe,detector:NRt,loader:PRt},cMe=ORt;var kMe="journey",n_t=o(e=>/^\s*journey/.test(e),"detector"),i_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(wMe(),CMe));return{id:kMe,diagram:e}},"loader"),a_t={id:kMe,detector:n_t,loader:i_t},SMe=a_t;vt();Ka();$n();var s_t=o((e,t,r)=>{Z.debug(`rendering svg for syntax error +`);let n=xn(t),i=n.append("g");n.attr("viewBox","0 0 2412 512"),Wr(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),VY={draw:s_t},EMe=VY;var o_t={db:{},renderer:VY,parser:{parse:o(()=>{},"parse")}},AMe=o_t;var RMe="flowchart-elk",l_t=o((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer==="elk"?(t.layout="elk",!0):!1,"detector"),c_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:RMe,diagram:e}},"loader"),u_t={id:RMe,detector:l_t,loader:c_t},_Me=u_t;var uNe="timeline",P_t=o(e=>/^\s*timeline/.test(e),"detector"),O_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(cNe(),lNe));return{id:uNe,diagram:e}},"loader"),B_t={id:uNe,detector:P_t,loader:O_t},hNe=B_t;var RNe="mindmap",U_t=o(e=>/^\s*mindmap/.test(e),"detector"),Y_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(ANe(),ENe));return{id:RNe,diagram:e}},"loader"),j_t={id:RNe,detector:U_t,loader:Y_t},_Ne=j_t;var GNe="kanban",uLt=o(e=>/^\s*kanban/.test(e),"detector"),hLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(zNe(),FNe));return{id:GNe,diagram:e}},"loader"),dLt={id:GNe,detector:uLt,loader:hLt},VNe=dLt;var wPe="sankey",OLt=o(e=>/^\s*sankey(-beta)?/.test(e),"detector"),BLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(CPe(),TPe));return{id:wPe,diagram:e}},"loader"),$Lt={id:wPe,detector:OLt,loader:BLt},kPe=$Lt;var IPe="packet",YLt=o(e=>/^\s*packet(-beta)?/.test(e),"detector"),jLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(DPe(),LPe));return{id:IPe,diagram:e}},"loader"),MPe={id:IPe,detector:YLt,loader:jLt};var qPe="radar",gDt=o(e=>/^\s*radar-beta/.test(e),"detector"),yDt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(WPe(),VPe));return{id:qPe,diagram:e}},"loader"),HPe={id:qPe,detector:gDt,loader:yDt};var jOe="block",z7t=o(e=>/^\s*block(-beta)?/.test(e),"detector"),G7t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(YOe(),UOe));return{id:jOe,diagram:e}},"loader"),V7t={id:jOe,detector:z7t,loader:G7t},XOe=V7t;var g9e="treeView",d8t=o(e=>/^\s*treeView-beta/.test(e),"detector"),f8t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(m9e(),p9e));return{id:g9e,diagram:e}},"loader"),p8t={id:g9e,detector:d8t,loader:f8t},y9e=p8t;var z9e="architecture",_8t=o(e=>/^\s*architecture/.test(e),"detector"),L8t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(F9e(),$9e));return{id:z9e,diagram:e}},"loader"),D8t={id:z9e,detector:_8t,loader:L8t},G9e=D8t;var eBe="eventmodeling",mIt=o(e=>/^\s*eventmodeling/.test(e),"detector"),gIt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(J9e(),Q9e));return{id:eBe,diagram:e}},"loader"),yIt={id:eBe,detector:mIt,loader:gIt},tBe=yIt;var vBe="ishikawa",LIt=o(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),DIt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(yBe(),gBe));return{id:vBe,diagram:e}},"loader"),xBe={id:vBe,detector:LIt,loader:DIt};var XBe="venn",mMt=o(e=>/^\s*venn-beta/.test(e),"detector"),gMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(jBe(),YBe));return{id:XBe,diagram:e}},"loader"),yMt={id:XBe,detector:mMt,loader:gMt},KBe=yMt;Up();Xt();var s$e="treemap",EMt=o(e=>/^\s*treemap/.test(e),"detector"),AMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(a$e(),i$e));return{id:s$e,diagram:e}},"loader"),o$e={id:s$e,detector:EMt,loader:AMt};var x$e="wardley",QMt=o(e=>/^\s*wardley-beta/i.test(e),"detector"),JMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(v$e(),y$e));return{id:x$e,diagram:e}},"loader"),eNt={id:x$e,detector:QMt,loader:JMt},b$e=eNt;var B$e="cynefin",mNt=o(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),"detector"),gNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(O$e(),P$e));return{id:B$e,diagram:e}},"loader"),$$e={id:B$e,detector:mNt,loader:gNt};var K$e="railroad",FNt=o(e=>/^\s*railroad-beta/i.test(e),"detector"),zNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(X$e(),j$e));return{id:K$e,diagram:e}},"loader"),Z$e={id:K$e,detector:FNt,loader:zNt};var nFe="railroadEbnf",jNt=o(e=>/^\s*railroad-ebnf-beta/i.test(e),"detector"),XNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(rFe(),tFe));return{id:nFe,diagram:e}},"loader"),iFe={id:nFe,detector:jNt,loader:XNt};var cFe="railroadAbnf",iPt=o(e=>/^\s*railroad-abnf-beta/i.test(e),"detector"),aPt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(lFe(),oFe));return{id:cFe,diagram:e}},"loader"),uFe={id:cFe,detector:iPt,loader:aPt};var yFe="railroadPeg",pPt=o(e=>/^\s*railroad-peg-beta/i.test(e),"detector"),mPt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(gFe(),mFe));return{id:yFe,diagram:e}},"loader"),vFe={id:yFe,detector:pPt,loader:mPt};var xFe=!1,Ax=o(()=>{xFe||(xFe=!0,Yp("error",AMe,e=>e.toLowerCase().trim()==="error"),Yp("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),sb(_Me,_Ne,G9e),sb(yae,VNe,EIe,CIe,NTe,I7e,V7e,Q7e,K8e,mIe,kTe,vTe,gTe,hNe,QDe,cMe,aMe,SMe,d8e,kPe,MPe,z8e,XOe,tBe,y9e,HPe,xBe,o$e,Z$e,iFe,uFe,vFe,KBe,b$e,$$e))},"addDiagrams");vt();Up();Xt();var bFe=o(async()=>{Z.debug("Loading registered diagrams");let t=(await Promise.allSettled(Object.entries(oh).map(async([r,{detector:n,loader:i}])=>{if(i)try{db(r)}catch{try{let{diagram:a,id:s}=await i();Yp(s,a,n)}catch(a){throw Z.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete oh[r],a}}}))).filter(r=>r.status==="rejected");if(t.length>0){Z.error(`Failed to load ${t.length} external diagrams`);for(let r of t)Z.error(r);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");vt();$r();var Rx="comm",gD="rule",yD="decl";var TFe="@media",CFe="@import";var wFe="@supports";var kFe="@namespace",ck="@keyframes";var vD="@layer",SFe="@scope";var IX=Math.abs,uk=String.fromCharCode;function xD(e){return e.trim()}o(xD,"trim");function _x(e,t,r){return e.replace(t,r)}o(_x,"replace");function EFe(e,t,r){return e.indexOf(t,r)}o(EFe,"indexof");function gd(e,t){return e.charCodeAt(t)|0}o(gd,"charat");function yd(e,t,r){return e.slice(t,r)}o(yd,"substr");function Lo(e){return e.length}o(Lo,"strlen");function bD(e){return e.length}o(bD,"sizeof");function Lx(e,t){return t.push(e),e}o(Lx,"append");var TD=1,Dx=1,AFe=0,Bl=0,ea=0,Mx="";function CD(e,t,r,n,i,a,s,l){return{value:e,root:t,parent:r,type:n,props:i,children:a,line:TD,column:Dx,length:s,return:"",siblings:l}}o(CD,"node");function RFe(){return ea}o(RFe,"char");function _Fe(){return ea=Bl>0?gd(Mx,--Bl):0,Dx--,ea===10&&(Dx=1,TD--),ea}o(_Fe,"prev");function $l(){return ea=Bl2||Ix(ea)>3?"":" "}o(IFe,"whitespace");function MFe(e,t){for(;--t&&$l()&&!(ea<48||ea>102||ea>57&&ea<65||ea>70&&ea<97););return wD(e,hk()+(t<6&&vd()==32&&$l()==32))}o(MFe,"escaping");function MX(e){for(;$l();)switch(ea){case e:return Bl;case 34:case 39:e!==34&&e!==39&&MX(ea);break;case 40:e===41&&MX(e);break;case 92:$l();break}return Bl}o(MX,"delimiter");function NFe(e,t){for(;$l()&&e+ea!==57;)if(e+ea===84&&vd()===47)break;return"/*"+wD(t,Bl-1)+"*"+uk(e===47?e:$l())}o(NFe,"commenter");function PFe(e){for(;!Ix(vd());)$l();return wD(e,Bl)}o(PFe,"identifier");function $Fe(e){return DFe(SD("",null,null,null,[""],e=LFe(e),0,[0],e))}o($Fe,"compile");function SD(e,t,r,n,i,a,s,l,u){for(var h=0,d=0,f=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,T="",k=i,C=a,w=n,S=T;v;)switch(g=b,b=$l()){case 40:if(g!=108&&gd(S,f-1)==58){EFe(S+=_x(kD(b),"&","&\f"),"&\f",IX(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:S+=kD(b);break;case 9:case 10:case 13:case 32:S+=IFe(g);break;case 92:S+=MFe(hk()-1,7);continue;case 47:switch(vd()){case 42:case 47:Lx(yPt(NFe($l(),hk()),t,r,u),u),(Ix(g||1)==5||Ix(vd()||1)==5)&&Lo(S)&&yd(S,-1,void 0)!==" "&&(S+=" ");break;default:S+="/"}break;case 123*y:l[h++]=Lo(S)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+d:x==-1&&(S=_x(S,/\f/g,"")),m>0&&(Lo(S)-f||y===0&&g===47)&&Lx(m>32?BFe(S+";",n,r,f-1,u):BFe(_x(S," ","")+";",n,r,f-2,u),u);break;case 59:S+=";";default:if(Lx(w=OFe(S,t,r,h,d,i,l,T,k=[],C=[],f,a),a),b===123)if(d===0)SD(S,t,w,w,k,a,f,l,C);else{switch(p){case 99:if(gd(S,3)===110)break;case 108:if(gd(S,2)===97)break;default:d=0;case 100:case 109:case 115:}d?SD(e,w,w,n&&Lx(OFe(e,w,w,0,0,i,l,T,i,k=[],f,C),C),i,C,f,l,n?k:C):SD(S,w,w,w,[""],C,0,l,C)}}h=d=m=0,y=x=1,T=S="",f=s;break;case 58:f=1+Lo(S),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&_Fe()==125)continue}switch(S+=uk(b),b*y){case 38:x=d>0?1:(S+="\f",-1);break;case 44:l[h++]=(Lo(S)-1)*x,x=1;break;case 64:vd()===45&&(S+=kD($l())),p=vd(),d=f=Lo(T=S+=PFe(hk())),b++;break;case 45:g===45&&Lo(S)==2&&(y=0)}}return a}o(SD,"parse");function OFe(e,t,r,n,i,a,s,l,u,h,d,f){for(var p=i-1,m=i===0?a:[""],g=bD(m),y=0,v=0,x=0;y0?m[b]+" "+T:_x(T,/&\f/g,m[b])))&&(u[x++]=k);return CD(e,t,r,i===0?gD:l,u,h,d,f)}o(OFe,"ruleset");function yPt(e,t,r,n){return CD(e,t,r,Rx,uk(RFe()),yd(e,2,-2),0,n)}o(yPt,"comment");function BFe(e,t,r,n,i){return CD(e,t,r,yD,yd(e,0,n),yd(e,n+1,-1),n,i)}o(BFe,"declaration");function ED(e,t){for(var r="",n=0;n{WFe.forEach(e=>{e()}),WFe=[]},"attachFunctions");vt();var HFe=o(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");yS();A2();function UFe(e){let t=e.match(gS);if(!t)return{text:e,metadata:{}};let r=t[1],n=r?t[2].split(` +`).map(s=>s.startsWith(r)?s.slice(r.length):s).join(` +`):t[2],i=Qd(n,{schema:Zd})??{};i=typeof i=="object"&&!Array.isArray(i)?i:{};let a={};return i.displayMode&&(a.displayMode=i.displayMode.toString()),i.title&&(a.title=i.title.toString()),i.config&&(a.config=i.config),{text:e.slice(t[0].length),metadata:a}}o(UFe,"extractFrontMatter");Qt();var xPt=o(e=>e.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(t,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),bPt=o(e=>{let{text:t,metadata:r}=UFe(e),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:t}},"processFrontmatter"),TPt=o(e=>{let t=Zt.detectInit(e)??{},r=Zt.detectDirective(e,"wrap");return Array.isArray(r)?t.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(t.wrap=!0),{text:iae(e),directive:t}},"processDirectives");function NX(e){let t=xPt(e),r=bPt(t),n=TPt(r.text),i=qr(r.config,n.directive);return e=HFe(n.text),{code:e,title:r.title,config:i}}o(NX,"preprocessDiagram");g8();Sk();Qt();function YFe(e){let t=new TextEncoder().encode(e),r=Array.from(t,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(YFe,"toBase64");Ek();var CPt=5e4,wPt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",kPt="sandbox",SPt="loose",EPt="http://www.w3.org/2000/svg",APt="http://www.w3.org/1999/xlink",RPt="http://www.w3.org/1999/xhtml",_Pt="100%",LPt="100%",DPt="border:0;margin:0;",IPt="margin:0",MPt="allow-top-navigation-by-user-activation allow-popups",NPt='The "iframe" tag is not supported by your browser.',PPt=["foreignobject"],OPt=["dominant-baseline"];function ZFe(e){let t=NX(e);return Wx(),sZ(t.config??{}),t}o(ZFe,"processAndSetConfigs");async function BPt(e,t){Ax();try{let{code:r,config:n}=ZFe(e);return{diagramType:(await QFe(r)).type,config:n}}catch(r){if(t?.suppressErrors)return!1;throw r}}o(BPt,"parse");var jFe=o((e,t,r=[])=>{let n=o7(`{ ${r.join(" !important; ")} !important; }`);return`.${e} ${t} ${n}`},"cssImportantStyles"),$Pt=o((e,t=new Map)=>{let r=new CSSStyleSheet;if(e.fontFamily!==void 0&&r.insertRule(`:root { --mermaid-font-family: ${e.fontFamily}}`,r.cssRules.length),e.altFontFamily!==void 0&&r.insertRule(`:root { --mermaid-alt-font-family: ${e.altFontFamily}}`,r.cssRules.length),t instanceof Map){let l=Gr(e)?["> *","span"]:["rect","polygon","ellipse","circle","path"];t.forEach(u=>{a4(u.styles)||l.forEach(h=>{r.insertRule(jFe(u.id,h,u.styles),r.cssRules.length)}),a4(u.textStyles)||r.insertRule(jFe(u.id,"tspan",(u?.textStyles||[]).map(h=>h.replace("color","fill"))),r.cssRules.length)})}let n="";if(e.themeCSS!==void 0)if(typeof r.replaceSync=="function"){let i=new CSSStyleSheet;i.replaceSync(e.themeCSS),n=m8(i)+` +`}else n+=`${e.themeCSS} +`;return n+m8(r)},"createCssStyles"),FPt=o((e,t)=>ED($Fe(`${e}{${t}}`),zFe([o(function(n,i,a,s){if(n.type==="rule"&&Array.isArray(n.props)){if(n.parent&&n.parent.type===ck)return;n.props=n.props.map(l=>l.startsWith(e)?l:`${e} ${l}`)}else n.type.startsWith("@")&&([...[TFe,wFe,vD,SFe,"@container","@starting-style"],ck].includes(n.type)||(Z.warn(`Removing unsupported at-rule ${n.type} from CSS`),n.type=Rx))},"addNamespace"),FFe])),"compileCSS"),zPt=o((e,t,r,n)=>{let i=$Pt(e,r),a=cJ(t,i,{...e.themeVariables,theme:e.theme,look:e.look},n);return FPt(n,a)},"createUserStyles"),GPt=o((e="",t,r)=>{let n=e;return!r&&!t&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Rs(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),VPt=o((e="",t)=>{let r=t?.viewBox?.baseVal?.height?t.viewBox.baseVal.height+"px":LPt,n=YFe(`${e}`);return``},"putIntoIFrame"),XFe=o((e,t,r,n,i)=>{let a=e.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",t).attr("width","100%").attr("xmlns",EPt);return i&&s.attr("xmlns:xlink",i),s.append("g"),e},"appendDivSvgG");function KFe(e,t){return e.append("iframe").attr("id",t).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(KFe,"sandboxedIframe");var WPt=o((e,t,r,n)=>{e.getElementById(t)?.remove(),e.getElementById(r)?.remove(),e.getElementById(n)?.remove()},"removeExistingElements"),qPt=o(async function(e,t,r){Ax();let n=ZFe(t);t=n.code;let i=_t();Z.debug(i),t.length>(i?.maxTextSize??CPt)&&(t=wPt);let a=`#${e}`,s="i"+e,l="#"+s,u="d"+e,h="#"+u,d=o(()=>{let A=et(p?l:h).node();A&&"remove"in A&&A.remove()},"removeTempElements"),f=et(document.body),p=i.securityLevel===kPt,m=i.securityLevel===SPt,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let _=KFe(et(r),s);f=et(_.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=et(r);XFe(f,e,u,`font-family: ${g}`,APt)}else{if(WPt(document,e,u,s),p){let _=KFe(et(document.body),s);f=et(_.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=et("body");XFe(f,e,u)}let y,v;try{y=await Nx.fromText(t,{title:n.title})}catch(_){if(i.suppressErrorRendering)throw d(),_;y=await Nx.fromText("error"),v=_}let x=f.select(h).node(),b=y.type,T=x.firstChild,k=T.firstChild,C=y.renderer.getClasses?.(t,y),w=zPt(i,b,C,a),S=document.createElement("style");S.innerHTML=w,T.insertBefore(S,k);try{await y.renderer.draw(t,e,"11.16.0",y)}catch(_){throw i.suppressErrorRendering?d():EMe.draw(t,e,"11.16.0"),_}let R=f.select(`${h} svg`),L=y.db.getAccTitle?.(),N=y.db.getAccDescription?.();UPt(b,R,L,N),f.select(`[id="${e}"]`).selectAll("foreignobject > *").attr("xmlns",RPt);let I=f.select(h).node().innerHTML;if(Z.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),I=GPt(I,p,ya(i.arrowMarkerAbsolute)),p){let _=f.select(h+" svg").node();I=VPt(I,_)}else m||(I=Zs.sanitize(I,{ADD_TAGS:PPt,ADD_ATTR:OPt,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(qFe(),v)throw v;return d(),{diagramType:b,svg:I,bindFunctions:y.db.bindFunctions}},"render");function HPt(e={}){let t=Yn({},e);t?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),nZ(t),t?.theme&&t.theme in sl?t.themeVariables=sl[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=sl.default.getThemeVariables(t.themeVariables));let r=typeof t=="object"?l7(t):c7();Bx(r.logLevel),Ax()}o(HPt,"initialize");var QFe=o((e,t={})=>{let{code:r}=NX(e);return Nx.fromText(r,t)},"getDiagramFromText");function UPt(e,t,r,n){GFe(t,e),VFe(t,r,n,t.attr("id"))}o(UPt,"addA11yInfo");var Pp=Object.freeze({render:qPt,parse:BPt,getDiagramFromText:QFe,initialize:HPt,getConfig:_t,setConfig:_k,getSiteConfig:c7,updateSiteConfig:iZ,reset:o(()=>{Wx()},"reset"),globalReset:o(()=>{Wx(Cd)},"globalReset"),defaultConfig:Cd});Bx(_t().logLevel);Wx(_t());Qf();Qt();var YPt=o((e,t,r)=>{Z.warn(e),fP(e)?(r&&r(e.str,e.hash),t.push({...e,message:e.str,error:e})):(r&&r(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},"handleError"),JFe=o(async function(e={querySelector:".mermaid"}){try{await jPt(e)}catch(t){if(fP(t)&&Z.error(t.str),xd.parseError&&xd.parseError(t),!e.suppressErrors)throw Z.error("Use the suppressErrors option to suppress these errors"),t}},"run"),jPt=o(async function({postRenderCallback:e,querySelector:t,nodes:r}={querySelector:".mermaid"}){let n=Pp.getConfig();Z.debug(`${e?"":"No "}Callback function found`);let i;if(r)i=r;else if(t)i=document.querySelectorAll(t);else throw new Error("Nodes and querySelector are both undefined");Z.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(Z.debug("Start On Load: "+n?.startOnLoad),Pp.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new Zt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){Z.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=mS(Zt.entityDecode(s)).trim().replace(//gi,"
    ");let d=Zt.detectInit(s);d&&Z.debug("Detected early reinit: ",d);try{let{svg:f,bindFunctions:p}=await nze(h,s,u);u.innerHTML=f,e&&await e(h),p&&p(u)}catch(f){YPt(f,l,xd.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),eze=o(function(e){Pp.initialize(e)},"initialize"),XPt=o(async function(e,t,r){Z.warn("mermaid.init is deprecated. Please use run instead."),e&&eze(e);let n={postRenderCallback:r,querySelector:".mermaid"};typeof t=="string"?n.querySelector=t:t&&(t instanceof HTMLElement?n.nodes=[t]:n.nodes=t),await JFe(n)},"init"),KPt=o(async(e,{lazyLoad:t=!0}={})=>{Ax(),sb(...e),t===!1&&await bFe()},"registerExternalDiagrams"),tze=o(function(){if(xd.startOnLoad){let{startOnLoad:e}=Pp.getConfig();e&&xd.run().catch(t=>Z.error("Mermaid failed to initialize",t))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",tze,!1)}var ZPt=o(function(e){xd.parseError=e},"setParseErrorHandler"),AD=[],PX=!1,rze=o(async()=>{if(!PX){for(PX=!0;AD.length>0;){let e=AD.shift();if(e)try{await e()}catch(t){Z.error("Error executing queue",t)}}PX=!1}},"executeQueue"),QPt=o(async(e,t)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{Pp.parse(e,t).then(l=>{a(l),r(l)},l=>{Z.error("Error parsing",l),xd.parseError?.(l),s(l),n(l)})}),"performCall");AD.push(i),rze().catch(n)}),"parse"),nze=o((e,t,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{Pp.render(e,t,r).then(u=>{s(u),n(u)},u=>{Z.error("Error parsing",u),xd.parseError?.(u),l(u),i(u)})}),"performCall");AD.push(a),rze().catch(i)}),"render"),JPt=o(()=>Object.keys(oh).map(e=>({id:e})),"getRegisteredDiagramsMetadata"),xd={startOnLoad:!0,mermaidAPI:Pp,parse:QPt,render:nze,init:XPt,run:JFe,registerExternalDiagrams:KPt,registerLayoutLoaders:YF,initialize:eze,parseError:void 0,contentLoaded:tze,setParseErrorHandler:ZPt,detectType:ny,registerIconPacks:ty,getRegisteredDiagramsMetadata:JPt},eOt=xd;return cze(tOt);})(); +/*! Bundled license information: + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/ +/*! Check if previously processed */ +/*! + * Wait for document loaded before starting the execution + */ +/*! Bundled license information: + +dompurify/dist/purify.es.mjs: + (*! @license DOMPurify 3.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.0/LICENSE *) + +js-yaml/dist/js-yaml.mjs: + (*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT *) + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" --repo lodash/lodash#4.18.1 -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) + +cytoscape/dist/cytoscape.esm.mjs: + (*! + Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable + Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) + Licensed under The MIT License (http://opensource.org/licenses/MIT) + *) + (*! + Event object based on jQuery events, MIT license + + https://jquery.org/license/ + https://tldrlegal.com/license/mit-license + https://github.com/jquery/jquery/blob/master/src/event.js + *) + (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *) + (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *) +*/ +globalThis["mermaid"] = globalThis.__esbuild_esm_mermaid_nm["mermaid"].default; diff --git a/sln/src/Docs/wwwroot/scripts/prism-fsharp.1.29.0.min.js b/sln/src/Docs/wwwroot/scripts/prism-fsharp.1.29.0.min.js new file mode 100644 index 0000000..73fa5e2 --- /dev/null +++ b/sln/src/Docs/wwwroot/scripts/prism-fsharp.1.29.0.min.js @@ -0,0 +1 @@ +Prism.languages.fsharp=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*(?!\))[\s\S]*?\*\)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|"(?:\\[\s\S]|[^\\"])*")B?/,greedy:!0},"class-name":{pattern:/(\b(?:exception|inherit|interface|new|of|type)\s+|\w\s*:\s*|\s:\??>\s*)[.\w]+\b(?:\s*(?:->|\*)\s*[.\w]+\b)*(?!\s*[:.])/,lookbehind:!0,inside:{operator:/->|\*/,punctuation:/\./}},keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(?:abstract|and|as|asr|assert|atomic|base|begin|break|checked|class|component|const|constraint|constructor|continue|default|delegate|do|done|downcast|downto|eager|elif|else|end|event|exception|extern|external|false|finally|fixed|for|fun|function|functor|global|if|in|include|inherit|inline|interface|internal|land|lazy|lor|lsl|lsr|lxor|match|member|method|mixin|mod|module|mutable|namespace|new|not|null|object|of|open|or|override|parallel|private|process|protected|public|pure|rec|sealed|select|sig|static|struct|tailcall|then|to|trait|true|try|type|upcast|val|virtual|void|volatile|when|while|with)\b/,number:[/\b0x[\da-fA-F]+(?:LF|lf|un)?\b/,/\b0b[01]+(?:uy|y)?\b/,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|UL|u[lsy]?)?\b/],operator:/([<>~&^])\1\1|([*.:<>&])\2|<-|->|[!=:]=|?|\??(?:<=|>=|<>|[-+*/%=<>])\??|[!?^&]|~[+~-]|:>|:\?>?/}),Prism.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(^#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}}),Prism.languages.insertBefore("fsharp","punctuation",{"computation-expression":{pattern:/\b[_a-z]\w*(?=\s*\{)/i,alias:"keyword"}}),Prism.languages.insertBefore("fsharp","string",{annotation:{pattern:/\[<.+?>\]/,greedy:!0,inside:{punctuation:/^\[<|>\]$/,"class-name":{pattern:/^\w+$|(^|;\s*)[A-Z]\w*(?=\()/,lookbehind:!0},"annotation-content":{pattern:/[\s\S]+/,inside:Prism.languages.fsharp}}},char:{pattern:/'(?:[^\\']|\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8}))'B?/,greedy:!0}}); \ No newline at end of file diff --git a/sln/src/Docs/wwwroot/scripts/prism-sql.1.29.0.min.js b/sln/src/Docs/wwwroot/scripts/prism-sql.1.29.0.min.js new file mode 100644 index 0000000..86259a6 --- /dev/null +++ b/sln/src/Docs/wwwroot/scripts/prism-sql.1.29.0.min.js @@ -0,0 +1 @@ +Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; \ No newline at end of file diff --git a/sln/src/Docs/wwwroot/scripts/prism.1.29.0.min.js b/sln/src/Docs/wwwroot/scripts/prism.1.29.0.min.js new file mode 100644 index 0000000..054ce1e --- /dev/null +++ b/sln/src/Docs/wwwroot/scripts/prism.1.29.0.min.js @@ -0,0 +1 @@ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(l){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,e={},j={manual:l.Prism&&l.Prism.manual,disableWorkerMessageHandler:l.Prism&&l.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof C?new C(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=i.reach);y+=b.value.length,b=b.next){var v=b.value;if(n.length>t.length)return;if(!(v instanceof C)){var F,x=1;if(m){if(!(F=L(f,y,t,p))||F.index>=t.length)break;var k=F.index,w=F.index+F[0].length,A=y;for(A+=b.value.length;A<=k;)b=b.next,A+=b.value.length;if(A-=b.value.length,y=A,b.value instanceof C)continue;for(var P=b;P!==n.tail&&(Ai.reach&&(i.reach=v),b.prev),S=(S&&(_=z(n,_,S),y+=S.length),O(n,_,x),new C(o,d?j.tokenize($,d):$,h,$));b=z(n,_,S),E&&z(n,b,E),1i.reach&&(i.reach=$.reach))}}}}}(e,r,t,r.head,0),r),i=[],o=s.head.next;o!==s.tail;)i.push(o.value),o=o.next;return i},hooks:{all:{},add:function(e,t){var n=j.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=j.hooks.all[e];if(n&&n.length)for(var a,r=0;a=n[r++];)a(t)}},Token:C};function C(e,t,n,a){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length}function L(e,t,n,a){e.lastIndex=t;t=e.exec(n);return t&&a&&t[1]&&(e=t[1].length,t.index+=e,t[0]=t[0].slice(e)),t}function u(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function z(e,t,n){var a=t.next,n={value:n,prev:t,next:a};return t.next=n,a.prev=n,e.length++,n}function O(e,t,n){for(var a=t.next,r=0;r"+s.content+""},!l.document)return l.addEventListener&&(j.disableWorkerMessageHandler||l.addEventListener("message",function(e){var e=JSON.parse(e.data),t=e.language,n=e.code,e=e.immediateClose;l.postMessage(j.highlight(n,j.languages[t],t)),e&&l.close()},!1)),j;var a,e=j.util.currentScript();function r(){j.manual||j.highlightAll()}return e&&(j.filename=e.src,e.hasAttribute("data-manual")&&(j.manual=!0)),j.manual||("loading"===(a=document.readyState)||"interactive"===a&&e&&e.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),j}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism),Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,t){var n={},n=(n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}),t=(n["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]},{});t[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,t){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:Prism.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/,t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup);t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript,function(){var l,u,g,c,e;void 0!==Prism&&"undefined"!=typeof document&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),l={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},c="pre[data-src]:not(["+(u="data-src-status")+'="loaded"]):not(['+u+'="'+(g="loading")+'"])',Prism.hooks.add("before-highlightall",function(e){e.selector+=", "+c}),Prism.hooks.add("before-sanity-check",function(e){var r,t,n,a,s,i,o=e.element;o.matches(c)&&(e.code="",o.setAttribute(u,g),(r=o.appendChild(document.createElement("CODE"))).textContent="Loading…",t=o.getAttribute("data-src"),"none"===(e=e.language)&&(n=(/\.(\w+)$/.exec(t)||[,"none"])[1],e=l[n]||n),Prism.util.setLanguage(r,e),Prism.util.setLanguage(o,e),(n=Prism.plugins.autoloader)&&n.loadLanguages(e),n=t,a=function(e){o.setAttribute(u,"loaded");var t,n,a=function(e){var t,n;if(e=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||""))return t=Number(e[1]),n=e[2],e=e[3],n?e?[t,Number(e)]:[t,void 0]:[t,t]}(o.getAttribute("data-range"));a&&(t=e.split(/\r\n?|\n/g),n=a[0],a=null==a[1]?t.length:a[1],n<0&&(n+=t.length),n=Math.max(0,Math.min(n-1,t.length)),a<0&&(a+=t.length),a=Math.max(0,Math.min(a,t.length)),e=t.slice(n,a).join("\n"),o.hasAttribute("data-start")||o.setAttribute("data-start",String(n+1))),r.textContent=e,Prism.highlightElement(r)},s=function(e){o.setAttribute(u,"failed"),r.textContent=e},(i=new XMLHttpRequest).open("GET",n,!0),i.onreadystatechange=function(){4==i.readyState&&(i.status<400&&i.responseText?a(i.responseText):400<=i.status?s("✖ Error "+i.status+" while fetching file: "+i.statusText):s("✖ Error: File does not exist or is empty"))},i.send(null))}),e=!(Prism.plugins.fileHighlight={highlight:function(e){for(var t,n=(e||document).querySelectorAll(c),a=0;t=n[a++];)Prism.highlightElement(t)}}),Prism.fileHighlight=function(){e||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),e=!0),Prism.plugins.fileHighlight.highlight.apply(this,arguments)})}(); \ No newline at end of file diff --git a/sln/src/Docs/wwwroot/social-card.png b/sln/src/Docs/wwwroot/social-card.png new file mode 100644 index 0000000000000000000000000000000000000000..458675ce39254044bf16db38d8fe2e9b919212a0 GIT binary patch literal 696366 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%0D=ek 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%0DHS^w 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

    1g0h$HbG&ZlJ6+bNMPKzVzH#lu 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

    7q$WoPsB z#l$#rEaPE4^2K7Xo)5l^qL*-MeI@>MKsSk!!&jB5U=x8|?Q1*k)=J+9j@4)RdJoYi z*ylIi$>WrmQ7~s<>XPo9R%@!mj;O*|)j zp7rcTeW>vzz-7y5hJB_~FN|e%`!hdUvB~%_>-J-xyZO+^p6Az=^7qw*5H}xzDTYLj zq?t@}Url(46?JE;qiNQgRLov#w8cz62s3>!qS-6*E;cJtEpP8#zGR#Db$ZELJeo>L8;Nr4ECtszt5t%u-F48pQ%4u2j|3Yt$gnit=vR zVyf6Gi6NZtxk6+O*$Cw2pT)zR76vJpblpfp^Wk_l&ns)=s$X{uYRsR8%+J@-qo$0r zgm6NShu`D_I)Ak-7fjK>N0V}(BBLrmWssckA_Q z&8M>=x=0PJeA66Lp_xfO!1N~pn1QnxDoA&!9okl^JcyX|AunRg5~v-6hbXVk*(pBL z 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

      Ym8r+F*#v>c@ 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 FV1gQBdEx*7 literal 0 HcmV?d00001 diff --git a/sln/src/FSharp.ViewEngine.Docs/ApiReference.fs b/sln/src/FSharp.ViewEngine.Docs/ApiReference.fs new file mode 100644 index 0000000..3921549 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/ApiReference.fs @@ -0,0 +1,198 @@ +namespace FSharp.ViewEngine.Docs + +open FSharp.ViewEngine +open type Html + +type DocsHttpMethod = + | GET + | POST + | PUT + | PATCH + | DELETE + | OPTIONS + | HEAD + +module DocsHttpMethod = + let value = function + | GET -> "GET" + | POST -> "POST" + | PUT -> "PUT" + | PATCH -> "PATCH" + | DELETE -> "DELETE" + | OPTIONS -> "OPTIONS" + | HEAD -> "HEAD" + + let className = function + | GET -> "docs-method-get" + | POST -> "docs-method-post" + | PUT -> "docs-method-put" + | PATCH -> "docs-method-patch" + | DELETE -> "docs-method-delete" + | OPTIONS + | HEAD -> "docs-method-neutral" + +type DocsParameter = + { name:string + typeName:string + required:bool + description:string } + +type DocsParameterLocation = + | Path + | Query + | Header + | Body + +module DocsParameterLocation = + let value = function Path -> "path" | Query -> "query" | Header -> "header" | Body -> "body" + +type DocsApiParameter = + { name:string + typeName:string + location:DocsParameterLocation + required:bool + defaultValue:string option + enumValues:string list option + example:string option + description:string } + +type DocsApiResponse = + { status:string + description:string + language:string option + example:string option } + +type DocsApiError = + { code:string + description:string } + +module internal CopyableCode = + let render (className:string) (codeClass:string) (label:string) (source:string) = + div { + _class "docs-copyable-code" + button { + _type "button" + _ariaLabel $"Copy {label}" + _class "docs-copy-code" + _data("on:click", "window.fsharpDocsCopy(evt.currentTarget)") + span { _data("docs-copy-label", "true"); "Copy" } + } + pre { _class className; _tabindex 0; code { _class codeClass; _data("docs-copy-source", "true"); source } } + } + +module ApiReference = + let endpoint (method:DocsHttpMethod) (path:string) (description:string) = + let methodName = DocsHttpMethod.value method + div { + _class "docs-api-endpoint" + _data("http-method", methodName) + div { + _class "docs-api-endpoint-line" + span { _class $"docs-http-method {DocsHttpMethod.className method}"; methodName } + code { _class "docs-api-path"; path } + } + if not (System.String.IsNullOrWhiteSpace description) then + p { _class "docs-api-description"; description } + } + + let parameter (name:string) (typeName:string) (required:bool) (description:string) : DocsParameter = + { name = name + typeName = typeName + required = required + description = description } + + let parameters (values:DocsParameter list) = + div { + _class "docs-parameters" + for parameter in values do + div { + _class "docs-parameter" + div { + _class "docs-parameter-header" + code { _class "docs-parameter-name"; parameter.name } + span { _class "docs-parameter-type"; parameter.typeName } + if parameter.required then span { _class "docs-required"; "Required" } + } + p { _class "docs-parameter-description"; parameter.description } + } + } + + let codeExample (title:string) (language:string) (source:string) = + let normalized = if System.String.IsNullOrWhiteSpace language then "text" else language.Trim().ToLowerInvariant() + let prismLanguage = if normalized = "fs" then "fsharp" else normalized + section { + _class "docs-code-panel" + div { _class "docs-code-panel-header"; span { title }; span { _class "docs-code-language"; normalized } } + CopyableCode.render ($"docs-code-panel-source language-{prismLanguage}") ($"language-{prismLanguage}") title source + } + + let responseExample (status:string) (language:string) (source:string) = + section { + _class "docs-response-panel" + div { _class "docs-response-status"; span { "Response" }; code { status } } + codeExample status language source + } + + let operation + (method:DocsHttpMethod) + (path:string) + (description:string) + (authentication:string option) + (parameters:DocsApiParameter list) + (responses:DocsApiResponse list) + (errors:DocsApiError list) + (idempotency:string option) + (apiVersion:string option) + (deprecated:bool) = + section { + _class "docs-api-operation" + endpoint method path description + if deprecated then span { _class "docs-page-badge docs-page-badge-warning"; "Deprecated" } + match authentication with + | Some value -> div { _class "docs-api-policy"; strong { "Authentication" }; p { value } } + | None -> () + match apiVersion with + | Some value -> div { _class "docs-api-policy"; strong { "API version" }; code { value } } + | None -> () + match idempotency with + | Some value -> div { _class "docs-api-policy"; strong { "Idempotency" }; p { value } } + | None -> () + if not parameters.IsEmpty then + div { + _class "docs-parameters" + for parameter in parameters do + div { + _class "docs-parameter" + _data("parameter-location", DocsParameterLocation.value parameter.location) + div { + _class "docs-parameter-header" + code { _class "docs-parameter-name"; parameter.name } + span { _class "docs-parameter-type"; parameter.typeName } + span { _class "docs-parameter-type"; DocsParameterLocation.value parameter.location } + if parameter.required then span { _class "docs-required"; "Required" } + } + p { _class "docs-parameter-description"; parameter.description } + match parameter.defaultValue with | Some value -> p { _class "docs-parameter-description"; "Default: "; code { value } } | None -> () + match parameter.enumValues with | Some values -> p { _class "docs-parameter-description"; "Values: "; String.concat ", " values } | None -> () + match parameter.example with | Some value -> p { _class "docs-parameter-description"; "Example: "; code { value } } | None -> () + } + } + if not responses.IsEmpty then + div { + _class "docs-api-responses" + for response in responses do + section { + _class "docs-response-panel" + div { _class "docs-response-status"; code { response.status }; span { response.description } } + match response.language, response.example with + | Some language, Some source -> codeExample response.status language source + | _ -> () + } + } + if not errors.IsEmpty then + div { + _class "docs-parameters" + for error in errors do + div { _class "docs-parameter"; code { _class "docs-parameter-name"; error.code }; p { _class "docs-parameter-description"; error.description } } + } + } diff --git a/sln/src/FSharp.ViewEngine.Docs/Builders.fs b/sln/src/FSharp.ViewEngine.Docs/Builders.fs new file mode 100644 index 0000000..dd53f7a --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Builders.fs @@ -0,0 +1,114 @@ +namespace FSharp.ViewEngine.Docs + +open FSharp.ViewEngine + +[] +module Builders = + let docsRegisteredPage path aliases page : DocsRegisteredPage = + { path = path; aliases = aliases; page = page } + + let docsSearchEntry href page keywords : DocsSearchEntry = + { href = href; page = page; keywords = keywords } + + let docsSearchDialog index = SearchView.render index + + let docsStory id title language source preview : DocsStory = + { id = id; title = title; language = language; source = source; preview = preview; viewports = []; themes = []; states = [] } + let docsStoryWithViewports viewports story = { story with viewports = viewports } + let docsStoryWithThemes themes story = { story with themes = themes } + let docsStoryWithStates states story = { story with states = states } + let docsStoryCatalog stories = StoryView.catalog stories + let docsVersion label href : DocsVersion = { label = label; href = href } + let docsVersionSelector current versions = StoryView.versionSelector current versions + + let docsNavPage id label href destination = Nav.page id label href destination + let docsNavGroup id label defaultOpen children = Nav.group id label defaultOpen children + let docsNavGroupWithBreadcrumb id label breadcrumbHref defaultOpen children = + Nav.groupWithBreadcrumb id label breadcrumbHref defaultOpen children + + let docsSection id title blocks : DocsSection = + { id = id + title = title + level = 2 + blocks = blocks } + + let docsSubsection id title blocks : DocsSection = + { id = id + title = title + level = 3 + blocks = blocks } + + let docsText text = InlineText text + let docsInlineCode source = InlineCode source + let docsLink label href = InlineLink(label, href) + let docsStrong content = InlineStrong content + let docsEmphasis content = InlineEmphasis content + + let docsParagraph text = Paragraph text + let docsRichParagraph content = RichParagraph content + let docsBullets items = Bullets items + let docsRichBullets items = RichBullets(false, items) + let docsOrderedItems items = RichBullets(true, items) + let docsTable headers rows = Table(headers, rows) + let docsRichTable headers rows = RichTable(headers, rows) + let docsCode language source = Code(language, source) + let docsDiagram source = Diagram source + let docsC4Diagram source = C4Diagram source + let docsSequence diagram = Sequence diagram + let docsCallout label text = Callout(label, text) + let docsRichCallout label content = RichCallout(label, content) + let docsCustom element = Custom element + + let docsRail content = CustomRail content + + let docsPageLink label href : DocsPageLink = + { label = label; href = href } + + let docsPager previousPage nextPage : DocsPager = + { previousPage = previousPage; nextPage = nextPage } + + let docsWithPager pager page = + { page with pager = Some pager } + + let docsWithHeadingAdornment adornment page = + { page with headingAdornment = Some adornment } + + /// Applies browser, canonical, social, version, and maintenance metadata to a page. + let docsWithMetadata metadata page = + { page with metadata = metadata } + + let docsArticle activeId title description sections = + DocsPage.create activeId title description Visible Article TableOfContents sections + + let docsReference activeId title description sections rightRail = + DocsPage.create activeId title description Visible Reference rightRail sections + + let docsCanvas activeId title description sections = + DocsPage.create activeId title description Visible Canvas NoRail sections + + let docsCanvasWithHiddenHeading activeId title description sections = + DocsPage.create activeId title description VisuallyHidden Canvas NoRail sections + + let docsDocument site page = DocsView.document site page + let docsPage site page = DocsView.page site page + let docsPageContent site page = DocsView.pageContent site page + let docsSideNav site page = DocsView.sideNav site page + let docsContent page = DocsView.content page + + let docsBrowserFrame canonicalUrl content = Wireframe.browserFrame canonicalUrl content + let docsStateTabs id label states = Wireframe.stateTabs id label states + let docsExample id label language source preview = Example.codeFirst id label language source preview + let docsExampleCodeFirst id label language source preview = Example.codeFirst id label language source preview + + let docsApiEndpoint method path description = ApiReference.endpoint method path description + let docsParameter name typeName required description = ApiReference.parameter name typeName required description + let docsParameters parameters = ApiReference.parameters parameters + let docsApiParameter name typeName location required defaultValue enumValues example description : DocsApiParameter = + { name = name; typeName = typeName; location = location; required = required; defaultValue = defaultValue; enumValues = enumValues; example = example; description = description } + let docsApiResponse status description language example : DocsApiResponse = + { status = status; description = description; language = language; example = example } + let docsApiError code description : DocsApiError = { code = code; description = description } + let docsApiOperation method path description authentication parameters responses errors idempotency apiVersion deprecated = + ApiReference.operation method path description authentication parameters responses errors idempotency apiVersion deprecated + let docsCodeExample title language source = ApiReference.codeExample title language source + let docsResponseExample status language source = ApiReference.responseExample status language source diff --git a/sln/src/FSharp.ViewEngine.Docs/DefaultStyles.fs b/sln/src/FSharp.ViewEngine.Docs/DefaultStyles.fs new file mode 100644 index 0000000..61930b1 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/DefaultStyles.fs @@ -0,0 +1,22 @@ +namespace FSharp.ViewEngine.Docs + +module internal DefaultStyles = + [] + let css = """ +:root{--spec-accent-50:#fffbeb;--spec-accent-100:#fef3c7;--spec-accent-500:#f59e0b;--spec-accent-700:#b45309;--spec-accent-900:#78350f;--spec-border:#e5e5e5;--spec-border-strong:#d4d4d4;--spec-muted:#737373;--spec-faint:#a3a3a3;--spec-text:#171717;--spec-text-secondary:#404040;--spec-bg:#fff;--spec-subtle:#fafafa;--spec-hover:#f0f0f0;--spec-menu:#fff;--spec-top-bg:rgba(255,255,255,.96);--spec-selection-bg:var(--spec-accent-100);--spec-selection-text:var(--spec-accent-900);--spec-callout-bg:var(--spec-accent-50);--spec-callout-text:var(--spec-accent-900);--spec-input-bg:#fff;--spec-diagram-bg:#fafafa;--spec-table-row-border:#f0f0f0;--docs-font-sans:"Noto Sans",ui-sans-serif,system-ui,sans-serif;--docs-font-mono:"Noto Sans Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-family:var(--docs-font-sans);color:var(--spec-text);color-scheme:light} +:root.dark{--spec-border:#303030;--spec-border-strong:#404040;--spec-muted:#a3a3a3;--spec-faint:#737373;--spec-text:#f5f5f5;--spec-text-secondary:#d4d4d4;--spec-bg:#171717;--spec-subtle:#111;--spec-hover:#262626;--spec-menu:#1f1f1f;--spec-top-bg:rgba(23,23,23,.96);--spec-selection-bg:color-mix(in srgb,var(--spec-accent-500) 18%,transparent);--spec-selection-text:var(--spec-accent-500);--spec-callout-bg:color-mix(in srgb,var(--spec-accent-500) 12%,transparent);--spec-callout-text:#e5e5e5;--spec-input-bg:#1f1f1f;--spec-diagram-bg:#1f1f1f;--spec-table-row-border:#303030;color-scheme:dark} +*{box-sizing:border-box}.docs-skip-link{position:fixed;top:.5rem;left:.5rem;z-index:100;transform:translateY(-200%);border-radius:.375rem;background:var(--spec-menu);padding:.5rem .75rem;color:var(--spec-text);font-weight:650;text-decoration:none;box-shadow:0 4px 12px rgba(0,0,0,.2)}.docs-skip-link:focus{transform:translateY(0)}.spec-hidden{display:none!important}.spec-document{margin:0;background:var(--spec-bg);color:var(--spec-text);font-family:var(--docs-font-sans);-webkit-font-smoothing:antialiased}.spec-shell{display:flex;height:100vh;overflow:hidden;background:var(--spec-bg)} +.spec-overlay{position:fixed;inset:0;z-index:40;border:0;background:rgba(10,10,10,.5);backdrop-filter:blur(2px)}.spec-side-nav{position:fixed;inset:0 auto 0 0;z-index:50;width:min(18rem,calc(100vw - 3rem));height:100vh;border-right:1px solid var(--spec-border);background:var(--spec-subtle);box-shadow:0 20px 25px rgba(0,0,0,.12)}.spec-side-nav-inner{display:flex;height:100%;min-height:0;flex-direction:column}.spec-brand{display:flex;height:3rem;flex:none;align-items:center;gap:.625rem;border-bottom:1px solid var(--spec-border);padding:0 1rem}.spec-brand-mark{display:flex;width:1.75rem;height:1.75rem;align-items:center;justify-content:center}.spec-brand-mark img,.spec-brand-mark svg{max-width:100%;max-height:100%}.spec-brand-name{font-size:.875rem;font-weight:650}.spec-grow{flex:1}.spec-nav-close,.spec-nav-open,.spec-breadcrumb-menu-button{border:0;border-radius:.375rem;background:transparent;padding:.375rem;color:var(--spec-muted);cursor:pointer}.spec-nav-close:hover,.spec-nav-open:hover,.spec-breadcrumb-menu-button:hover{background:var(--spec-hover);color:var(--spec-text)}.spec-nav-close svg,.spec-nav-open svg{width:1.25rem;height:1.25rem}.spec-nav-scroll{min-height:0;flex:1;overflow:auto;padding:1rem}.spec-nav-list,.spec-nav-children{width:max-content;min-width:100%;margin:0;padding:0;list-style:none}.spec-nav-list>li+li,.spec-nav-children>li+li{margin-top:.25rem}.spec-nav-group-button,.spec-nav-link{display:flex;width:max-content;min-width:100%;align-items:center;border:0;border-radius:.5rem;background:transparent;padding:.375rem .625rem;color:var(--spec-text-secondary);font-size:.875rem;font-weight:500;text-align:left;text-decoration:none;cursor:pointer}.spec-nav-group-button:hover,.spec-nav-link:hover{background:var(--spec-hover);color:var(--spec-text)}.spec-nav-group-button[data-active=true]{font-weight:650;color:var(--spec-text)}.spec-nav-label{min-width:0;flex:1;white-space:nowrap}.spec-nav-chevron{margin-left:.5rem;color:var(--spec-faint);transition:transform .15s}.spec-nav-chevron[data-open=true]{transform:rotate(90deg)}.spec-nav-chevron svg{width:1rem;height:1rem}.spec-nav-children{margin:.25rem 0 0 .5rem;border-left:1px solid var(--spec-border);padding-left:.5rem}.spec-nav-link[data-selected=true]{background:var(--spec-selection-bg);color:var(--spec-selection-text);font-weight:650} +.docs-search{position:relative}.docs-search-button{display:flex;height:2rem;align-items:center;gap:.5rem;border:1px solid var(--spec-border);border-radius:.5rem;background:var(--spec-input-bg);padding:0 .6rem;color:var(--spec-muted);font:inherit;font-size:.8125rem;cursor:pointer}.docs-search-button:hover{background:var(--spec-hover);color:var(--spec-text)}.docs-search-button kbd{border:1px solid var(--spec-border);border-radius:.25rem;padding:.05rem .25rem;color:var(--spec-muted);font-family:var(--docs-font-mono);font-size:.625rem}.docs-search-dialog{width:min(40rem,calc(100vw - 2rem));max-height:min(42rem,calc(100vh - 4rem));border:0;border-radius:.875rem;background:transparent;padding:0;color:var(--spec-text);box-shadow:0 24px 70px rgba(0,0,0,.35)}.docs-search-dialog::backdrop{background:rgba(10,10,10,.55);backdrop-filter:blur(2px)}.docs-search-panel{overflow:hidden;border:1px solid var(--spec-border-strong);border-radius:.875rem;background:var(--spec-menu)}.docs-search-field{display:flex;gap:.5rem;border-bottom:1px solid var(--spec-border);padding:.75rem}.docs-search-field input{min-width:0;flex:1;border:1px solid var(--spec-border-strong);border-radius:.5rem;background:var(--spec-input-bg);padding:.65rem .75rem;color:var(--spec-text);font:inherit}.docs-search-field button{border:0;background:transparent;color:var(--spec-muted);font:inherit;font-size:.8125rem;cursor:pointer}.docs-search-results{max-height:30rem;overflow-y:auto;padding:.5rem}.docs-search-results a{display:flex;flex-direction:column;gap:.2rem;border-radius:.5rem;padding:.65rem .75rem;color:var(--spec-text);text-decoration:none}.docs-search-results a:hover,.docs-search-results a:focus-visible{background:var(--spec-hover);outline:0}.docs-search-results a span{color:var(--spec-muted);font-size:.8125rem;line-height:1.4}.docs-story-catalog{display:flex;flex-direction:column;gap:1.5rem}.docs-version-selector{display:flex;flex-wrap:wrap;gap:.35rem}.docs-version-selector a{border:1px solid var(--spec-border);border-radius:.375rem;padding:.3rem .5rem;color:var(--spec-muted);font-size:.8125rem;text-decoration:none}.docs-version-selector a[aria-current=page]{background:var(--spec-selection-bg);color:var(--spec-selection-text);font-weight:700}.docs-api-operation{display:flex;flex-direction:column;gap:1rem}.docs-api-policy{border-left:2px solid var(--spec-border-strong);padding-left:.75rem}.docs-api-policy p{margin:.25rem 0 0;color:var(--spec-muted);font-size:.875rem}.docs-api-responses{display:flex;flex-direction:column;gap:.75rem}.docs-page-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.875rem}.docs-page-badge{display:inline-flex;border-radius:999px;background:var(--spec-selection-bg);padding:.2rem .55rem;color:var(--spec-selection-text);font-size:.75rem;font-weight:700}.docs-page-badge-warning{background:#fef3c7;color:#92400e}:root.dark .docs-page-badge-warning{background:#78350f;color:#fde68a}.docs-page-maintenance{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.75rem;color:var(--spec-muted);font-size:.8125rem}.docs-page-maintenance a{color:var(--spec-selection-text);font-weight:600;text-decoration:underline;text-underline-offset:.15em}.spec-page-content{display:flex;min-width:0;flex:1;flex-direction:column;overflow:hidden}.spec-top-nav{position:relative;z-index:30;display:flex;height:3rem;flex:none;align-items:center;justify-content:space-between;gap:.75rem;border-bottom:1px solid var(--spec-border);padding:0 1rem;background:var(--spec-top-bg);backdrop-filter:blur(8px)}.spec-top-left{display:flex;min-width:0;flex:1;align-items:center;gap:.75rem}.spec-top-actions{display:flex;flex:none;align-items:center;gap:.375rem}.spec-breadcrumbs{min-width:0}.spec-breadcrumb-list{display:flex;min-width:0;align-items:center;gap:.375rem;margin:0;padding:0;list-style:none;font-size:.875rem}.spec-breadcrumb{min-width:0}.spec-breadcrumb a,.spec-breadcrumb span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--spec-muted);text-decoration:none}.spec-breadcrumb a:hover{color:var(--spec-text)}.spec-breadcrumb [aria-current=page]{color:var(--spec-text);font-weight:650}.spec-breadcrumb-separator{flex:none;color:var(--spec-faint)}.spec-breadcrumb-separator svg{width:1rem;height:1rem}.spec-breadcrumb-menu-wrap,.spec-color-mode{position:relative}.spec-breadcrumb-menu{position:absolute;top:100%;left:0;z-index:60;width:14rem;margin-top:.5rem;overflow:hidden;border:1px solid var(--spec-border);border-radius:.5rem;background:var(--spec-menu);padding:.25rem 0;box-shadow:0 10px 20px rgba(0,0,0,.16)}.spec-breadcrumb-menu a,.spec-breadcrumb-menu span{display:block;padding:.5rem .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--spec-muted);text-decoration:none}.spec-breadcrumb-menu a:hover{background:var(--spec-hover);color:var(--spec-text)} +.spec-icon-button{display:grid;width:2rem;height:2rem;place-items:center;flex:none;border:1px solid transparent;border-radius:.5rem;background:transparent;padding:.375rem;color:var(--spec-muted);text-decoration:none;cursor:pointer}.spec-icon-button:hover{background:var(--spec-hover);color:var(--spec-text)}.spec-icon-button:focus-visible,.spec-color-mode-option:focus-visible,.spec-repository-link:focus-visible{outline:2px solid var(--spec-accent-700);outline-offset:2px}.spec-icon-button svg{width:1.125rem;height:1.125rem}.spec-repository{flex:none}.spec-repository-link{border:1px solid var(--spec-border-strong);border-radius:.5rem;background:var(--spec-input-bg);padding:.375rem .75rem;color:var(--spec-text-secondary);font-size:.875rem;font-weight:650;text-decoration:none;box-shadow:0 1px 2px rgba(0,0,0,.04)}.spec-repository-link:hover{background:var(--spec-hover);color:var(--spec-text)}.spec-color-mode-button{border-color:transparent}.spec-color-mode-icon{display:grid;place-items:center}.spec-color-mode-icon-dark{display:none}:root.dark .spec-color-mode-icon-light{display:none}:root.dark .spec-color-mode-icon-dark{display:grid}.spec-color-mode-menu{position:absolute;top:100%;right:0;z-index:70;width:9.5rem;margin-top:.5rem;border:1px solid var(--spec-border);border-radius:.625rem;background:var(--spec-menu);padding:.25rem;box-shadow:0 12px 28px rgba(0,0,0,.18)}.spec-color-mode-option{display:grid;width:100%;grid-template-columns:1.125rem 1fr 1rem;align-items:center;gap:.625rem;border:0;border-radius:.375rem;background:transparent;padding:.5rem .625rem;color:var(--spec-text-secondary);font:inherit;font-size:.8125rem;text-align:left;cursor:pointer}.spec-color-mode-option:hover,.spec-color-mode-option:focus{background:var(--spec-hover);color:var(--spec-text)}.spec-color-mode-option-icon,.spec-color-mode-check{display:grid;place-items:center}.spec-color-mode-option-icon svg,.spec-color-mode-check svg{width:1rem;height:1rem}.spec-color-mode-check{visibility:hidden;color:var(--spec-accent-700)}.spec-color-mode-option[data-selected=true]{color:var(--spec-text);font-weight:650}.spec-color-mode-option[data-selected=true] .spec-color-mode-check{visibility:visible}:root.dark .spec-color-mode-check{color:var(--spec-accent-500)} +.spec-page-viewport{min-height:0;flex:1;overflow:hidden}.spec-page-layout{display:flex;height:100%;min-height:0}.spec-main{min-width:0;flex:1;overflow-y:auto;padding:2.5rem 1rem;background:var(--spec-bg)}.spec-main-inner{max-width:56rem;margin:0 auto}.spec-page-body{display:flex;flex-direction:column;gap:3rem}.spec-page-heading{max-width:48rem;margin:0;overflow-wrap:anywhere;font-size:2.25rem;line-height:1.1;font-weight:650;letter-spacing:-.025em}.spec-page-description{max-width:48rem;margin:1rem 0 0;color:var(--spec-muted);line-height:1.75}.spec-heading-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.spec-section-anchor{margin-bottom:1.25rem;scroll-margin-top:5rem}.spec-section-title{margin:0;color:var(--spec-text);font-weight:650;letter-spacing:-.01em}.spec-section-title-level-2{font-size:1.25rem}.spec-section-title-level-3{font-size:1rem}.spec-section-title-level-4{font-size:.875rem}.spec-section-blocks{display:flex;flex-direction:column;gap:1rem}.spec-paragraph,.spec-bullets{margin:0;color:var(--spec-text-secondary);font-size:1rem;line-height:1.65}.spec-content-link{text-decoration:underline;text-decoration-color:var(--spec-accent-500);text-decoration-thickness:1px;text-underline-offset:.18em;color:var(--spec-selection-text);font-weight:600}.spec-content-link:hover{text-decoration-thickness:2px}.spec-content-link:focus-visible{border-radius:.125rem;outline:2px solid var(--spec-accent-700);outline-offset:2px}.spec-bullets{padding-left:1.25rem}.spec-bullets li+li{margin-top:.5rem}.spec-bullets li::marker{color:var(--spec-accent-500)}.spec-table-wrap{overflow-x:auto;border:1px solid var(--spec-border);border-radius:.75rem}.spec-table{width:100%;min-width:100%;border-collapse:collapse;font-size:.875rem}.spec-table th{padding:.625rem .75rem;background:var(--spec-subtle);color:var(--spec-muted);font-size:.6875rem;letter-spacing:.04em;text-align:left;text-transform:uppercase;white-space:nowrap}.spec-table td{padding:.75rem;color:var(--spec-text-secondary);line-height:1.5;vertical-align:top;border-top:1px solid var(--spec-table-row-border)}.docs-copyable-code{position:relative;min-width:0}.docs-copy-code{position:absolute;top:.5rem;right:.5rem;z-index:2;border:1px solid #404040;border-radius:.375rem;background:#1f1f1f;padding:.3rem .5rem;color:#d4d4d4;font:inherit;font-size:.6875rem;cursor:pointer}.docs-copy-code:hover,.docs-copy-code[data-copied=true]{background:#303030;color:#fff}.docs-copy-code[data-copy-error=true]{border-color:#ef4444;color:#fecaca}.spec-document pre.spec-code{margin:0;overflow-x:auto;border-radius:.75rem;background:#0a0a0a;padding:1rem;color:#f5f5f5;font-size:.8125rem;line-height:1.55;box-shadow:0 1px 2px rgba(0,0,0,.08)}.spec-document pre.spec-code code{background:transparent;font-family:var(--docs-font-mono);font-size:.8125rem;line-height:1.55;text-shadow:none}.spec-diagram{overflow-x:auto;border:1px solid var(--spec-border);border-radius:.75rem;background:var(--spec-diagram-bg);padding:1.25rem}.spec-diagram svg{max-width:100%;height:auto}.spec-c4-diagram a{cursor:pointer}.spec-c4-diagram a:focus-visible{outline:2px solid var(--spec-accent-700);outline-offset:2px}.spec-callout{border-left:2px solid var(--spec-accent-500);background:var(--spec-callout-bg);padding:.75rem 1rem}.spec-page-pager{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem;border-top:1px solid var(--spec-border);padding-top:1.5rem}.spec-pager-link{display:flex;min-width:0;flex-direction:column;gap:.3rem;border:1px solid var(--spec-border);border-radius:.75rem;background:var(--spec-input-bg);padding:1rem;color:var(--spec-text);text-decoration:none;box-shadow:0 1px 2px rgba(0,0,0,.04)}.spec-pager-link:hover{border-color:var(--spec-border-strong);background:var(--spec-hover)}.spec-pager-link:focus-visible{outline:2px solid var(--spec-accent-700);outline-offset:2px}.spec-pager-next{grid-column:2;text-align:right}.spec-pager-direction{display:flex;align-items:center;gap:.3rem;color:var(--spec-muted);font-size:.75rem;font-weight:600}.spec-pager-next .spec-pager-direction{justify-content:flex-end}.spec-pager-arrow{display:grid;place-items:center;color:var(--spec-faint)}.spec-pager-arrow svg{width:.9rem;height:.9rem}.spec-pager-arrow-previous{transform:rotate(180deg)}.spec-pager-title{overflow-wrap:anywhere;color:var(--spec-selection-text);font-size:1rem;font-weight:650}.spec-callout-label{color:var(--spec-selection-text);font-size:.75rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase}.spec-callout-text{margin:.25rem 0 0;color:var(--spec-callout-text);font-size:.875rem;line-height:1.5}.spec-toc{display:none;width:min(16rem,20vw);flex:none;overflow-y:auto;border-left:1px solid var(--spec-border);padding:2rem 1.5rem}.spec-toc-inner{position:sticky;top:2rem}.spec-toc-title{margin-bottom:.75rem;color:var(--spec-muted);font-size:.6875rem;font-weight:650;letter-spacing:.14em;text-transform:uppercase}.spec-toc-nav{display:flex;flex-direction:column;gap:.5rem}.spec-toc-nav a{color:var(--spec-muted);font-size:.875rem;line-height:1.25rem;text-decoration:none}.spec-toc-nav a:hover,.spec-toc-nav a[aria-current=location]{color:var(--spec-selection-text)}.spec-toc-nav a[aria-current=location]{font-weight:650}.spec-toc-level-3{padding-left:.75rem}.spec-toc-level-4{padding-left:1.5rem}.spec-mobile-toc{display:block;margin-bottom:1.5rem;border:1px solid var(--spec-border);border-radius:.75rem;background:var(--spec-subtle)}.spec-mobile-toc summary{padding:.75rem 1rem;color:var(--spec-text);font-size:.875rem;font-weight:650;cursor:pointer}.spec-mobile-toc summary:focus-visible{outline:2px solid var(--spec-accent-700);outline-offset:2px}.spec-mobile-toc-nav{display:flex;flex-direction:column;gap:.125rem;border-top:1px solid var(--spec-border);padding:.5rem}.spec-mobile-toc-nav a{border-radius:.375rem;padding:.45rem .5rem;color:var(--spec-text-secondary);font-size:.875rem;line-height:1.35;text-decoration:none}.spec-mobile-toc-nav a:hover,.spec-mobile-toc-nav a:focus-visible,.spec-mobile-toc-nav a[aria-current=location]{background:var(--spec-hover);color:var(--spec-selection-text);outline:0}.spec-mobile-toc-nav a[aria-current=location]{font-weight:650} +.spec-browser-frame{width:100%;min-width:0;overflow:hidden;border:1px solid var(--spec-border-strong);border-radius:.75rem;background:var(--spec-input-bg);box-shadow:0 1px 2px rgba(0,0,0,.05)}.spec-browser-toolbar{display:flex;align-items:center;gap:.75rem;border-bottom:1px solid var(--spec-border);background:var(--spec-subtle);padding:.5rem .75rem}.spec-browser-dots{display:flex;flex:none;gap:.375rem}.spec-browser-dot{width:.625rem;height:.625rem;border-radius:999px}.spec-browser-dot-red{background:#f87171}.spec-browser-dot-amber{background:#fbbf24}.spec-browser-dot-green{background:#34d399}.spec-browser-address{display:flex;min-width:0;flex:1;align-items:center;gap:.5rem;border:1px solid var(--spec-border);border-radius:.375rem;background:var(--spec-input-bg);padding:.375rem .75rem;color:var(--spec-muted);font-size:.625rem;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.04)}.spec-browser-address svg{width:.75rem;height:.75rem;flex:none;color:var(--spec-faint)}.spec-browser-address span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spec-state-tabs{display:flex;flex-direction:column;gap:1.25rem}.spec-state-tab-list{display:flex;max-width:100%;gap:2rem;overflow-x:auto;border-bottom:1px solid var(--spec-border)}.spec-state-tab{height:2.5rem;flex:none;border:0;border-bottom:2px solid transparent;background:transparent;padding:0 .125rem;color:var(--spec-muted);font-size:.875rem;font-weight:500;cursor:pointer}.spec-state-tab:hover{color:var(--spec-text)}.spec-state-tab[data-selected=true]{border-color:var(--spec-accent-700);color:var(--spec-selection-text);font-weight:650}.spec-state-tab:focus-visible{outline:2px solid var(--spec-accent-700);outline-offset:-2px} +.docs-canvas-layout .spec-main-inner{max-width:none}.docs-custom-rail{width:32rem;flex:none;overflow-y:auto;border-left:1px solid var(--spec-border);background:#111318;color:#f5f5f5}.docs-custom-rail-inner{display:flex;min-height:100%;flex-direction:column;gap:1rem;padding:2rem 1.5rem}.docs-api-endpoint{border:1px solid var(--spec-border);border-radius:.75rem;background:var(--spec-input-bg);padding:1rem}.docs-api-endpoint-line{display:flex;align-items:center;gap:.75rem}.docs-http-method{display:inline-flex;border-radius:.375rem;padding:.3rem .5rem;font-size:.6875rem;font-weight:750;letter-spacing:.04em}.docs-method-get{background:#dcfce7;color:#166534}.docs-method-post{background:#dbeafe;color:#1d4ed8}.docs-method-put{background:#fef3c7;color:#92400e}.docs-method-patch{background:#ffedd5;color:#9a3412}.docs-method-delete{background:#fee2e2;color:#991b1b}.docs-method-neutral{background:var(--spec-hover);color:var(--spec-muted)}:root.dark .docs-method-get{background:#14532d;color:#bbf7d0}:root.dark .docs-method-post{background:#1e3a8a;color:#bfdbfe}:root.dark .docs-method-put{background:#78350f;color:#fde68a}:root.dark .docs-method-patch{background:#7c2d12;color:#fed7aa}:root.dark .docs-method-delete{background:#7f1d1d;color:#fecaca}.docs-api-path{overflow-wrap:anywhere;color:var(--spec-text);font-size:.875rem;font-weight:650}.docs-api-description{margin:.75rem 0 0;color:var(--spec-muted);font-size:.875rem;line-height:1.6}.docs-parameters{overflow:hidden;border:1px solid var(--spec-border);border-radius:.75rem;background:var(--spec-input-bg)}.docs-parameter{padding:1rem}.docs-parameter+.docs-parameter{border-top:1px solid var(--spec-border)}.docs-parameter-header{display:flex;align-items:center;gap:.5rem}.docs-parameter-name{color:var(--spec-text);font-size:.8125rem;font-weight:700}.docs-parameter-type{color:var(--spec-muted);font-size:.75rem}.docs-required{border-radius:999px;background:#fef2f2;padding:.125rem .4rem;color:#b91c1c;font-size:.625rem;font-weight:700;text-transform:uppercase}:root.dark .docs-required{background:#450a0a;color:#fecaca}.docs-parameter-description{margin:.5rem 0 0;color:var(--spec-muted);font-size:.8125rem;line-height:1.6}.docs-code-panel,.docs-response-panel{overflow:hidden;border:1px solid #30343d;border-radius:.75rem;background:#1b1e25;color:#f5f5f5}.docs-code-panel-header,.docs-response-status{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #30343d;padding:.7rem .9rem;color:#e5e7eb;font-size:.75rem;font-weight:650}.docs-code-language{color:#9ca3af;text-transform:uppercase}.docs-code-panel .docs-copyable-code{background:#1b1e25}.spec-document pre.docs-code-panel-source{margin:0;overflow-x:auto;background:#1b1e25;padding:1rem;color:#f5f5f5;font-size:.75rem;line-height:1.55}.spec-document pre.docs-code-panel-source code{background:transparent;font-family:var(--docs-font-mono);font-size:.75rem;line-height:1.55;text-shadow:none}.docs-response-panel>.docs-code-panel{border:0;border-radius:0}.docs-response-panel>.docs-code-panel>.docs-code-panel-header{display:none} +.spec-example{overflow:hidden;border:1px solid var(--spec-border);border-radius:.75rem;background:var(--spec-input-bg)}.spec-example-toolbar{display:flex;min-height:3rem;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--spec-border);padding:.375rem .5rem .375rem 1rem}.spec-example-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--spec-text);font-size:.875rem;font-weight:650}.spec-example-tabs{display:flex;flex:none;align-items:center;border-radius:.625rem;background:var(--spec-hover);padding:.1875rem}.spec-example-tab{border:0;border-radius:.4375rem;background:transparent;padding:.375rem .75rem;color:var(--spec-text-secondary);font:inherit;font-size:.8125rem;font-weight:600;cursor:pointer}.spec-example-tab:hover{color:var(--spec-text)}.spec-example-tab[data-selected=true]{background:var(--spec-menu);color:var(--spec-text);box-shadow:0 1px 2px rgba(0,0,0,.1)}.spec-example-tab:focus-visible{outline:2px solid var(--spec-accent-700);outline-offset:1px}.spec-example-preview{min-height:10rem;padding:1.5rem;background:var(--spec-bg)}.spec-document pre.spec-example-code{min-height:10rem;border-radius:0;box-shadow:none}.spec-example-preview>[data-example-surface=true]{height:100%} +@media(min-width:640px){.spec-main{padding-left:1.5rem;padding-right:1.5rem}.spec-breadcrumb-menu-wrap{display:none}} +@media(min-width:1024px){.spec-side-nav{position:sticky;display:block!important;width:min(18rem,24vw);box-shadow:none}.spec-overlay,.spec-nav-open,.spec-nav-close{display:none!important}.spec-top-nav{padding-left:2rem;padding-right:2rem}.spec-main{padding-left:2.5rem;padding-right:2.5rem}} +@media(min-width:1280px){.spec-toc{display:block}.spec-mobile-toc{display:none}} +@media(max-width:1279px){.docs-reference-layout{display:block;overflow-y:auto}.docs-reference-layout .spec-main{overflow:visible}.docs-custom-rail{width:auto;overflow:visible;border-top:1px solid var(--spec-border);border-left:0}.docs-custom-rail-inner{max-width:56rem;min-height:0;margin:0 auto}} +@media(max-width:1023px){.spec-side-nav.spec-hidden{display:none}.spec-overlay.spec-hidden{display:none}} +@media(max-width:639px){.docs-search-button span,.docs-search-button kbd{display:none}.docs-search-button{width:2rem;justify-content:center;padding:0}.docs-search-button::before{content:'⌕';font-size:1rem}.spec-page-pager{grid-template-columns:1fr}.spec-pager-next{grid-column:1}.spec-breadcrumb-list>.spec-mobile-hidden{display:none}.spec-c4-diagram svg{min-width:48rem}.docs-custom-rail-inner{padding:1.25rem 1rem}.spec-top-nav{padding-right:.625rem}.spec-top-actions{gap:.125rem}} +""" diff --git a/sln/src/FSharp.ViewEngine.Docs/DirectedGraph.fs b/sln/src/FSharp.ViewEngine.Docs/DirectedGraph.fs new file mode 100644 index 0000000..0e75fa7 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/DirectedGraph.fs @@ -0,0 +1,58 @@ +namespace FSharp.ViewEngine.Docs + +[] +type DirectedGraph<'node when 'node:comparison> = + { nodes:'node list + roots:'node list + edges:('node * 'node) list } + +module DirectedGraph = + let validate (graph:DirectedGraph<'node>) = + let knownNodes = Set.ofList graph.nodes + + let duplicateNodeIssues = + graph.nodes + |> List.countBy id + |> List.choose (fun (node, count) -> + if count > 1 then Some(issue "graph.duplicate-node" $"Graph node is declared more than once: {node}.") else None) + + let rootIssues = + [ if List.isEmpty graph.roots then + issue "graph.missing-root" "A directed graph must declare at least one root." + for root in graph.roots do + if not (Set.contains root knownNodes) then + issue "graph.unknown-root" $"Graph root is not declared: {root}." ] + + let edgeIssues = + [ for source, target in graph.edges do + if not (Set.contains source knownNodes) then + issue "graph.unknown-source" $"Graph edge source is not declared: {source}." + if not (Set.contains target knownNodes) then + issue "graph.unknown-target" $"Graph edge target is not declared: {target}." ] + + let validEdges = + graph.edges + |> List.filter (fun (source, target) -> Set.contains source knownNodes && Set.contains target knownNodes) + |> List.groupBy fst + |> List.map (fun (source, edges) -> source, (edges |> List.map snd)) + |> Map.ofList + + let rec visit visited pending = + match pending with + | [] -> visited + | node :: remaining when Set.contains node visited -> visit visited remaining + | node :: remaining -> + let destinations = validEdges |> Map.tryFind node |> Option.defaultValue [] + visit (Set.add node visited) (destinations @ remaining) + + let reachable = + graph.roots + |> List.filter (fun root -> Set.contains root knownNodes) + |> visit Set.empty + + let unreachableIssues = + Set.difference knownNodes reachable + |> Set.toList + |> List.map (fun node -> issue "graph.unreachable" $"Graph node is unreachable from every root: {node}.") + + duplicateNodeIssues @ rootIssues @ edgeIssues @ unreachableIssues diff --git a/sln/src/FSharp.ViewEngine.Docs/Document.fs b/sln/src/FSharp.ViewEngine.Docs/Document.fs new file mode 100644 index 0000000..088af26 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Document.fs @@ -0,0 +1,164 @@ +namespace FSharp.ViewEngine.Docs + +open FSharp.ViewEngine +open System + +/// Rich inline documentation content rendered with safe text and typed links. +type DocsInline = + | InlineText of string + | InlineCode of string + | InlineLink of label:string * href:string + | InlineStrong of DocsInline list + | InlineEmphasis of DocsInline list + +/// A typed documentation content block. +[] +type DocsBlock = + | Paragraph of string + | RichParagraph of DocsInline list + | Bullets of string list + | RichBullets of ordered:bool * items:DocsInline list list + | Table of headers:string list * rows:string list list + | RichTable of headers:DocsInline list list * rows:DocsInline list list list + | Code of language:string * source:string + | Diagram of string + | C4Diagram of string + | Sequence of SequenceDiagram.Diagram + | Callout of label:string * text:string + | RichCallout of label:DocsInline list * content:DocsInline list + | Custom of HtmlElement + +/// A documentation section with a stable fragment ID and semantic heading level. +[] +type DocsSection = + { id:string + title:string + level:int + blocks:DocsBlock list } + +type Heading = + | Visible + | VisuallyHidden + +/// The persisted light, dark, or operating-system color-mode preference. +type DocsColorMode = + | System + | Light + | Dark + +module DocsColorMode = + let value = function + | System -> "system" + | Light -> "light" + | Dark -> "dark" + +type DocsLayout = + | Article + | Reference + | Canvas + +[] +type DocsRightRail = + | TableOfContents + | NoRail + | CustomRail of HtmlElement + +type DocsPageLink = + { label:string + href:string } + +type DocsPager = + { previousPage:DocsPageLink option + nextPage:DocsPageLink option } + +/// Optional metadata used by document heads, search indexes, and visible maintenance details. +type DocsPageMetadata = + { browserTitle:string option + canonicalUrl:string option + noIndex:bool + socialImage:string option + version:string option + deprecated:bool + lastUpdated:string option + editUrl:string option } + +module DocsPageMetadata = + /// Metadata defaults for pages that need only a title and description. + let defaults = + { browserTitle = None + canonicalUrl = None + noIndex = false + socialImage = None + version = None + deprecated = false + lastUpdated = None + editUrl = None } + +/// A composable article, reference, or canvas page rendered by the documentation shell. +[] +type DocsPage = + { activeId:string + title:string + description:string + heading:Heading + layout:DocsLayout + rightRail:DocsRightRail + sections:DocsSection list + headingAdornment:HtmlElement option + pager:DocsPager option + metadata:DocsPageMetadata } + +module DocsPage = + let create activeId title description heading layout rightRail sections = + { activeId = activeId + title = title + description = description + heading = heading + layout = layout + rightRail = rightRail + sections = sections + headingAdornment = None + pager = None + metadata = DocsPageMetadata.defaults } + + let validate page = + let required value code message = + if String.IsNullOrWhiteSpace value then [ issue code message ] else [] + + let sectionIssues = + page.sections + |> List.collect (fun section -> + required section.id "page.section-missing-id" "Section IDs cannot be empty." + @ required section.title "page.section-missing-title" $"Section '{section.id}' must have a title." + @ [ if section.level < 2 || section.level > 4 then + issue "page.section-invalid-level" $"Section '{section.id}' must use heading level 2, 3, or 4." ] + @ (section.blocks + |> List.collect (function + | Table(headers, rows) when rows |> List.exists (fun row -> row.Length <> headers.Length) -> + [ issue "page.table-invalid-width" $"A table in section '{section.id}' has a row with the wrong number of cells." ] + | RichTable(headers, rows) when rows |> List.exists (fun row -> row.Length <> headers.Length) -> + [ issue "page.table-invalid-width" $"A rich table in section '{section.id}' has a row with the wrong number of cells." ] + | _ -> []))) + + let duplicateSectionIssues = + page.sections + |> List.countBy _.id + |> List.choose (fun (id, count) -> + if count > 1 then Some(issue "page.duplicate-section-id" $"Duplicate section ID: {id}.") else None) + + let pagerIssues = + match page.pager with + | None -> [] + | Some pager -> + [ pager.previousPage; pager.nextPage ] + |> List.choose id + |> List.collect (fun link -> + required link.label "page.pager-missing-label" "Page navigation labels cannot be empty." + @ required link.href "page.pager-missing-href" $"Page navigation link '{link.label}' must have a destination.") + + required page.activeId "page.missing-active-id" "Page active IDs cannot be empty." + @ required page.title "page.missing-title" "Pages must have a title." + @ required page.description "page.missing-description" $"Page '{page.activeId}' must have a description." + @ sectionIssues + @ duplicateSectionIssues + @ pagerIssues diff --git a/sln/src/FSharp.ViewEngine.Docs/FSharp.ViewEngine.Docs.fsproj b/sln/src/FSharp.ViewEngine.Docs/FSharp.ViewEngine.Docs.fsproj new file mode 100644 index 0000000..beb8b93 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/FSharp.ViewEngine.Docs.fsproj @@ -0,0 +1,43 @@ + + + + net8.0 + FSharp.ViewEngine.Docs + LICENSE + README.md + Andrew Meier + Composable article, API reference, canvas, navigation, diagram, and product-frame components for documentation sites built with FSharp.ViewEngine. + fsharp;html;documentation;api-reference;specification;mermaid;c4 + https://github.com/meiermade/FSharp.ViewEngine + git + true + true + portable + true + snupkg + true + true + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sln/src/FSharp.ViewEngine.Docs/Navigation.fs b/sln/src/FSharp.ViewEngine.Docs/Navigation.fs new file mode 100644 index 0000000..4184907 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Navigation.fs @@ -0,0 +1,176 @@ +namespace FSharp.ViewEngine.Docs + +open System + +[] +type NavPage<'destination> = + { id:string + label:string + href:string + destination:'destination } + +[] +type NavGroup<'destination> = + { id:string + label:string + defaultOpen:bool + breadcrumbHref:string option + children:NavNode<'destination> list } + +and [] NavNode<'destination> = + | Page of NavPage<'destination> + | Group of NavGroup<'destination> + +type Breadcrumb = + { label:string + href:string option } + +module Nav = + let page id label href destination = + Page + { id = id + label = label + href = href + destination = destination } + + let group id label defaultOpen children = + Group + { id = id + label = label + defaultOpen = defaultOpen + breadcrumbHref = None + children = children } + + let groupWithBreadcrumb id label breadcrumbHref defaultOpen children = + Group + { id = id + label = label + defaultOpen = defaultOpen + breadcrumbHref = Some breadcrumbHref + children = children } + +module NavNode = + let id = function + | Page page -> page.id + | Group group -> group.id + + let label = function + | Page page -> page.label + | Group group -> group.label + + let href = function + | Page page -> Some page.href + | Group _ -> None + + let breadcrumbHref = function + | Page page -> Some page.href + | Group group -> group.breadcrumbHref + + let destination = function + | Page page -> Some page.destination + | Group _ -> None + + let children = function + | Page _ -> [] + | Group group -> group.children + + let defaultOpen = function + | Page _ -> false + | Group group -> group.defaultOpen + + let rec containsActive activeId node = + id node = activeId || (children node |> List.exists (containsActive activeId)) + + let rec collectGroups nodes = + nodes + |> List.collect (fun node -> + match node with + | Page _ -> [] + | Group group -> node :: collectGroups group.children) + + let rec collectPages nodes = + nodes + |> List.collect (fun node -> + match node with + | Page _ -> [ node ] + | Group group -> collectPages group.children) + + let rec private tryPath activeId node = + if id node = activeId then + Some [ node ] + else + children node + |> List.tryPick (tryPath activeId) + |> Option.map (fun path -> node :: path) + + let tryFindPath activeId nodes = + nodes |> List.tryPick (tryPath activeId) + +module Navigation = + let breadcrumbs nodes homeId activeId = + let homeHref = + nodes + |> NavNode.collectPages + |> List.tryFind (NavNode.id >> (=) homeId) + |> Option.bind NavNode.href + |> Option.defaultValue "/" + + let home = { label = "Home"; href = Some homeHref } + + match NavNode.tryFindPath activeId nodes with + | Some [ Page page ] when page.id = homeId -> [ home ] + | Some path -> + home + :: (path + |> List.filter (NavNode.id >> (<>) homeId) + |> List.map (fun node -> + { label = NavNode.label node + href = NavNode.breadcrumbHref node })) + | None -> [ home ] + + let validate nodes = + let validPath (href:string) = + not (String.IsNullOrWhiteSpace href) && href.StartsWith('/') + + let rec validateNode node = + let commonIssues = + [ if String.IsNullOrWhiteSpace(NavNode.id node) then + issue "navigation.missing-id" "Navigation node IDs cannot be empty." + if String.IsNullOrWhiteSpace(NavNode.label node) then + issue "navigation.missing-label" $"Navigation node '{NavNode.id node}' must have a label." ] + + match node with + | Page page -> + commonIssues + @ [ if not (validPath page.href) then + issue "navigation.invalid-href" $"Navigation page '{page.id}' must use an absolute application path." ] + | Group group -> + commonIssues + @ [ if List.isEmpty group.children then + issue "navigation.empty-group" $"Navigation group '{group.id}' must contain at least one child." + if group.breadcrumbHref |> Option.exists (validPath >> not) then + issue "navigation.invalid-breadcrumb-href" $"Navigation group '{group.id}' must use an absolute application path for its breadcrumb." ] + @ (group.children |> List.collect validateNode) + + let allNodes = + let rec collect current = + current @ (current |> List.collect (NavNode.children >> collect)) + collect nodes + + let duplicateIssues code description values = + values + |> List.countBy id + |> List.choose (fun (value, count) -> + if count > 1 then Some(issue code $"Duplicate {description}: {value}.") else None) + + let duplicateIds = + allNodes + |> List.map NavNode.id + |> duplicateIssues "navigation.duplicate-id" "navigation node ID" + + let duplicateHrefs = + allNodes + |> List.choose NavNode.href + |> duplicateIssues "navigation.duplicate-href" "navigation page href" + + (nodes |> List.collect validateNode) @ duplicateIds @ duplicateHrefs diff --git a/sln/src/FSharp.ViewEngine.Docs/README.md b/sln/src/FSharp.ViewEngine.Docs/README.md new file mode 100644 index 0000000..bbdfde7 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/README.md @@ -0,0 +1,234 @@ +# FSharp.ViewEngine.Docs + +Composable documentation components for [FSharp.ViewEngine](https://www.nuget.org/packages/FSharp.ViewEngine). + +Use one toolkit to build: + +- product guides and conceptual articles +- Stripe- or Privy-style API references +- executable software specifications +- wide product and architecture canvases +- component galleries and internal documentation + +The package supplies consistent mechanics and presentation without prescribing a consumer's information architecture, product workflows, or diagram depth. + +## Installation + +```shell +dotnet add package FSharp.ViewEngine.Docs +``` + +```shell +dotnet paket add FSharp.ViewEngine.Docs +``` + +The package targets `net8.0` and is compatible with .NET 8, .NET 9, and .NET 10 applications. + +## Builder API + +Open the namespace once. Package builders use the `docs` prefix for IntelliSense discovery and to avoid collisions with HTML builders: + +```fsharp +open FSharp.ViewEngine +open FSharp.ViewEngine.Docs +open type Html + +type Destination = + | Home + | Installation + | RenderReference + +let navigation = + [ docsNavPage "home" "Overview" "/" Home + docsNavGroup "guides" "Guides" true [ + docsNavPage "installation" "Installation" "/installation" Installation ] + docsNavPage "render" "Render.toString" "/api/render" RenderReference ] + +let site: DocsSite = + { name = "Example Docs" + baseUrl = Some "https://docs.example.com" + description = Some "Documentation for Example." + repository = Some(DocsRepository.github "https://github.com/example/project") + brandMark = span { _ariaHidden "true"; "E" } + homeId = "home" + navigation = navigation + storageKey = "example-docs-navigation" + defaultColorMode = DocsColorMode.System + theme = DocsTheme.sky + assets = DocsAssets.defaults + search = [] } + +let installation = + docsArticle "installation" "Installation" "Install the package." [ + docsSection "package" "Package" [ + docsCode "shell" "dotnet add package Example" ] ] + +let html = installation |> docsDocument site |> Render.toHtmlDocString +``` + +## Layouts + +### Articles + +`docsArticle` renders a readable content column with an on-this-page rail: + +```fsharp +let article = + docsArticle "guide" "Getting started" "Build your first view." [ + docsSection "create" "Create a view" [ + docsParagraph "Compose typed elements with computation expressions." + docsBullets [ "Open FSharp.ViewEngine"; "Open the HTML builders" ] ] ] +``` + +Add explicit previous and next destinations when the intended reading order differs from the sidebar. The pager uses the same Docs-managed navigation lifecycle as the side navigation: + +```fsharp +let guidedArticle = + article + |> docsWithPager ( + docsPager + (Some(docsPageLink "Introduction" "/")) + (Some(docsPageLink "Usage" "/usage"))) +``` + +Use `None` at either end of a sequence. + +### API references + +`docsReference` adds a dedicated right rail for request and response examples: + +```fsharp +let requestRail = + div { + docsCodeExample "Render a view" "fsharp" "div { \"Saved\" } |> Render.toString" + docsResponseExample "200" "html" "
      Saved
      " + } + +let reference = + docsReference "render" "Render.toString" "Serializes an HTML element." [ + docsSection "signature" "Signature" [ + docsCustom (docsApiEndpoint POST "/v1/render" "Renders an element.") ] + docsSection "parameters" "Parameters" [ + docsCustom (docsParameters [ + docsParameter "element" "HtmlElement" true "The element to serialize." ]) ] ] + (docsRail requestRail) +``` + +### Canvases + +`docsCanvas` provides the widest content surface with a visible semantic heading. When a product frame or architecture diagram already carries the visible title, use `docsCanvasWithHiddenHeading` to retain an accessible `

      ` without duplicating it visually: + +```fsharp +let canvas = + docsCanvasWithHiddenHeading "workflow" "Create an item" "Create an item from an empty state." [ + docsSection "wireframe" "Wireframe" [ + docsCustom (docsBrowserFrame "https://example.test/items/new" productUi) ] ] +``` + +## Content builders + +- `docsSection` and `docsSubsection` +- `docsParagraph`, `docsRichParagraph`, `docsBullets`, `docsRichBullets`, and `docsOrderedItems` +- `docsText`, `docsInlineCode`, `docsLink`, `docsStrong`, and `docsEmphasis` +- `docsTable` and `docsRichTable` +- `docsCode` +- `docsCallout` and `docsRichCallout` +- `docsDiagram`, `docsC4Diagram`, and `docsSequence` +- `docsCustom` +- `docsPageLink`, `docsPager`, and `docsWithPager` + +`docsDiagram` and `docsC4Diagram` accept trusted Mermaid source. `docsSequence` accepts a diagram constructed with the validated `SequenceDiagram` DSL. + +## Interactive components + +```fsharp +let states = + docsStateTabs "item-states" "Item states" [ + { id = "empty"; label = "Empty"; content = div { "No items" } } + { id = "ready"; label = "Ready"; content = div { "Items" } } ] + +let framed = docsBrowserFrame "https://example.test/items" states +``` + +State tabs include tablist, tab, and tabpanel semantics with click and arrow-key interactions. + +### Code and preview examples + +Use `docsExample` for a source-first developer example. `docsExampleCodeFirst` remains an equivalent explicit alias. Each example has independent accessible tab state and keyboard navigation. Opening Code reruns Prism; opening Preview rerenders Mermaid after the panel has measurable layout: + +```fsharp +let example = + docsExample + "notice-example" + "Notice" + "fsharp" + "div { _class \"notice\"; \"Saved\" }" + (div { _class "notice"; "Saved" }) +``` + +Use examples for renderable output. Keep installation commands, isolated signatures, configuration, and migration fragments as `docsCode` blocks. + +For reusable component catalogs, `DocsStory` records exact source/preview pairs plus optional viewport, theme, and state metadata. `docsStoryCatalog` renders those stories without taking ownership of product appearance. `docsVersionSelector` is opt-in for consumers publishing multiple documentation versions. + +API references can grow from the compact endpoint/parameter builders to `docsApiOperation`, which supports authentication, path/query/header/body parameter locations, defaults, enum/example values, responses, error models, idempotency guidance, API versions, and deprecation metadata. + +## Search, metadata, and validation + +Build a dependency-free local index from page models and assign it to `DocsSite.search`: + +```fsharp +let search = + [ docsSearchEntry "/installation" installation [ "package"; "NuGet" ] ] + |> DocsSearch.index + +let searchableSite = { site with search = search } +``` + +The built-in accessible search dialog opens with `Ctrl+K` or `Cmd+K`, filters page titles, descriptions, headings, and consumer keywords, and links directly to matching sections. + +Use `DocsPageMetadata` and `docsWithMetadata` for browser titles, canonical overrides, robots directives, social images, version/deprecation badges, last-updated dates, and edit-source links. Register canonical pages and aliases with `docsRegisteredPage`, then use `DocsRegistry.validate` to check navigation reachability, route/alias collisions, pager targets, page metadata, and section structure. + +## Assets and themes + +Default component CSS is embedded in the rendered document. `DocsAssets.defaults` references conventional consumer-hosted paths for Prism, Mermaid, Datastar, and a product stylesheet. Override or disable them as needed: + +```fsharp +let assets = + { DocsAssets.defaults with + productStylesheets = [ "/css/docs.css" ] + prismStylesheet = None + prismScripts = [] + mermaidScript = Some "/scripts/mermaid.min.js" + datastarScript = Some "/scripts/datastar.js" + mermaidSecurityLevel = "strict" + nonce = Some requestNonce } +``` + +Prism assets are emitted only for typed `docsCode` blocks and Mermaid assets only for typed diagram blocks. Custom HTML remains consumer-owned and should provide its own page-specific assets through `additionalHead`. Set `nonce` from each HTTP response when enforcing a nonce-based Content Security Policy. + +Built-in accent themes include `DocsTheme.amber`, `DocsTheme.sky`, and `DocsTheme.emerald`. `defaultColorMode` accepts `DocsColorMode.System`, `Light`, or `Dark`; the built-in accessible selector persists the visitor's choice and responds to operating-system changes while in System mode. Article tables of contents use the nested documentation viewport for active-section tracking, expose `aria-current="location"` on the current section, and become a compact native disclosure below the page introduction on narrower screens. Use `DocsRepository.github` for the compact GitHub repository action or `DocsRepository.link` for another repository host. + +The embedded styles expose `--docs-font-sans` and `--docs-font-mono`. They prefer Noto Sans and Noto Sans Mono with system fallbacks; hosts may self-host those fonts or override the variables. Docs-managed Datastar navigation restores color mode, scrolls documentation content to the top, and reruns Prism and Mermaid after morphing. All JavaScript string configuration is serialized before insertion into scripts. + +## Structural validation + +Navigation validation checks IDs, labels, paths, empty groups, and duplicate page routes without prescribing hierarchy. `DocsPage.validate` checks page and section structure. `DirectedGraph.validate` supports consumer-defined workflow, architecture, or navigation graphs without imposing domain depth. + +Typed targets preserve consumer destination identity while encoding query parameters and fragments: + +```fsharp +let href = + Target.create Installation + |> Target.withQuery "returnTo" "/" + |> Target.withFragment "package" + |> Target.href (function Home -> "/" | Installation -> "/installation" | RenderReference -> "/api/render") +``` + +## Local review + +This repository's `sln/src/Docs` application consumes the package directly and includes article, API-reference, canvas, component-lab, and executable-specification examples: + +```shell +cd sln +./fake.sh WatchDocs +``` diff --git a/sln/src/FSharp.ViewEngine.Docs/Registry.fs b/sln/src/FSharp.ViewEngine.Docs/Registry.fs new file mode 100644 index 0000000..b05c8e0 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Registry.fs @@ -0,0 +1,63 @@ +namespace FSharp.ViewEngine.Docs + +open System + +/// A canonical documentation page and its compatibility aliases. +type DocsRegisteredPage = + { path:string + aliases:string list + page:DocsPage } + +/// Whole-site validation across typed navigation and registered pages. +module DocsRegistry = + let private validPath (path:string) = + not (String.IsNullOrWhiteSpace path) && path.StartsWith('/') + + let validate (navigation:NavNode<'destination> list) (registered:DocsRegisteredPage list) = + let navigationPages = navigation |> NavNode.collectPages + let canonicalPaths = registered |> List.map _.path + let aliases = registered |> List.collect (fun entry -> entry.aliases |> List.map (fun alias -> alias, entry.path)) + let knownPaths = Set.ofList (canonicalPaths @ (aliases |> List.map fst)) + let navigationIds = navigationPages |> List.map NavNode.id |> Set.ofList + + let duplicate code label values = + values + |> List.countBy id + |> List.choose (fun (value, count) -> if count > 1 then Some(issue code $"Duplicate {label}: {value}.") else None) + + let registrationIssues = + registered + |> List.collect (fun entry -> + [ if not (validPath entry.path) then issue "registry.invalid-path" $"Registered path '{entry.path}' must be an absolute application path." + if not (Set.contains entry.page.activeId navigationIds) then issue "registry.unreachable-page" $"Registered page '{entry.page.activeId}' is not reachable from navigation." + for alias in entry.aliases do + if not (validPath alias) then issue "registry.invalid-alias" $"Alias '{alias}' must be an absolute application path." + if canonicalPaths |> List.contains alias then issue "registry.alias-collision" $"Alias '{alias}' collides with a canonical path." ] + @ DocsPage.validate entry.page + @ (match entry.page.pager with + | None -> [] + | Some pager -> + [ pager.previousPage; pager.nextPage ] + |> List.choose id + |> List.choose (fun link -> + if Set.contains link.href knownPaths then None + else Some(issue "registry.invalid-pager-target" $"Pager destination '{link.href}' is not registered.")))) + + let missingNavigation = + navigationPages + |> List.choose (fun node -> + match NavNode.href node with + | Some href when canonicalPaths |> List.contains href |> not -> + Some(issue "registry.missing-navigation-page" $"Navigation page '{NavNode.id node}' has no canonical registered page at '{href}'.") + | _ -> None) + + let aliasCollisions = + aliases + |> List.map fst + |> duplicate "registry.duplicate-alias" "page alias" + + Navigation.validate navigation + @ registrationIssues + @ missingNavigation + @ (canonicalPaths |> duplicate "registry.duplicate-path" "registered path") + @ aliasCollisions diff --git a/sln/src/FSharp.ViewEngine.Docs/Search.fs b/sln/src/FSharp.ViewEngine.Docs/Search.fs new file mode 100644 index 0000000..277bbe2 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Search.fs @@ -0,0 +1,92 @@ +namespace FSharp.ViewEngine.Docs + +open FSharp.ViewEngine +open System +open System.Text.Json +open type Html + +/// Consumer-provided search metadata for a documentation page. +type DocsSearchEntry = + { href:string + page:DocsPage + keywords:string list } + +/// A normalized local search result for a page or section. +type DocsSearchResult = + { title:string + description:string + href:string + keywords:string list } + +module DocsSearch = + /// Expands page entries into page and section deep-link results. + let index (entries:DocsSearchEntry list) = + entries + |> List.collect (fun entry -> + { title = entry.page.title + description = entry.page.description + href = entry.href + keywords = entry.keywords } + :: (entry.page.sections + |> List.map (fun section -> + { title = $"{entry.page.title} · {section.title}" + description = entry.page.description + href = $"{entry.href}#{section.id}" + keywords = section.title :: entry.keywords }))) + +module SearchView = + let render (results:DocsSearchResult list) = + let searchable (result:DocsSearchResult) = + String.concat " " (result.title :: result.description :: result.keywords) + |> fun value -> value.ToLowerInvariant() + + let filterScript = + "const query = evt.currentTarget.value.trim().toLowerCase(); document.querySelectorAll('[data-docs-search-entry]').forEach(entry => entry.hidden = query !== '' && !entry.dataset.docsSearchText.includes(query)); document.getElementById('docs-search-results').hidden = false" + + div { + _class "docs-search" + button { + _id "docs-search-button" + _type "button" + _ariaLabel "Search documentation" + _ariaHaspopup "dialog" + _class "docs-search-button" + _data("on:click", "document.getElementById('docs-search-dialog').showModal(); queueMicrotask(() => document.getElementById('docs-search-input').focus())") + span { "Search" } + kbd { "Ctrl+K" } + } + dialog { + _id "docs-search-dialog" + _ariaLabel "Search documentation" + _class "docs-search-dialog" + _data("on:click", "evt.target === evt.currentTarget && evt.currentTarget.close()") + div { + _class "docs-search-panel" + div { + _class "docs-search-field" + input { + _id "docs-search-input" + _type "search" + _placeholder "Search pages and headings" + _autocomplete "off" + _data("on:input", filterScript) + } + button { _type "button"; _ariaLabel "Close search"; _data("on:click", "document.getElementById('docs-search-dialog').close(); document.getElementById('docs-search-button').focus()"); "Close" } + } + div { + _id "docs-search-results" + _class "docs-search-results" + for result in results do + a { + _href result.href + _data("docs-search-entry", "true") + _data("docs-search-text", searchable result) + _data("on:click", "document.getElementById('docs-search-dialog').close()") + strong { result.title } + span { result.description } + } + } + } + } + script { raw "window.addEventListener('keydown', event => { if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') { event.preventDefault(); document.getElementById('docs-search-dialog')?.showModal(); queueMicrotask(() => document.getElementById('docs-search-input')?.focus()); } });" } + } diff --git a/sln/src/FSharp.ViewEngine.Docs/SequenceDiagram.fs b/sln/src/FSharp.ViewEngine.Docs/SequenceDiagram.fs new file mode 100644 index 0000000..7926e78 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/SequenceDiagram.fs @@ -0,0 +1,141 @@ +namespace FSharp.ViewEngine.Docs + +open System +open System.Text +open System.Text.RegularExpressions + +module SequenceDiagram = + type Participant = + private + | Participant of id:string * label:string + + type Branch = + private + | Branch of label:string * steps:Step list + + and Step = + private + | Message of sender:Participant * receiver:Participant * text:string * isReply:bool + | Optional of label:string * steps:Step list + | Alternatives of Branch list + | Loop of label:string * steps:Step list + + type Diagram = + private + | Diagram of participants:Participant list * steps:Step list + + let private participantId (Participant(id, _)) = id + let private participantLabel (Participant(_, label)) = label + + let private requireSingleLine name (value:string) = + if String.IsNullOrWhiteSpace value then + invalidArg name $"{name} cannot be empty." + + if value.Contains('\n') || value.Contains('\r') then + invalidArg name $"{name} must be a single line." + + let participant (id:string) (label:string) = + requireSingleLine (nameof id) id + requireSingleLine (nameof label) label + + if not (Regex.IsMatch(id, "^[A-Za-z][A-Za-z0-9_]*$")) then + invalidArg (nameof id) $"Invalid Mermaid participant ID: {id}." + + Participant(id, label) + + let call sender receiver text = + requireSingleLine (nameof text) text + Message(sender, receiver, text, false) + + let reply sender receiver text = + requireSingleLine (nameof text) text + Message(sender, receiver, text, true) + + let optional label steps = + requireSingleLine (nameof label) label + Optional(label, steps) + + let branch label steps = + requireSingleLine (nameof label) label + Branch(label, steps) + + let alternatives branches = + match branches with + | [] -> invalidArg (nameof branches) "An alternative requires at least one branch." + | _ -> Alternatives branches + + let loop label steps = + requireSingleLine (nameof label) label + Loop(label, steps) + + let private validateReferences participants steps = + let participantIds = participants |> List.map participantId |> Set.ofList + + let validateParticipant participant = + let id = participantId participant + + if not (Set.contains id participantIds) then + invalidArg (nameof steps) $"Sequence step references undeclared participant: {id}." + + let rec validateStep step = + match step with + | Message(sender, receiver, _, _) -> + validateParticipant sender + validateParticipant receiver + | Optional(_, nestedSteps) + | Loop(_, nestedSteps) -> nestedSteps |> List.iter validateStep + | Alternatives branches -> + branches + |> List.iter (fun (Branch(_, nestedSteps)) -> nestedSteps |> List.iter validateStep) + + steps |> List.iter validateStep + + let sequence participants steps = + let duplicateParticipant = + participants + |> List.groupBy participantId + |> List.tryFind (fun (_, matches) -> List.length matches > 1) + + match duplicateParticipant with + | Some(id, _) -> invalidArg (nameof participants) $"Duplicate Mermaid participant ID: {id}." + | None -> () + + validateReferences participants steps + Diagram(participants, steps) + + let render (Diagram(participants, steps)) = + let output = StringBuilder("sequenceDiagram\n autonumber") + + let appendLine indentation (text:string) = + output.Append('\n').Append(String(' ', indentation * 4)).Append(text) |> ignore + + for diagramParticipant in participants do + appendLine 1 $"participant {participantId diagramParticipant} as {participantLabel diagramParticipant}" + + if not (List.isEmpty steps) then + output.AppendLine().AppendLine() |> ignore + + let rec renderStep indentation step = + match step with + | Message(sender, receiver, text, isReply) -> + let arrow = if isReply then "-->>" else "->>" + appendLine indentation $"{participantId sender}{arrow}{participantId receiver}: {text}" + | Optional(label, nestedSteps) -> + appendLine indentation $"opt {label}" + nestedSteps |> List.iter (renderStep (indentation + 1)) + appendLine indentation "end" + | Loop(label, nestedSteps) -> + appendLine indentation $"loop {label}" + nestedSteps |> List.iter (renderStep (indentation + 1)) + appendLine indentation "end" + | Alternatives branches -> + branches + |> List.iteri (fun index (Branch(label, nestedSteps)) -> + let keyword = if index = 0 then "alt" else "else" + appendLine indentation $"{keyword} {label}" + nestedSteps |> List.iter (renderStep (indentation + 1))) + + appendLine indentation "end" + + steps |> List.iter (renderStep 1) + output.ToString() diff --git a/sln/src/FSharp.ViewEngine.Docs/Story.fs b/sln/src/FSharp.ViewEngine.Docs/Story.fs new file mode 100644 index 0000000..ad57759 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Story.fs @@ -0,0 +1,53 @@ +namespace FSharp.ViewEngine.Docs + +open FSharp.ViewEngine +open type Html + +type DocsViewport = + | Mobile + | Tablet + | Desktop + +module DocsViewport = + let value = function Mobile -> "mobile" | Tablet -> "tablet" | Desktop -> "desktop" + +[] +type DocsStory = + { id:string + title:string + language:string + source:string + preview:HtmlElement + viewports:DocsViewport list + themes:DocsColorMode list + states:string list } + +type DocsVersion = + { label:string + href:string } + +module StoryView = + let catalog stories = + div { + _class "docs-story-catalog" + for story in stories do + section { + _data("docs-story", story.id) + _data("docs-viewports", story.viewports |> List.map DocsViewport.value |> String.concat " ") + _data("docs-themes", story.themes |> List.map DocsColorMode.value |> String.concat " ") + _data("docs-states", story.states |> String.concat " ") + Example.codeFirst story.id story.title story.language story.source story.preview + } + } + + let versionSelector current versions = + nav { + _ariaLabel "Documentation version" + _class "docs-version-selector" + for version in versions do + a { + _href version.href + if version.label = current then _ariaCurrent "page" + version.label + } + } diff --git a/sln/src/FSharp.ViewEngine.Docs/Target.fs b/sln/src/FSharp.ViewEngine.Docs/Target.fs new file mode 100644 index 0000000..f300f0a --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Target.fs @@ -0,0 +1,56 @@ +namespace FSharp.ViewEngine.Docs + +open System + +[] +type Target<'destination> = + private + { destination:'destination + query:(string * string) list + fragment:string option } + +module Target = + let create destination = + { destination = destination + query = [] + fragment = None } + + let destination target = target.destination + + let query target = target.query + + let fragment target = target.fragment + + let withQuery (name:string) (value:string) target = + if String.IsNullOrWhiteSpace name then + invalidArg (nameof name) "Query parameter names cannot be empty." + + let value = if isNull value then "" else value + let remaining = target.query |> List.filter (fst >> ((<>) name)) + { target with query = remaining @ [ name, value ] } + + let withFragment (fragment:string) target = + if String.IsNullOrWhiteSpace fragment then + invalidArg (nameof fragment) "Fragments cannot be empty." + + { target with fragment = Some fragment } + + let href route target = + let path = route target.destination + + if String.IsNullOrWhiteSpace path then + invalidArg (nameof route) "Destination routes cannot be empty." + + let query = + target.query + |> List.map (fun (name, value) -> $"{Uri.EscapeDataString name}={Uri.EscapeDataString value}") + |> function + | [] -> "" + | values -> "?" + String.concat "&" values + + let fragment = + target.fragment + |> Option.map (Uri.EscapeDataString >> (+) "#") + |> Option.defaultValue "" + + path + query + fragment diff --git a/sln/src/FSharp.ViewEngine.Docs/ValidationIssue.fs b/sln/src/FSharp.ViewEngine.Docs/ValidationIssue.fs new file mode 100644 index 0000000..5a38126 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/ValidationIssue.fs @@ -0,0 +1,12 @@ +namespace FSharp.ViewEngine.Docs + +[] +type ValidationIssue = + { code:string + message:string } + +[] +module internal ValidationIssueHelpers = + let issue code message = + { code = code + message = message } diff --git a/sln/src/FSharp.ViewEngine.Docs/View.fs b/sln/src/FSharp.ViewEngine.Docs/View.fs new file mode 100644 index 0000000..ce0f718 --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/View.fs @@ -0,0 +1,928 @@ +namespace FSharp.ViewEngine.Docs + +open FSharp.ViewEngine +open System +open System.Text.Json +open type Html + +/// Runtime and head assets used by the documentation document shell. +[] +type DocsAssets = + { productStylesheets:string list + prismStylesheet:string option + prismScripts:string list + mermaidScript:string option + datastarScript:string option + mermaidSecurityLevel:string + nonce:string option + additionalHead:HtmlElement list } + +module DocsAssets = + let defaults = + { productStylesheets = [ "/css/compiled.css" ] + prismStylesheet = Some "/css/prism-tomorrow.1.29.0.min.css" + prismScripts = + [ "/scripts/prism.1.29.0.min.js" + "/scripts/prism-fsharp.1.29.0.min.js" + "/scripts/prism-sql.1.29.0.min.js" ] + mermaidScript = Some "/scripts/mermaid.11.16.0.min.js" + datastarScript = Some "/scripts/datastar.1.0.2.js" + mermaidSecurityLevel = "antiscript" + nonce = None + additionalHead = [] } + +/// Semantic accent colors and browser theme color for the documentation shell. +type DocsTheme = + { accent50:string + accent100:string + accent500:string + accent700:string + accent900:string + themeColor:string } + +/// An optional repository action displayed in the documentation header. +[] +type DocsRepository = + | GitHubRepository of url:string + | RepositoryLink of label:string * url:string + +module DocsRepository = + let github url = GitHubRepository url + let link label url = RepositoryLink(label, url) + +module DocsTheme = + let amber = + { accent50 = "#fffbeb" + accent100 = "#fef3c7" + accent500 = "#f59e0b" + accent700 = "#b45309" + accent900 = "#78350f" + themeColor = "#fafafa" } + + let sky = + { accent50 = "#f0f9ff" + accent100 = "#e0f2fe" + accent500 = "#0ea5e9" + accent700 = "#0369a1" + accent900 = "#0c4a6e" + themeColor = "#fafafa" } + + let emerald = + { accent50 = "#ecfdf5" + accent100 = "#d1fae5" + accent500 = "#10b981" + accent700 = "#047857" + accent900 = "#064e3b" + themeColor = "#fafafa" } + +/// Consumer-owned branding, navigation, theme, assets, and typed destinations for a documentation site. +[] +type DocsSite<'destination> = + { name:string + baseUrl:string option + description:string option + repository:DocsRepository option + brandMark:HtmlElement + homeId:string + navigation:NavNode<'destination> list + storageKey:string + defaultColorMode:DocsColorMode + theme:DocsTheme + assets:DocsAssets + search:DocsSearchResult list } + +module private Icons = + let menu = + raw """""" + + let close = + raw """""" + + let chevron = + raw """""" + + let breadcrumbChevron = + raw """""" + + let ellipsis = + raw """""" + + let github = + raw """""" + + let sun = + raw """""" + + let moon = + raw """""" + + let monitor = + raw """""" + + let check = + raw """""" + +module private ViewHelpers = + let signalName (id:string) = + let token = + id + |> Seq.map (fun character -> if Char.IsLetterOrDigit character then character else '_') + |> Seq.toArray + |> String + token + "Open" + + let jsString (value:string) = JsonSerializer.Serialize(value) + + let navigateAction href = + let encoded = jsString href + $"if (!evt.metaKey && !evt.ctrlKey && !evt.shiftKey && !evt.altKey && evt.button === 0) {{ evt.preventDefault(); $sideNavOpen = false; $breadcrumbMenuOpen = false; window.fsharpDocsNavigation?.begin(); window.history.pushState(null, '', {encoded}); @get({encoded}) }}" + + let themeStyle theme = + $"--spec-accent-50:{theme.accent50};--spec-accent-100:{theme.accent100};--spec-accent-500:{theme.accent500};--spec-accent-700:{theme.accent700};--spec-accent-900:{theme.accent900}" + +module MermaidView = + let diagram source = + div { _class "mermaid spec-diagram"; raw source } + + let c4Diagram source = + div { _class "mermaid spec-diagram spec-c4-diagram"; raw source } + +module private DocsBlockView = + let rec private renderInline value = + match value with + | InlineText text -> text |> Html.text + | InlineCode source -> code { source } + | InlineLink(label, href) -> a { _href href; _class "spec-content-link"; label } + | InlineStrong content -> strong { for child in content do renderInline child } + | InlineEmphasis content -> em { for child in content do renderInline child } + + let render block = + match block with + | Paragraph text -> p { _class "spec-paragraph"; text } + | RichParagraph content -> p { _class "spec-paragraph"; for child in content do renderInline child } + | Bullets items -> + ul { _class "spec-bullets"; for item in items do li { item } } + | RichBullets(ordered, items) -> + if ordered then ol { _class "spec-bullets"; for item in items do li { for child in item do renderInline child } } + else ul { _class "spec-bullets"; for item in items do li { for child in item do renderInline child } } + | Table(headers, rows) -> + div { + _class "spec-table-wrap" + table { + _class "spec-table" + thead { tr { for header in headers do th { header } } } + tbody { for row in rows do tr { for cell in row do td { cell } } } + } + } + | RichTable(headers, rows) -> + div { + _class "spec-table-wrap" + table { + _class "spec-table" + thead { tr { for header in headers do th { for child in header do renderInline child } } } + tbody { for row in rows do tr { for cell in row do td { for child in cell do renderInline child } } } + } + } + | Code(language, source) -> + let normalized = if String.IsNullOrWhiteSpace language then "text" else language.Trim().ToLowerInvariant() + let prismLanguage = if normalized = "fs" then "fsharp" else normalized + CopyableCode.render ($"spec-code language-{prismLanguage}") ($"language-{prismLanguage}") "code" source + | Diagram source -> MermaidView.diagram source + | C4Diagram source -> MermaidView.c4Diagram source + | Sequence diagram -> diagram |> SequenceDiagram.render |> MermaidView.diagram + | Callout(label, text) -> + div { + _class "spec-callout" + div { _class "spec-callout-label"; label } + p { _class "spec-callout-text"; text } + } + | RichCallout(label, content) -> + div { + _class "spec-callout" + div { _class "spec-callout-label"; for child in label do renderInline child } + p { _class "spec-callout-text"; for child in content do renderInline child } + } + | Custom element -> element + +module private DocsSectionView = + let render (docSection:DocsSection) = + section { + div { + _id docSection.id + _class "spec-section-anchor" + _tabindex -1 + let classes = $"spec-section-title spec-section-title-level-{docSection.level}" + if docSection.level <= 2 then h2 { _class classes; docSection.title } + elif docSection.level = 3 then h3 { _class classes; docSection.title } + else h4 { _class classes; docSection.title } + } + div { _class "spec-section-blocks"; for block in docSection.blocks do DocsBlockView.render block } + } + +module private ColorModeView = + let private optionKeydown = + """if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(evt.key)) { evt.preventDefault(); const items = [...document.querySelectorAll('#spec-color-mode-menu [role=menuitemradio]')]; const current = items.indexOf(evt.currentTarget); const next = evt.key === 'Home' ? 0 : evt.key === 'End' ? items.length - 1 : (current + (evt.key === 'ArrowDown' ? 1 : -1) + items.length) % items.length; items[next]?.focus(); } else if (evt.key === 'Escape') { evt.preventDefault(); $colorModeMenuOpen = false; document.getElementById('spec-color-mode-button')?.focus(); } else if (evt.key === 'Tab') { $colorModeMenuOpen = false; }""" + + let private option (defaultMode:DocsColorMode) (mode:DocsColorMode) (label:string) (icon:HtmlElement) = + let value = DocsColorMode.value mode + let isDefault = mode = defaultMode + button { + _type "button" + _role "menuitemradio" + _tabindex -1 + _ariaChecked isDefault + _data("attr:aria-checked", $"$colorMode === '{value}' ? 'true' : 'false'") + _data("attr:data-selected", $"$colorMode === '{value}' ? 'true' : 'false'") + _data("on:click", $"$colorMode = '{value}'; $colorModeMenuOpen = false; document.getElementById('spec-color-mode-button')?.focus()") + _data("on:keydown", optionKeydown) + _class "spec-color-mode-option" + span { _class "spec-color-mode-option-icon"; icon } + span { _class "spec-color-mode-option-label"; label } + span { _class "spec-color-mode-check"; Icons.check } + } + + let render defaultMode = + div { + _class "spec-color-mode" + _data("on:click__outside", "$colorModeMenuOpen = false") + button { + _id "spec-color-mode-button" + _type "button" + _ariaLabel "Choose color theme" + _ariaHaspopup "menu" + _ariaControls "spec-color-mode-menu" + _data("attr:aria-expanded", "$colorModeMenuOpen ? 'true' : 'false'") + _data("on:click", "$colorModeMenuOpen = !$colorModeMenuOpen; if ($colorModeMenuOpen) queueMicrotask(() => document.querySelector('#spec-color-mode-menu [data-selected=true]')?.focus())") + _data("on:keydown", "if (evt.key === 'ArrowDown' || evt.key === 'ArrowUp') { evt.preventDefault(); $colorModeMenuOpen = true; queueMicrotask(() => { const items = [...document.querySelectorAll('#spec-color-mode-menu [role=menuitemradio]')]; (evt.key === 'ArrowDown' ? items[0] : items[items.length - 1])?.focus(); }); }") + _class "spec-icon-button spec-color-mode-button" + span { _class "spec-color-mode-icon spec-color-mode-icon-light"; Icons.sun } + span { _class "spec-color-mode-icon spec-color-mode-icon-dark"; Icons.moon } + } + div { + _id "spec-color-mode-menu" + _role "menu" + _ariaLabel "Color theme" + _class "spec-color-mode-menu" + _data("show", "$colorModeMenuOpen") + _style "display:none" + option defaultMode System "System" Icons.monitor + option defaultMode Light "Light" Icons.sun + option defaultMode Dark "Dark" Icons.moon + } + } + +module private RepositoryView = + let render = function + | GitHubRepository url -> + a { + _href url + _ariaLabel "View repository on GitHub" + _title "View repository on GitHub" + _class "spec-repository spec-icon-button" + Icons.github + } + | RepositoryLink(label, url) -> a { _href url; _class "spec-repository spec-repository-link"; label } + +module private NavigationView = + open ViewHelpers + + let rec node activeId (navNode:NavNode<'destination>) = + let isActive = NavNode.id navNode = activeId + li { + match navNode with + | Group group -> + let signal = signalName group.id + let containsActive = NavNode.containsActive activeId navNode + button { + _id $"nav-{group.id}" + _type "button" + _ariaLabel $"Toggle {group.label} section" + _ariaControls $"nav-children-{group.id}" + _data("attr:aria-expanded", $"${signal} ? 'true' : 'false'") + _data("on:click", $"${signal} = !${signal}") + _data("active", containsActive.ToString().ToLowerInvariant()) + _class "spec-nav-group-button" + span { _class "spec-nav-label"; group.label } + span { + _class "spec-nav-chevron" + _data("attr:data-open", $"${signal} ? 'true' : 'false'") + Icons.chevron + } + } + ul { + _id $"nav-children-{group.id}" + _class "spec-nav-children" + _data("show", $"${signal}") + if not (group.defaultOpen || containsActive) then _style "display:none" + for child in group.children do node activeId child + } + | Page page -> + a { + _id $"nav-{page.id}" + _href page.href + _data("on:click", navigateAction page.href) + _data("selected", isActive.ToString().ToLowerInvariant()) + if isActive then _ariaCurrent "page" + _class "spec-nav-link" + page.label + } + } + + let sideNav (site:DocsSite<'destination>) activeId = + aside { + _id "side-nav" + _class "spec-side-nav spec-hidden" + _ariaLabel "Documentation navigation" + _data("class:spec-hidden", "!$sideNavOpen") + div { + _class "spec-side-nav-inner" + div { + _class "spec-brand" + div { _class "spec-brand-mark"; site.brandMark } + div { _class "spec-brand-name"; site.name } + div { _class "spec-grow" } + button { + _type "button" + _ariaLabel "Close navigation" + _class "spec-nav-close" + _data("on:click", "$sideNavOpen = false; window.fsharpDocsMobileNav.close()") + Icons.close + } + } + nav { + _ariaLabel "Documentation" + _class "spec-nav-scroll" + ul { _class "spec-nav-list"; for section in site.navigation do node activeId section } + } + } + } + + let topNav (site:DocsSite<'destination>) activeId = + let breadcrumbs: Breadcrumb list = Navigation.breadcrumbs site.navigation site.homeId activeId + let hiddenCount = if breadcrumbs.Length > 2 then breadcrumbs.Length - 1 else 0 + let hiddenBreadcrumbs = breadcrumbs |> List.take hiddenCount + + header { + _class "spec-top-nav" + div { + _class "spec-top-left" + button { + _type "button" + _ariaLabel "Open navigation" + _ariaControls "side-nav" + _data("attr:aria-expanded", "$sideNavOpen ? 'true' : 'false'") + _class "spec-nav-open" + _data("on:click", "$sideNavOpen = true; window.fsharpDocsMobileNav.open(evt.currentTarget)") + Icons.menu + } + nav { + _ariaLabel "Breadcrumb" + _class "spec-breadcrumbs" + ol { + _role "list" + _class "spec-breadcrumb-list" + if not hiddenBreadcrumbs.IsEmpty then + li { + _class "spec-breadcrumb-menu-wrap" + button { + _type "button" + _ariaLabel "Show hidden breadcrumbs" + _ariaControls "spec-breadcrumb-menu" + _data("attr:aria-expanded", "$breadcrumbMenuOpen ? 'true' : 'false'") + _data("on:click", "$breadcrumbMenuOpen = !$breadcrumbMenuOpen") + _class "spec-breadcrumb-menu-button" + Icons.ellipsis + } + div { + _id "spec-breadcrumb-menu" + _class "spec-breadcrumb-menu" + _data("show", "$breadcrumbMenuOpen") + _style "display:none" + for crumb in hiddenBreadcrumbs do + match crumb.href with + | Some href -> a { _href href; _data("on:click", navigateAction href); crumb.label } + | None -> span { crumb.label } + } + } + for index, crumb in List.indexed breadcrumbs do + let isCurrent = index = breadcrumbs.Length - 1 + let hiddenOnMobile = index < hiddenCount + if index > 0 then + li { _class (if hiddenOnMobile then "spec-breadcrumb-separator spec-mobile-hidden" else "spec-breadcrumb-separator"); Icons.breadcrumbChevron } + li { + _class (if hiddenOnMobile then "spec-breadcrumb spec-mobile-hidden" else "spec-breadcrumb") + match crumb.href with + | Some href when not isCurrent -> a { _href href; _data("on:click", navigateAction href); crumb.label } + | _ -> + span { + if isCurrent then _ariaCurrent "page" + crumb.label + } + } + } + } + } + div { + _class "spec-top-actions" + if not site.search.IsEmpty then SearchView.render site.search + ColorModeView.render site.defaultColorMode + match site.repository with + | Some repository -> RepositoryView.render repository + | None -> () + } + } + +type private TocItem = + { level:int + label:string + href:string } + +module private TocView = + let private links (className:string) items = + nav { + _ariaLabel "On this page" + _class className + for item in items do + a { + _href item.href + _data("on:click", "window.fsharpDocsNavigation.navigateToFragment(evt, evt.currentTarget.getAttribute('href'))") + _class (if item.level <= 2 then "" else $"spec-toc-level-{item.level}") + item.label + } + } + + let desktop (items:TocItem list) = + aside { + _class "spec-toc" + div { + _class "spec-toc-inner" + div { _class "spec-toc-title"; "On this page" } + links "spec-toc-nav" items + } + } + + let mobile (items:TocItem list) = + details { + _class "spec-mobile-toc" + _ariaLabel "On this page" + summary { "On this page" } + links "spec-mobile-toc-nav" items + } + +module private PagerView = + open ViewHelpers + + let private renderLink (direction:string) (relation:string) (className:string) (link:DocsPageLink) = + a { + _rel relation + _href link.href + _data("on:click", navigateAction link.href) + _class $"spec-pager-link {className}" + span { + _class "spec-pager-direction" + if relation = "prev" then + span { _class "spec-pager-arrow spec-pager-arrow-previous"; Icons.chevron } + span { direction } + if relation = "next" then + span { _class "spec-pager-arrow"; Icons.chevron } + } + span { _class "spec-pager-title"; link.label } + } + + let render (pager:DocsPager) = + nav { + _ariaLabel "Page navigation" + _class "spec-page-pager" + match pager.previousPage with + | Some previousPage -> renderLink "Previous" "prev" "spec-pager-previous" previousPage + | None -> () + match pager.nextPage with + | Some nextPage -> renderLink "Next" "next" "spec-pager-next" nextPage + | None -> () + } + +module DocsView = + open ViewHelpers + + let private tocItems (page:DocsPage) : TocItem list = + page.sections + |> List.map (fun section -> { level = section.level; label = section.title; href = $"#{section.id}" }) + + let content (page:DocsPage) = + div { + _class "spec-page-body" + match page.heading with + | Visible -> + section { + match page.headingAdornment with + | Some adornment -> adornment + | None -> () + h1 { _class "spec-page-heading"; page.title } + if page.metadata.version.IsSome || page.metadata.deprecated then + div { + _class "docs-page-badges" + match page.metadata.version with + | Some version -> span { _class "docs-page-badge"; _data("docs-version", version); version } + | None -> () + if page.metadata.deprecated then span { _class "docs-page-badge docs-page-badge-warning"; _data("docs-deprecated", "true"); "Deprecated" } + } + if not (String.IsNullOrWhiteSpace page.description) then + p { _class "spec-page-description"; page.description } + if page.metadata.lastUpdated.IsSome || page.metadata.editUrl.IsSome then + div { + _class "docs-page-maintenance" + match page.metadata.lastUpdated with + | Some lastUpdated -> span { "Last updated "; time { _datetime lastUpdated; lastUpdated } } + | None -> () + match page.metadata.editUrl with + | Some editUrl -> a { _href editUrl; "Edit this page" } + | None -> () + } + } + | VisuallyHidden -> h1 { _class "spec-heading-visually-hidden"; page.title } + let items = tocItems page + match page.rightRail with + | TableOfContents when not items.IsEmpty -> TocView.mobile items + | _ -> () + for section in page.sections do DocsSectionView.render section + match page.pager with + | Some pager -> PagerView.render pager + | None -> () + } + + let sideNav (site:DocsSite<'destination>) (page:DocsPage) = NavigationView.sideNav site page.activeId + + let pageContent (site:DocsSite<'destination>) (page:DocsPage) = + let items = tocItems page + let layoutClass = + match page.layout with + | Article -> "docs-article-layout" + | Reference -> "docs-reference-layout" + | Canvas -> "docs-canvas-layout" + + div { + _id "page-content" + _class "spec-page-content" + NavigationView.topNav site page.activeId + div { + _class "spec-page-viewport" + div { + _class $"spec-page-layout {layoutClass}" + main { + _id "main-content" + _class "spec-main" + _tabindex -1 + div { _class "spec-main-inner"; content page } + } + match page.rightRail with + | TableOfContents when not items.IsEmpty -> TocView.desktop items + | TableOfContents -> () + | NoRail -> () + | CustomRail rail -> + aside { + _class "docs-custom-rail" + div { _class "docs-custom-rail-inner"; rail } + } + } + } + } + + let page (site:DocsSite<'destination>) (docPage:DocsPage) = + div { + _id "page" + _class "spec-shell" + a { _href "#main-content"; _class "docs-skip-link"; "Skip to main content" } + button { + _type "button" + _ariaLabel "Close navigation overlay" + _class "spec-overlay spec-hidden" + _data("class:spec-hidden", "!$sideNavOpen") + _data("on:click", "$sideNavOpen = false; window.fsharpDocsMobileNav.close()") + } + sideNav site docPage + pageContent site docPage + } + + let document (site:DocsSite<'destination>) (docPage:DocsPage) = + let blocks = docPage.sections |> List.collect _.blocks + let needsPrism = blocks |> List.exists (function | Code _ -> true | _ -> false) + let needsMermaid = blocks |> List.exists (function | Diagram _ | C4Diagram _ | Sequence _ -> true | _ -> false) + let pageHref = + site.navigation + |> NavNode.collectPages + |> List.tryFind (NavNode.id >> (=) docPage.activeId) + |> Option.bind NavNode.href + + let canonicalUrl = + match docPage.metadata.canonicalUrl with + | Some url -> Some url + | None -> + match site.baseUrl, pageHref with + | Some baseUrl, Some href -> Some(baseUrl.TrimEnd('/') + href) + | _ -> None + + let navGroups = NavNode.collectGroups site.navigation + let navSignals = + navGroups + |> List.map (fun node -> + let signal = signalName (NavNode.id node) + let shouldOpen = NavNode.defaultOpen node || NavNode.containsActive docPage.activeId node + let containsActive = NavNode.containsActive docPage.activeId node + $"{signal}: window.fsharpDocsNav.initial({jsString (NavNode.id node)}, {shouldOpen.ToString().ToLowerInvariant()}, {containsActive.ToString().ToLowerInvariant()})") + + let signals = "{ sideNavOpen: false, breadcrumbMenuOpen: false, colorModeMenuOpen: false, colorMode: window.fsharpDocsColorMode.current()" + (if navSignals.IsEmpty then "" else ", " + String.concat ", " navSignals) + " }" + let navState = + navGroups + |> List.map (fun node -> $"{jsString (NavNode.id node)}: ${signalName (NavNode.id node)}") + |> String.concat ", " + |> fun properties -> $"{{ {properties} }}" + + let mermaidSecurity = jsString site.assets.mermaidSecurityLevel + let storageKey = jsString site.storageKey + let colorModeStorageKey = jsString $"{site.storageKey}-color-mode" + let defaultColorMode = site.defaultColorMode |> DocsColorMode.value |> jsString + let colorModeScript = + """ +(() => { + const validModes = new Set(['system', 'light', 'dark']); + const media = window.matchMedia('(prefers-color-scheme: dark)'); + window.fsharpDocsColorMode = { + storageKey: __STORAGE_KEY__, + defaultMode: __DEFAULT_MODE__, + current() { + try { + const stored = window.localStorage.getItem(this.storageKey); + return validModes.has(stored) ? stored : this.defaultMode; + } catch { return this.defaultMode; } + }, + apply(mode) { + const selected = validModes.has(mode) ? mode : this.defaultMode; + const dark = selected === 'dark' || (selected === 'system' && media.matches); + document.documentElement.classList.toggle('dark', dark); + document.documentElement.dataset.colorMode = selected; + return selected; + }, + set(mode) { + const selected = this.apply(mode); + try { window.localStorage.setItem(this.storageKey, selected); } catch {} + window.dispatchEvent(new CustomEvent('fsharpdocs:colormode', { detail: { mode: selected } })); + return selected; + } + }; + window.fsharpDocsColorMode.apply(window.fsharpDocsColorMode.current()); + media.addEventListener?.('change', () => { + if (window.fsharpDocsColorMode.current() === 'system') { + window.fsharpDocsColorMode.apply('system'); + window.dispatchEvent(new CustomEvent('fsharpdocs:colormode', { detail: { mode: 'system' } })); + } + }); + window.addEventListener('storage', event => { + if (event.key === window.fsharpDocsColorMode.storageKey) { + window.fsharpDocsColorMode.apply(window.fsharpDocsColorMode.current()); + window.dispatchEvent(new CustomEvent('fsharpdocs:colormode')); + } + }); +})(); + """ + |> fun source -> source.Replace("__STORAGE_KEY__", colorModeStorageKey).Replace("__DEFAULT_MODE__", defaultColorMode) + + let mermaidInitialization = + """ +let mermaidRenderQueue = Promise.resolve(); +window.renderMermaid = (el) => { + const render = async () => { + const nodes = el?.matches?.('.mermaid') ? [el] : Array.from(el?.querySelectorAll?.('.mermaid') ?? []); + if (nodes.length === 0 || !window.mermaid) return; + for (const node of nodes) { + if (!node.dataset.mermaidSource) node.dataset.mermaidSource = node.textContent; + node.textContent = node.dataset.mermaidSource; + node.removeAttribute('data-processed'); + } + window.mermaid.initialize({ startOnLoad: false, theme: document.documentElement.classList.contains('dark') ? 'dark' : 'neutral', securityLevel: __SECURITY__ }); + await window.mermaid.run({ nodes }); + for (const node of nodes) { + for (const link of node.querySelectorAll('svg a')) { + const href = link.getAttribute('href') ?? link.getAttribute('xlink:href'); + if (!href?.startsWith('/')) continue; + const encodedHref = JSON.stringify(href); + link.setAttribute('data-on:click', `if (!evt.metaKey && !evt.ctrlKey && !evt.shiftKey && !evt.altKey && evt.button === 0) { evt.preventDefault(); $sideNavOpen = false; $breadcrumbMenuOpen = false; window.fsharpDocsNavigation?.begin(); window.history.pushState(null, '', ${encodedHref}); @get(${encodedHref}) }`); + } + } + }; + mermaidRenderQueue = mermaidRenderQueue.then(render, render); + return mermaidRenderQueue; +}; +window.addEventListener('fsharpdocs:colormode', () => window.renderMermaid?.(document)); + """ + |> fun source -> source.Replace("__SECURITY__", mermaidSecurity) + + let navigationScript = + """ +window.renderDocsPreview = (el) => { + for (const frame of el?.querySelectorAll?.('iframe[data-docs-preview-src]') ?? []) { + if (!frame.getAttribute('src')) frame.setAttribute('src', frame.dataset.docsPreviewSrc); + } + return window.renderMermaid?.(el); +}; +window.fsharpDocsCopy = async button => { + const source = button.closest('.docs-copyable-code')?.querySelector('[data-docs-copy-source]')?.textContent ?? ''; + const label = button.querySelector('[data-docs-copy-label]'); + try { + await navigator.clipboard.writeText(source); + if (label) label.textContent = 'Copied'; + button.dataset.copied = 'true'; + } catch { + if (label) label.textContent = 'Copy failed'; + button.dataset.copyError = 'true'; + } + window.setTimeout(() => { + if (label) label.textContent = 'Copy'; + delete button.dataset.copied; + delete button.dataset.copyError; + }, 1600); +}; +window.fsharpDocsNav = { + storageKey: __STORAGE_KEY__, + read() { + try { + const value = window.localStorage.getItem(this.storageKey); + return value === null ? null : new Set(JSON.parse(value)); + } catch { return null; } + }, + initial(id, fallback, containsActive) { + const stored = this.read(); + return stored === null ? fallback : containsActive || stored.has(id); + }, + save(state) { + try { + const expanded = Object.entries(state).filter(([, value]) => value).map(([id]) => id); + window.localStorage.setItem(this.storageKey, JSON.stringify(expanded)); + } catch {} + } +}; +window.fsharpDocsNavigation = { + pending: false, + begin() { this.pending = true; }, + observer: null, + scrollRoot: null, + scrollHandler: null, + setCurrentFragment(id) { + for (const link of document.querySelectorAll('.spec-toc-nav a[href^="#"], .spec-mobile-toc-nav a[href^="#"]')) { + if (link.getAttribute('href') === `#${id}`) link.setAttribute('aria-current', 'location'); + else link.removeAttribute('aria-current'); + } + }, + initializeToc() { + this.observer?.disconnect(); + if (this.scrollRoot && this.scrollHandler) this.scrollRoot.removeEventListener('scroll', this.scrollHandler); + const root = document.querySelector('.spec-main'); + const links = Array.from(document.querySelectorAll('.spec-toc-nav a[href^="#"]')); + const sections = links.map(link => document.getElementById(decodeURIComponent(link.hash.slice(1)))).filter(Boolean); + if (!root || sections.length === 0) return; + const update = () => { + const rootTop = root.getBoundingClientRect().top; + const atEnd = root.scrollTop + root.clientHeight >= root.scrollHeight - 2; + const current = atEnd ? sections.at(-1) : (sections.filter(section => section.getBoundingClientRect().top <= rootTop + 160).at(-1) ?? sections[0]); + this.setCurrentFragment(current.id); + }; + this.observer = new IntersectionObserver(update, { root, rootMargin: '-96px 0px -65% 0px', threshold: [0, 1] }); + for (const section of sections) this.observer.observe(section); + this.scrollRoot = root; + this.scrollHandler = update; + root.addEventListener('scroll', update, { passive: true }); + update(); + }, + navigateToFragment(event, href) { + if (!href?.startsWith('#') || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0) return; + const target = document.getElementById(decodeURIComponent(href.slice(1))); + if (!target) return; + event.preventDefault(); + window.history.pushState(null, '', href); + target.scrollIntoView({ block: 'start' }); + target.focus({ preventScroll: true }); + event.currentTarget.closest('details')?.removeAttribute('open'); + this.setCurrentFragment(target.id); + }, + async complete() { + window.fsharpDocsColorMode?.apply(window.fsharpDocsColorMode.current()); + if (!this.pending) return; + this.pending = false; + for (const element of document.querySelectorAll('.spec-main, .spec-page-viewport, .spec-page-layout, .docs-custom-rail')) { + element.scrollTo({ top: 0, left: 0, behavior: 'instant' }); + } + window.scrollTo({ top: 0, left: 0, behavior: 'instant' }); + const content = document.getElementById('page-content'); + window.renderCode?.(content); + await window.renderMermaid?.(content); + this.initializeToc(); + } +}; +window.fsharpDocsMobileNav = { + opener: null, + focusable() { + const nav = document.getElementById('side-nav'); + return Array.from(nav?.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])') ?? []) + .filter(element => element.getClientRects().length > 0); + }, + open(opener) { + this.opener = opener; + const content = document.getElementById('page-content'); + content?.setAttribute('inert', ''); + requestAnimationFrame(() => document.querySelector('#side-nav .spec-nav-close')?.focus()); + }, + close() { + const content = document.getElementById('page-content'); + content?.removeAttribute('inert'); + requestAnimationFrame(() => this.opener?.focus()); + }, + trap(event) { + if (event.key !== 'Tab' || !document.getElementById('side-nav') || document.getElementById('side-nav').classList.contains('spec-hidden')) return; + const focusable = this.focusable(); + if (focusable.length === 0) return; + const first = focusable[0]; + const last = focusable[focusable.length - 1]; + if (event.shiftKey && document.activeElement === first) { + event.preventDefault(); + last.focus(); + } else if (!event.shiftKey && document.activeElement === last) { + event.preventDefault(); + first.focus(); + } + } +}; +document.addEventListener('datastar-fetch', event => { + if (event.detail?.type === 'finished') window.fsharpDocsNavigation.complete(); +}); + """ + |> fun source -> source.Replace("__STORAGE_KEY__", storageKey) + + let nonceAttribute () = + match site.assets.nonce with + | Some nonce -> _attr("nonce", nonce) + | None -> Html.EmptyAttr + + html { + _lang "en" + _style (themeStyle site.theme) + head { + meta { _charset "utf-8" } + meta { _name "viewport"; _content "width=device-width, initial-scale=1" } + meta { _name "theme-color"; _content site.theme.themeColor } + title (docPage.metadata.browserTitle |> Option.defaultValue docPage.title) + match canonicalUrl with + | Some url -> + link { _rel "canonical"; _href url } + meta { _property "og:url"; _content url } + | None -> () + let description = if String.IsNullOrWhiteSpace docPage.description then site.description else Some docPage.description + match description with + | Some value -> + meta { _name "description"; _content value } + meta { _property "og:description"; _content value } + meta { _name "twitter:description"; _content value } + | None -> () + meta { _property "og:type"; _content "website" } + meta { _property "og:site_name"; _content site.name } + meta { _property "og:title"; _content (docPage.metadata.browserTitle |> Option.defaultValue docPage.title) } + meta { _name "twitter:title"; _content (docPage.metadata.browserTitle |> Option.defaultValue docPage.title) } + match docPage.metadata.socialImage with + | Some image -> + meta { _property "og:image"; _content image } + meta { _property "og:image:alt"; _content docPage.title } + meta { _name "twitter:image"; _content image } + meta { _name "twitter:image:alt"; _content docPage.title } + meta { _name "twitter:card"; _content "summary_large_image" } + | None -> () + if docPage.metadata.noIndex then meta { _name "robots"; _content "noindex" } + script { nonceAttribute (); raw colorModeScript } + style { nonceAttribute (); raw DefaultStyles.css } + for stylesheet in site.assets.productStylesheets do link { _rel "stylesheet"; _href stylesheet } + match needsPrism, site.assets.prismStylesheet with + | true, Some stylesheet -> link { _rel "stylesheet"; _href stylesheet } + | _ -> () + if needsPrism && not site.assets.prismScripts.IsEmpty then + script { nonceAttribute (); raw "window.Prism = window.Prism || {}; window.Prism.manual = true;" } + for source in site.assets.prismScripts do script { _src source; nonceAttribute () } + script { nonceAttribute (); raw "window.renderCode = (el) => window.Prism?.highlightAllUnder?.(el ?? document);" } + match needsMermaid, site.assets.mermaidScript with + | true, Some source -> + script { _src source; nonceAttribute () } + script { nonceAttribute (); raw mermaidInitialization } + | _ -> () + script { nonceAttribute (); raw navigationScript } + match site.assets.datastarScript with + | Some source -> script { _type "module"; _src source; nonceAttribute () } + | None -> () + for element in site.assets.additionalHead do element + } + body { + _class "spec-document" + _data("signals", signals) + _data("effect", "window.fsharpDocsColorMode.set($colorMode)") + _data("on-signal-patch", $"window.fsharpDocsNav.save({navState})") + _data("on:popstate__window", "window.fsharpDocsNavigation.begin(); @get(window.location.pathname + window.location.search)") + _data("on:keydown__window", "evt.key == 'Escape' ? ($sideNavOpen = false, $breadcrumbMenuOpen = false, $colorModeMenuOpen = false, window.fsharpDocsMobileNav.close()) : window.fsharpDocsMobileNav.trap(evt)") + page site docPage + script { nonceAttribute (); raw "document.addEventListener('DOMContentLoaded', async () => { const content = document.getElementById('page-content'); await window.renderMermaid?.(content); window.renderCode?.(content); window.fsharpDocsNavigation.initializeToc(); });" } + } + } diff --git a/sln/src/FSharp.ViewEngine.Docs/Wireframe.fs b/sln/src/FSharp.ViewEngine.Docs/Wireframe.fs new file mode 100644 index 0000000..606765e --- /dev/null +++ b/sln/src/FSharp.ViewEngine.Docs/Wireframe.fs @@ -0,0 +1,166 @@ +namespace FSharp.ViewEngine.Docs + +open FSharp.ViewEngine +open System +open type Html + +[] +type WireframeState = + { id:string + label:string + content:HtmlElement } + +module Wireframe = + let browserFrame (canonicalUrl:string) (content:HtmlElement) = + div { + _class "spec-browser-frame" + _data("browser-frame", "true") + _data("browser-url", canonicalUrl) + div { + _class "spec-browser-toolbar" + div { + _class "spec-browser-dots" + span { _class "spec-browser-dot spec-browser-dot-red" } + span { _class "spec-browser-dot spec-browser-dot-amber" } + span { _class "spec-browser-dot spec-browser-dot-green" } + } + div { + _class "spec-browser-address" + if canonicalUrl.StartsWith("https://", StringComparison.OrdinalIgnoreCase) then + raw """""" + span { canonicalUrl } + } + } + content + } + + let stateTabs (id:string) (label:string) (states:WireframeState list) = + match states with + | [] -> invalidArg (nameof states) "At least one wireframe state is required." + | first :: _ -> + let token = + id + |> Seq.map (fun character -> if Char.IsLetterOrDigit character then character else '_') + |> Seq.toArray + |> String + + let signal = $"{token}State" + let tabId stateId = $"{id}-tab-{stateId}" + let panelId stateId = $"{id}-panel-{stateId}" + let focusState stateId = $"${signal} = '{stateId}', document.getElementById('{tabId stateId}').focus()" + let firstFocus = focusState first.id + let lastFocus = states |> List.last |> fun state -> focusState state.id + + div { + _class "spec-state-tabs" + _data("signals", $"{{ {signal}: '{first.id}' }}") + div { + _role "tablist" + _ariaLabel label + _class "spec-state-tab-list" + for index, state in List.indexed states do + let previous = states[(index + states.Length - 1) % states.Length] + let next = states[(index + 1) % states.Length] + button { + _id (tabId state.id) + _type "button" + _role "tab" + _ariaControls (panelId state.id) + _data("attr:aria-selected", $"${signal} == '{state.id}' ? 'true' : 'false'") + _data("attr:data-selected", $"${signal} == '{state.id}' ? 'true' : null") + _data("attr:tabindex", $"${signal} == '{state.id}' ? 0 : -1") + _data("on:click", $"${signal} = '{state.id}'") + _data("on:keydown", $"evt.key == 'ArrowLeft' && (evt.preventDefault(), {focusState previous.id}); evt.key == 'ArrowRight' && (evt.preventDefault(), {focusState next.id}); evt.key == 'Home' && (evt.preventDefault(), {firstFocus}); evt.key == 'End' && (evt.preventDefault(), {lastFocus})") + _class "spec-state-tab" + state.label + } + } + for index, state in List.indexed states do + div { + _id (panelId state.id) + _role "tabpanel" + _attr("aria-labelledby", tabId state.id) + _data("show", $"${signal} == '{state.id}'") + if index > 0 then _style "display:none" + state.content + } + } + +module Example = + let private render codeFirst (id:string) (label:string) (language:string) (source:string) (preview:HtmlElement) = + if String.IsNullOrWhiteSpace id then invalidArg (nameof id) "An example ID is required." + if String.IsNullOrWhiteSpace label then invalidArg (nameof label) "An example label is required." + + let token = + id + |> Seq.map (fun character -> if Char.IsLetterOrDigit character then character else '_') + |> Seq.toArray + |> String + + let signal = $"{token}Example" + let initial = if codeFirst then "code" else "preview" + let normalized = if String.IsNullOrWhiteSpace language then "text" else language.Trim().ToLowerInvariant() + let prismLanguage = if normalized = "fs" then "fsharp" else normalized + let tabId name = $"{id}-tab-{name}" + let panelId name = $"{id}-panel-{name}" + let select name = $"${signal} = '{name}'" + let activate name = + if name = "code" then $", queueMicrotask(() => window.renderCode?.(document.getElementById('{panelId name}')))" + else $", queueMicrotask(() => window.renderDocsPreview?.(document.getElementById('{panelId name}')))" + let focus name = $"{select name}, document.getElementById('{tabId name}').focus(){activate name}" + let focusPreview = focus "preview" + let focusCode = focus "code" + + section { + _class "spec-example" + _data("docs-example", "true") + _data("signals", $"{{ {signal}: '{initial}' }}") + div { + _class "spec-example-toolbar" + div { _class "spec-example-title"; label } + div { + _role "tablist" + _ariaLabel label + _class "spec-example-tabs" + for name, tabLabel, next in [ "code", "Code", "preview"; "preview", "Preview", "code" ] do + let isSelected = name = initial + let dynamicAction = activate name + button { + _id (tabId name) + _type "button" + _role "tab" + _ariaControls (panelId name) + _ariaSelected isSelected + _data("attr:aria-selected", $"${signal} == '{name}' ? 'true' : 'false'") + _data("attr:data-selected", $"${signal} == '{name}' ? 'true' : null") + _data("attr:tabindex", $"${signal} == '{name}' ? 0 : -1") + _data("on:click", $"{select name}{dynamicAction}") + _data("on:keydown", $"(evt.key == 'ArrowLeft' || evt.key == 'ArrowRight') && (evt.preventDefault(), {focus next}); evt.key == 'Home' && (evt.preventDefault(), {focusCode}); evt.key == 'End' && (evt.preventDefault(), {focusPreview})") + _class "spec-example-tab" + tabLabel + } + } + } + div { + _id (panelId "preview") + _role "tabpanel" + _attr("aria-labelledby", tabId "preview") + _class "spec-example-preview" + _data("show", $"${signal} == 'preview'") + if codeFirst then _style "display:none" + preview + } + pre { + _id (panelId "code") + _role "tabpanel" + _attr("aria-labelledby", tabId "code") + _tabindex 0 + _class $"spec-example-code spec-code language-{prismLanguage}" + _data("show", $"${signal} == 'code'") + if not codeFirst then _style "display:none" + code { _class $"language-{prismLanguage}"; source } + } + } + + let previewFirst id label language source preview = render false id label language source preview + let codeFirst id label language source preview = render true id label language source preview diff --git a/sln/src/FSharp.ViewEngine/Core.fs b/sln/src/FSharp.ViewEngine/Core.fs index 1321367..ed3d93a 100644 --- a/sln/src/FSharp.ViewEngine/Core.fs +++ b/sln/src/FSharp.ViewEngine/Core.fs @@ -3,13 +3,17 @@ namespace FSharp.ViewEngine open System open System.Buffers open System.Runtime.CompilerServices +open System.IO open System.Text +/// An HTML attribute name and optional encoded value. ValueNone renders a valueless boolean attribute. [] type HtmlAttribute = { Name: string; Value: string voption } +/// Base type for renderable HTML nodes. [] type HtmlElement() = + /// Appends this node's serialized HTML to the supplied StringBuilder. abstract Render: StringBuilder -> unit module private HtmlEncoding = @@ -92,6 +96,21 @@ type NoopElement() = inherit HtmlElement() override _.Render(_) = () +/// A renderable sequence of sibling nodes. +type FragmentElement(elements:HtmlElement seq) = + inherit HtmlElement() + let elements = elements |> Seq.toArray + override _.Render(sb) = + for element in elements do element.Render(sb) + +/// A validated HTML comment node. +type CommentElement(value:string) = + inherit HtmlElement() + do + if isNull value || value.Contains("--") || value.EndsWith("-", StringComparison.Ordinal) then + invalidArg (nameof value) "HTML comments cannot be null, contain '--', or end with '-'." + override _.Render(sb) = sb.Append("") |> ignore + module private RenderHelpers = let inline renderAttr (sb: StringBuilder) (a: HtmlAttribute) = match a.Value with @@ -231,6 +250,7 @@ type private StringBuilderPool = type TagBuilderCode = RegularElement -> unit type VoidBuilderCode = VoidElement -> unit +/// Computation-expression builder for a regular element that accepts attributes, text, and child elements. type TagBuilder(tag: string) = [] member inline _.Yield(el: HtmlElement) : TagBuilderCode = @@ -271,6 +291,7 @@ type TagBuilder(tag: string) = el :> HtmlElement +/// Computation-expression builder for a void element that accepts attributes and renders no closing tag. type VoidBuilder(tag: string) = inherit VoidElement(tag) @@ -304,8 +325,25 @@ type VoidBuilder(tag: string) = f el el :> HtmlElement +/// Functions for serializing completed element trees. [] module Render = + /// Appends an element directly to an existing StringBuilder. + let writeToStringBuilder (builder:StringBuilder) (element:HtmlElement) = + if isNull builder then nullArg (nameof builder) + element.Render(builder) + + /// Writes an element to a TextWriter without closing the writer. + let writeToTextWriter (writer:TextWriter) (element:HtmlElement) = + if isNull writer then nullArg (nameof writer) + let builder = StringBuilderPool.Rent() + try + element.Render(builder) + writer.Write(builder.ToString()) + finally + StringBuilderPool.Return(builder) + + /// Serializes an element without adding a document type declaration. let toString (element: HtmlElement) = let sb = StringBuilderPool.Rent() try @@ -314,6 +352,11 @@ module Render = finally StringBuilderPool.Return(sb) + /// Serializes an element as UTF-8 bytes without a byte-order mark. + let toUtf8Bytes (element:HtmlElement) : byte array = + element |> toString |> Encoding.UTF8.GetBytes + + /// Serializes a complete HTML document and prepends the HTML5 doctype. let toHtmlDocString (view: #HtmlElement) = let sb = StringBuilderPool.Rent() sb.AppendLine("") |> ignore diff --git a/sln/src/FSharp.ViewEngine/Html.fs b/sln/src/FSharp.ViewEngine/Html.fs index 6821769..84b5c74 100644 --- a/sln/src/FSharp.ViewEngine/Html.fs +++ b/sln/src/FSharp.ViewEngine/Html.fs @@ -4,13 +4,25 @@ open System open System.Globalization open JetBrains.Annotations +/// Standard HTML element builders, attributes, and explicit custom-markup escape hatches. type Html = + /// An ignored attribute value, useful for conditional attribute expressions. static member val EmptyAttr = { Name = null; Value = ValueNone } with get + /// A renderable node that emits no output. static member val empty = NoopElement() :> HtmlElement with get + /// Emits trusted HTML without encoding. Never pass user-controlled content. static member raw ([]v: string) = RawElement(v) :> HtmlElement + /// Emits trusted JavaScript without encoding. Never pass user-controlled content. static member js ([]v: string) = RawElement(v) :> HtmlElement + /// Creates an HTML-encoded text node. static member text (v: string) = TextElement(v) :> HtmlElement + /// Creates a renderable sequence of sibling nodes. + static member fragment (elements:HtmlElement seq) = FragmentElement(elements) :> HtmlElement + /// Creates a validated HTML comment. Values containing `--` or ending in `-` are rejected. + static member comment (value:string) = CommentElement(value) :> HtmlElement + /// Creates a regular custom element. The developer-controlled name is emitted without validation. static member el (name: string) = TagBuilder(name) + /// Creates a void custom element. The developer-controlled name is emitted without validation. static member elVoid (name: string) = VoidBuilder(name) static member val html = TagBuilder("html") with get static member val head = TagBuilder("head") with get diff --git a/sln/src/Tests/CoreTests.fs b/sln/src/Tests/CoreTests.fs index 3d59260..7ed0712 100644 --- a/sln/src/Tests/CoreTests.fs +++ b/sln/src/Tests/CoreTests.fs @@ -2,6 +2,7 @@ module CoreTests open FSharp.ViewEngine open System.Text +open System.IO open System.Globalization open System.Web open System.Text.RegularExpressions @@ -173,6 +174,22 @@ let tests = Expect.equal textResult "
      <b>hi</b>
      " "text encodes" } + test "Fragments, comments, and additional render targets preserve serialization" { + let nodes = Html.fragment [ span { "One" }; Html.comment "safe note"; span { "Two" } ] + let expected = "OneTwo" + Expect.equal (Render.toString nodes) expected "fragment and comment" + + let builder = StringBuilder("prefix:") + Render.writeToStringBuilder builder nodes + Expect.equal (builder.ToString()) ("prefix:" + expected) "StringBuilder target" + + use writer = new StringWriter() + Render.writeToTextWriter writer nodes + Expect.equal (writer.ToString()) expected "TextWriter target" + Expect.equal (Render.toUtf8Bytes nodes |> Encoding.UTF8.GetString) expected "UTF-8 target" + Expect.throwsT (fun () -> Html.comment "invalid -- comment" |> ignore) "comments reject invalid double hyphens" + } + test "Html.empty (NoopElement) renders nothing" { let actual = div { empty } |> Render.toString Expect.equal actual "
      " "empty renders nothing" diff --git a/sln/src/Tests/DocsTests.fs b/sln/src/Tests/DocsTests.fs new file mode 100644 index 0000000..2ede57e --- /dev/null +++ b/sln/src/Tests/DocsTests.fs @@ -0,0 +1,446 @@ +module DocsTests + +open Expecto +open FSharp.ViewEngine +open FSharp.ViewEngine.Docs +open type Html + +type Destination = + | Home + | Guide + | Detail + | Reference + +let private issueCodes (issues:ValidationIssue list) = issues |> List.map _.code |> Set.ofList + +let private sequenceDiagram () = + let person = SequenceDiagram.participant "Person" "Person" + let app = SequenceDiagram.participant "App" "Application" + SequenceDiagram.sequence [ person; app ] [ SequenceDiagram.call person app "Use product" ] + +let private navigation = + [ docsNavPage "home" "Overview" "/" Home + docsNavGroupWithBreadcrumb "guides" "Guides" "/guides" true [ + docsNavPage "guide" "Overview" "/guides" Guide + docsNavPage "detail" "Detail" "/guides/detail" Detail ] + docsNavPage "reference" "API reference" "/reference" Reference ] + +let private site: DocsSite = + { name = "Example" + baseUrl = Some "https://docs.example.com" + description = Some "Example product documentation." + repository = Some(DocsRepository.github "https://github.com/example/docs") + brandMark = span { _ariaHidden "true"; "E" } + homeId = "home" + navigation = navigation + storageKey = "example-docs-navigation" + defaultColorMode = DocsColorMode.System + theme = DocsTheme.amber + assets = DocsAssets.defaults + search = [] } + +[] +let tests = + testList "Docs Tests" [ + test "Sequence diagrams render nested, validated Mermaid" { + let person = SequenceDiagram.participant "Person" "Person" + let app = SequenceDiagram.participant "App" "Application" + let api = SequenceDiagram.participant "Api" "HTTP API" + + let diagram = + SequenceDiagram.sequence + [ person; app; api ] + [ SequenceDiagram.call person app "Submit form" + SequenceDiagram.optional "Valid input" [ + SequenceDiagram.call app api "Create item" + SequenceDiagram.alternatives [ + SequenceDiagram.branch "Created" [ SequenceDiagram.reply api app "201 Created" ] + SequenceDiagram.branch "Rejected" [ SequenceDiagram.reply api app "422 Validation error" ] ] ] ] + + let rendered = SequenceDiagram.render diagram + Expect.stringStarts rendered "sequenceDiagram\n autonumber" "diagram header" + Expect.stringContains rendered "alt Created" "first alternative" + Expect.stringContains rendered "else Rejected" "remaining alternative" + Expect.stringContains rendered "Api-->>App: 422 Validation error" "reply" + } + + test "Sequence diagrams reject undeclared participants" { + let declared = SequenceDiagram.participant "Declared" "Declared" + let missing = SequenceDiagram.participant "Missing" "Missing" + + Expect.throwsT + (fun () -> + SequenceDiagram.sequence [ declared ] [ SequenceDiagram.call declared missing "Call" ] + |> ignore) + "all referenced participants must be declared" + } + + test "Targets encode query values and fragments" { + let target = + Target.create Detail + |> Target.withQuery "return to" "/items?status=open" + |> Target.withFragment "validation errors" + + let actual = Target.href (function Detail -> "/guides/detail" | _ -> "/") target + Expect.equal actual "/guides/detail?return%20to=%2Fitems%3Fstatus%3Dopen#validation%20errors" "target URL" + } + + test "Navigation builders support pages, groups, and optional breadcrumb links" { + let group = navigation[1] + Expect.isNone (NavNode.destination group) "groups have no typed page destination" + Expect.equal (NavNode.breadcrumbHref group) (Some "/guides") "breadcrumb destination is optional metadata" + + let breadcrumbs = Navigation.breadcrumbs navigation "home" "detail" + Expect.sequenceEqual + (breadcrumbs |> List.map (fun breadcrumb -> breadcrumb.label, breadcrumb.href)) + [ "Home", Some "/"; "Guides", Some "/guides"; "Detail", Some "/guides/detail" ] + "breadcrumbs use configured group destinations" + } + + test "Whole-site validation checks registered routes, reachability, aliases, pagers, and metadata" { + let guide = docsArticle "guide" "Guide" "Guide description" [] |> docsWithPager (docsPager None (Some(docsPageLink "Missing" "/missing"))) + let orphan = docsArticle "orphan" "Orphan" "" [] + let registry = [ docsRegisteredPage "/guide" [ "/start" ] guide; docsRegisteredPage "/orphan" [ "/guide" ] orphan ] + let issues = DocsRegistry.validate navigation registry + let codes = issueCodes issues + + Expect.isTrue (Set.contains "registry.missing-navigation-page" codes) "navigation pages must be registered" + Expect.isTrue (Set.contains "registry.unreachable-page" codes) "registered pages must be reachable" + Expect.isTrue (Set.contains "registry.alias-collision" codes) "aliases cannot collide with canonical routes" + Expect.isTrue (Set.contains "registry.invalid-pager-target" codes) "pager destinations must resolve" + Expect.isTrue (Set.contains "page.missing-description" codes) "pages need search and metadata descriptions" + } + + test "Navigation validation remains structural rather than prescribing hierarchy" { + let customNavigation = + [ docsNavPage "home" "Start" "/" Home + docsNavGroup "commands" "Commands" false [ + docsNavPage "run" "Run" "/commands/run" Guide ] ] + + Expect.isEmpty (Navigation.validate customNavigation) "groups do not require overview pages or breadcrumb links" + + let invalid = + [ docsNavPage "home" "Home" "/" Home + docsNavPage "home" "Duplicate" "/" Guide + docsNavGroup "empty" "Empty" false [] ] + + let codes = Navigation.validate invalid |> issueCodes + Expect.isTrue (Set.contains "navigation.duplicate-id" codes) "duplicate IDs" + Expect.isTrue (Set.contains "navigation.duplicate-href" codes) "duplicate hrefs" + Expect.isTrue (Set.contains "navigation.empty-group" codes) "empty groups" + } + + test "Rich inline content renders in paragraphs, lists, tables, and callouts" { + let richText = [ docsText "Read "; docsStrong [ docsText "carefully" ]; docsText " and "; docsLink "continue" "/next"; docsText " with "; docsInlineCode "docsArticle" ] + let page = + docsArticle "guide" "Guide" "Description" [ + docsSection "content" "Content" [ + docsRichParagraph richText + docsOrderedItems [ richText ] + docsRichBullets [ richText ] + docsRichTable [ [ docsText "Builder" ]; [ docsText "Purpose" ] ] [ [ [ docsInlineCode "docsArticle" ]; [ docsText "Guides" ] ] ] + docsRichCallout [ docsText "Note" ] richText ] ] + + let rendered = docsContent page |> Render.toString + Expect.stringContains rendered "carefully" "strong inline content" + Expect.stringContains rendered "href=\"/next\"" "inline link" + Expect.stringContains rendered "docsArticle" "inline code" + Expect.stringContains rendered "
        Builder" "rich table header" + Expect.stringContains rendered "class=\"spec-callout-label\">Note" "rich callout label" + } + + test "Heading adornments preserve the semantic page heading" { + let page = + docsArticle "home" "Home" "Description" [] + |> docsWithHeadingAdornment (img { _src "/logo.svg"; _alt "" }) + let rendered = docsContent page |> Render.toString + + Expect.stringContains rendered "src=\"/logo.svg\"" "adornment is rendered before the title" + Expect.equal (rendered.Split(" () + | _ -> failtest "articles should use a table of contents" + Expect.equal reference.layout DocsLayout.Reference "reference layout" + Expect.equal canvas.layout Canvas "canvas layout" + Expect.equal canvas.heading Visible "general canvases retain a visible heading" + Expect.equal hiddenCanvas.heading VisuallyHidden "consumers may opt into a visually hidden heading" + Expect.isEmpty (DocsPage.validate reference) "arbitrary valid sections pass structural validation" + } + + test "Article pages support explicit previous and next navigation" { + let pager = + docsPager + (Some(docsPageLink "Introduction" "/")) + (Some(docsPageLink "Usage" "/usage")) + + let page = + docsArticle "guide" "Guide" "Description" [] + |> docsWithPager pager + + let rendered = docsDocument site page |> Render.toString + Expect.stringContains rendered "aria-label=\"Page navigation\"" "pager landmark" + Expect.stringContains rendered "rel=\"prev\" href=\"/\"" "previous destination" + Expect.stringContains rendered "rel=\"next\" href=\"/usage\"" "next destination" + Expect.stringContains rendered "Previous" "previous direction" + Expect.stringContains rendered ">Introduction" "previous page title" + Expect.stringContains rendered "Next" "next direction" + Expect.stringContains rendered ">Usage" "next page title" + Expect.stringContains rendered "window.fsharpDocsNavigation.begin()" "pager uses Docs navigation lifecycle" + } + + test "Search indexes include page titles, headings, descriptions, and consumer keywords" { + let page = docsArticle "guide" "Build a view" "Compose typed HTML." [ docsSection "render" "Render output" [] ] + let entry = docsSearchEntry "/guide" page [ "serialization" ] + let index = DocsSearch.index [ entry ] + let rendered = docsSearchDialog index |> Render.toString + + Expect.sequenceEqual index[0].keywords [ "serialization" ] "consumer keywords" + Expect.stringContains rendered "aria-label=\"Search documentation\"" "search dialog label" + Expect.stringContains rendered "data-docs-search-entry" "search result metadata" + Expect.stringContains rendered "href=\"/guide#render\"" "heading deep link" + Expect.stringContains rendered "Ctrl+K" "keyboard shortcut hint" + } + + test "Page metadata controls browser, search, and social metadata" { + let page = + docsArticle "guide" "Guide" "A focused guide description." [] + |> docsWithMetadata { + DocsPageMetadata.defaults with + browserTitle = Some "Guide · Example" + canonicalUrl = Some "https://docs.example.com/canonical-guide" + noIndex = true + socialImage = Some "https://docs.example.com/guide.png" + version = Some "2026.8" + deprecated = true + lastUpdated = Some "2026-08-12" + editUrl = Some "https://github.com/example/docs/edit/main/guide.fs" } + + let rendered = docsDocument site page |> Render.toString + Expect.stringContains rendered "Guide · Example" "browser title" + Expect.stringContains rendered "name=\"description\" content=\"A focused guide description.\"" "page description" + Expect.stringContains rendered "rel=\"canonical\" href=\"https://docs.example.com/canonical-guide\"" "canonical override" + Expect.stringContains rendered "name=\"robots\" content=\"noindex\"" "robots metadata" + Expect.stringContains rendered "property=\"og:url\" content=\"https://docs.example.com/canonical-guide\"" "Open Graph canonical URL" + Expect.stringContains rendered "property=\"og:type\" content=\"website\"" "Open Graph type" + Expect.stringContains rendered "property=\"og:site_name\" content=\"Example\"" "Open Graph site name" + Expect.stringContains rendered "property=\"og:image\" content=\"https://docs.example.com/guide.png\"" "social image" + Expect.stringContains rendered "property=\"og:image:alt\" content=\"Guide\"" "social image alternative" + Expect.stringContains rendered "data-docs-version=\"2026.8\"" "version metadata" + Expect.stringContains rendered "data-docs-deprecated=\"true\"" "deprecation metadata" + Expect.stringContains rendered "datetime=\"2026-08-12\"" "last-updated metadata" + Expect.stringContains rendered "href=\"https://github.com/example/docs/edit/main/guide.fs\"" "edit source" + } + + test "Document builders render accessible navigation and arbitrary content" { + let page = + docsCanvasWithHiddenHeading "detail" "Detail" "A customizable page." [ + docsSection "diagram" "Diagram" [ docsSequence (sequenceDiagram ()) ] + docsSection "custom" "Custom" [ docsCustom (div { _data("example", "true"); "Product content" }) ] ] + + let rendered = docsDocument site page |> Render.toString + Expect.stringContains rendered "

    Y8u4>ELMS3}A&K-?JUpHtF1T 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